PHP를 통해 Modbus TCP의 일괄 읽기 및 쓰기를 구현하는 방법

王林
풀어 주다: 2023-07-17 15:56:01
원래의
1828명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!