Modbus TCP는 TCP/IP 프로토콜을 기반으로하는 산업 통신 프로토콜로, 산업 제어 분야, 특히 장치 간의 데이터 전송에서 널리 사용됩니다. Modbus TCP 프로토콜을 사용하면 장치 간의 실시간 데이터 읽기 및 쓰기를 실현할 수 있습니다. 이 기사는 PHP 언어를 사용하여 Modbus TCP의 배치 읽기 및 쓰기 작업을 구현하는 방법을 자세히 소개하고 관련 코드 예제를 첨부하여 개발자가 관련 기능을 신속하게 구현할 수 있도록 도와줍니다.
PHP 코드를 작성하기 전에 관련 PHP 확장 및 환경이 설치되어 있는지 확인해야합니다. 서버에 PHP가 설치되어 있고 Modbus TCP 프로토콜의 확장을 지원하십시오. 설치가 완료되면 PHP의 실행 상태와 phpinfo () 함수를 사용하여 관련 확장이로드되는지 여부를 확인할 수 있습니다.
php에서 modbus tcp 연결을 만드는 것은 일반적으로 modbus_new_tcp () 함수를 사용합니다. 이 기능에는 두 가지 매개 변수의 IP 주소와 Modbus TCP 서버의 포트 번호가 필요합니다. 연결 생성을위한 샘플 코드는 다음과 같습니다.
$modbus = modbus_new_tcp("192.168.1.10", 502);
if (!$modbus) {
die('Failed to create Modbus TCP connection');
}
연결을 성공적으로 생성 한 후에는 데이터 읽기에 modbus_read_input_registers () 함수를 사용할 수 있습니다. 이 기능에는 Modbus TCP 연결, 슬레이브 주소, 등록 주소 및 읽기 수의 네 가지 매개 변수가 필요합니다. 다음은 입력 레지스터를 읽는 예입니다.
$data = modbus_read_input_registers($modbus, 1, 0, 10);
if ($data === false) {
die('Failed to read input registers');
}
print_r($data);
위의 코드를 통해 장치 주소 1이있는 장치의 레지스터 0에서 시작하는 10 개의 레지스터 데이터를 읽을 수 있으며 결과는 출력 될 수 있습니다.
실제 애플리케이션에서는 여러 장치에 동시에 데이터를 읽거나 써야 할 수도 있습니다. 이를 위해 PHP는 배치 작업을 지원하는 modbus_Read_input_registers_batch () 함수 및 modbus_write_single_register_batch () 함수를 제공합니다. 다음은 입력 레지스터의 배치 읽기를위한 예제 코드입니다.
$addresses = [0, 1, 2, 3, 4];
$data = modbus_read_input_registers_batch($modbus, 1, $addresses);
if (!$data) {
die('Failed to read input registers batch');
}
print_r($data);
동시에, modbus_write_single_register_batch () 함수를 사용하여 레지스터를 작성하는 데 사용할 수 있습니다. MODBUS TCP 연결, 장치 주소 및 레지스터 주소 및 데이터를 포함하는 배열의 세 가지 매개 변수를 허용합니다. 다음은 배치 쓰기 예입니다.
$registersAndData = [
[0, 100],
[1, 200],
[2, 300],
[3, 400],
];
$success = modbus_write_single_register_batch($modbus, 1, $registersAndData);
if (!$success) {
die('Failed to write single register batch');
}
이 코드를 통해 여러 장치에서 동시에 읽기 및 작업을 동시에 작성하여 데이터 운영의 효율성을 크게 향상시킬 수 있습니다.
위의 소개 및 샘플 코드를 통해 PHP 언어를 통해 Modbus TCP의 배치 읽기 및 쓰기 작업을 구현하는 것이 매우 간단하고 효율적임을 알 수 있습니다. 관련 개발 환경을 준비하고 적절한 PHP 확장 기능을 사용하는 한 장치 간의 통신 및 데이터 운영이 성공적으로 달성 될 수 있습니다. 이 기사가 Modbus TCP 프로토콜을 더 잘 이해하고 사용하여 산업 제어 시스템의 데이터 처리 기능을 개선하는 데 도움이되기를 바랍니다.