PHP를 통해 Modbus TCP의 일괄 읽기 및 쓰기를 구현하는 방법
1. Modbus TCP 소개
Modbus TCP는 TCP/IP 프로토콜을 기반으로 하는 산업용 통신 프로토콜로 산업 제어 분야에서 장비 통신에 흔히 사용됩니다. Modbus TCP 프로토콜을 사용하면 장치 간 데이터 읽기 및 쓰기 작업이 가능합니다. 이 기사에서는 PHP 언어를 사용하여 Modbus TCP의 일괄 읽기 및 쓰기를 구현하고 해당 코드 예제를 첨부하는 방법을 소개합니다.
2. 환경 준비
PHP 코드 작성을 시작하기 전에 해당 PHP 확장 프로그램과 환경을 설치해야 합니다. PHP 및 Modbus TCP 관련 확장이 서버에 설치되어 있는지 확인하십시오. 설치가 완료되면 phpinfo() 함수를 사용하여 PHP가 정상적으로 실행되고 있는지, Modbus TCP 확장이 로드되었는지 확인할 수 있습니다.
3. Modbus TCP 연결 및 통신
PHP에서는 modbus_new_tcp() 함수를 사용하여 Modbus TCP 연결을 만들 수 있습니다. 이 함수는 두 개의 매개변수를 허용합니다. 첫 번째 매개변수는 Modbus 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개의 레지스터의 데이터를 읽고 그 결과를 출력할 수 있습니다.
장치에 써야 하는 경우 modbus_write_single_register() 함수를 사용할 수 있습니다. 이 함수는 Modbus TCP 연결, 슬레이브 주소, 레지스터 주소 및 쓸 데이터의 네 가지 매개 변수를 허용합니다. 다음은 단일 레지스터에 쓰기 위한 샘플 코드입니다.
$success = modbus_write_single_register($modbus, 1, 0, 100); if (!$success) { die('Failed to write single register'); }
위 코드를 사용하면 슬레이브 주소가 1인 장치의 레지스터 0에 데이터 100을 쓸 수 있습니다.
4. 일괄 읽기 및 쓰기
실제 프로젝트에서는 동시에 여러 장치에서 데이터를 읽고 써야 할 수도 있습니다. modbus_read_input_registers_batch() 함수와 modbus_write_single_register_batch() 함수를 사용하여 일괄 작업을 구현할 수 있습니다.
modbus_read_input_registers_batch() 함수는 Modbus TCP 연결, 장치 주소 및 레지스터 주소 배열이라는 세 가지 매개 변수를 허용합니다. 다음은 입력 레지스터 일괄 읽기를 위한 샘플 코드입니다.
$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'); }
위 코드를 사용하면 장치 그룹의 레지스터를 동시에 읽고 쓸 수 있습니다.
5. 요약
위의 소개와 샘플 코드를 통해, Modbus TCP의 일괄 읽기 및 쓰기를 PHP 언어로 구현하는 것이 비교적 간단하다는 것을 알 수 있습니다. 해당 환경을 준비하고 Modbus TCP와 관련된 PHP 확장 기능을 사용하면 기기 간 통신 및 데이터 운용을 쉽게 구현할 수 있습니다.
위 내용은 PHP를 통해 Modbus TCP의 일괄 읽기 및 쓰기를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!