>백엔드 개발 >PHP 튜토리얼 >PHP를 통해 Modbus TCP 데이터 읽기 및 쓰기를 구현하는 방법

PHP를 통해 Modbus TCP 데이터 읽기 및 쓰기를 구현하는 방법

WBOY
WBOY원래의
2023-07-17 14:48:141491검색

PHP를 통해 Modbus TCP 데이터 읽기 및 쓰기를 구현하는 방법

Modbus는 산업 현장에서 장치 간 통신에 일반적으로 사용되는 통신 프로토콜입니다. Modbus TCP는 TCP/IP 프로토콜을 사용하여 네트워크에서 통신하는 Modbus 프로토콜의 변형입니다. 이번 글에서는 PHP를 통해 Modbus TCP 데이터를 읽고 쓰는 방법을 소개하겠습니다.

  1. Modbus PHP 확장 설치
    PHP를 사용하여 Modbus TCP 통신을 구현하기 전에 Modbus PHP 확장을 설치해야 합니다. 일반적으로 사용되는 확장은 phpmodbus입니다. https://github.com/angeloc/phpmodbus에서 코드를 다운로드하여 PHP 프로젝트에 복사할 수 있습니다.
  2. Modbus TCP 연결 설정
    phpmodbus 확장을 사용하면 Modbus TCP 연결 설정이 매우 간단합니다. 먼저 ModbusMaster 개체를 생성하고 Modbus 서버의 IP 주소와 포트 번호를 지정해야 합니다. 예는 다음과 같습니다:
require_once('modbus/ModbusMaster.php');

$modbus = new ModbusMaster("192.168.1.1", "TCP");
  1. Modbus 데이터 읽기
    Modbus 프로토콜은 홀딩 레지스터(Holding Register), 입력 레지스터(Input Registers), 코일(Coil) 등을 읽는 등 다양한 데이터 읽기 방법을 지원합니다. ModbusMaster 개체의 readMultipleRegisters() 메서드를 사용하여 보유 레지스터의 데이터를 읽을 수 있습니다. 예는 다음과 같습니다:
$startAddress = 0;
$length = 10;

$data = $modbus->readMultipleRegisters(1, $startAddress, $length);

for ($i = 0; $i < $length; $i++) {
    echo "寄存器 " . ($startAddress + $i) . " 的值: " . $data[$i] . "
";
}
  1. Write Modbus data
    Modbus 서버에 데이터를 쓰려면 ModbusMaster 개체의 writeSingleRegister() 또는 writeMultipleRegisters() 메서드를 사용할 수 있습니다. 예는 다음과 같습니다:
$address = 1;
$value = 123;

$modbus->writeSingleRegister($address, $value);

echo "写入成功
";
  1. 오류 처리
    실제 응용에서는 Modbus 통신에 대한 오류 처리를 수행해야 합니다. ModbusMaster 개체의 각 메서드는 통신 성공 여부를 나타내는 부울 값을 반환합니다. 통신이 실패하면 getError() 메서드를 사용하여 오류 정보를 얻을 수 있습니다. 예는 다음과 같습니다:
if (!$modbus->writeSingleRegister($address, $value)) {
    echo "写入失败:" . $modbus->getError() . "
";
}

요약하자면, PHP를 사용하면 phpmodbus 확장을 사용하여 Modbus TCP 데이터를 읽고 쓸 수 있습니다. ModbusMaster 개체를 설정하고 적절한 방법을 선택하면 Modbus 통신을 쉽게 수행할 수 있습니다. 오류 처리에 주의를 기울이면 프로그램의 안정성과 신뢰성이 향상될 수 있습니다.

이 문서에서는 PHP에서 Modbus TCP를 구현하는 기본 사항만 제공하지만 더 복잡한 Modbus 애플리케이션을 더 배우고 개발할 수 있는 좋은 시작점을 제공합니다. 계속해서 실제로 탐색하고 학습하며 Modbus의 잠재력을 최대한 발휘할 수 있기를 바랍니다!

위 내용은 PHP를 통해 Modbus TCP 데이터 읽기 및 쓰기를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.