PHP를 통해 Modbus TCP 데이터 기록 및 분석을 구현하는 방법
Modbus는 산업 자동화 분야에서 널리 사용되는 통신 프로토콜입니다. Modbus TCP는 이더넷을 통해 전송하는 Modbus 프로토콜의 변형으로 더 높은 속도와 안정성을 제공합니다. 이 기사에서는 PHP 언어를 사용하여 Modbus TCP 데이터 기록 및 분석을 구현하는 방법을 소개합니다.
1. PHP Modbus 확장 설치
먼저 PHP Modbus 확장을 설치해야 합니다. 다음 명령으로 설치할 수 있습니다:
$ pecl install modbus
설치 후 php.ini 파일에 다음 줄을 추가합니다:
extension=modbus.so
PHP를 저장하고 다시 시작합니다.
2. Modbus 연결 설정
PHP Modbus 확장을 사용하면 Modbus 장치와 쉽게 연결할 수 있습니다. 먼저 ModbusMaster 클래스를 사용하여 Modbus 마스터를 생성해야 합니다.
require_once('ModbusMaster.php');
$ip = '192.168.1.100'; // Modbus 장치의 IP 주소
$port = 502; device
$ modbus = new ModbusMaster($ip, $port);
?>
3. Modbus 레지스터 값 읽기
다음으로 ModbusMaster 클래스의 readMultipleRegisters 메소드를 사용하여 값을 읽을 수 있습니다. Modbus 장치에 등록하십시오.
$slaveId = 1; // 슬레이브 주소
$startAddress = 0; // 시작 주소
$numberOfRegisters = 10; // 읽을 레지스터 수
$data = $modbus- > readMultipleRegisters($slaveId, $startAddress, $numberOfRegisters);
var_dump($data); //읽은 레지스터 값을 인쇄합니다
?>
4. Modbus 레지스터 값을 씁니다
ModbusMaster writeSingleRegister를 사용할 수도 있습니다. 클래스의 메소드는 Modbus 장치에 레지스터 값을 쓰는 데 사용됩니다.
$slaveId = 1; // 슬레이브 주소
$registerAddress = 0; // 등록 주소
$value = 123; // 쓸 값
$modbus->writeSingleRegister($ $registerAddress, $value);
?>
5. 데이터 기록 및 분석
위 단계를 통해 Modbus 장치와의 연결을 성공적으로 설정했으며 레지스터 값을 읽고 쓸 수 있습니다. 다음으로, PHP의 파일 작업 기능을 사용하여 데이터 기록 및 분석을 구현할 수 있습니다.
$file = 'data.txt'; // 데이터 기록 파일
// 파일의 기록 데이터 읽기
$historyData = [];
if (file_exists($file)) {
$historyData = file($file, FILE_IGNORE_NEW_LINES);
}
// 현재 시간을 가져와서 값을 등록합니다
$time = date('Y-m-d H:i:s');
$value = $data['response'];
// 현재 시간을 결합하고 레지스터의 값은 기록 데이터 끝에 추가됩니다
$historyData[] = $time . ',' . $value;
// 파일에 새 기록 데이터 쓰기
file_put_contents($file, implode(PHP_EOL , $historyData)) ;
//데이터 분석
$total = 0;
$count = count($historyData);
foreach($historyData를 $line으로) {
$parts = explode(',', $line); $total += $parts[1];
}
$average = $total / $ count;
echo '이력 데이터 기록이 완료되었습니다. '.PHP_EOL;
echo '총 과거 데이터 수:' . PHP_EOL;
echo '과거 데이터의 평균:' . $average
위 내용은 PHP를 통해 Modbus TCP 데이터 기록 및 분석을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!