>백엔드 개발 >PHP 튜토리얼 >PHP 프로그래밍 아이디어: 효율적인 Modbus TCP 통신 애플리케이션 구축

PHP 프로그래밍 아이디어: 효율적인 Modbus TCP 통신 애플리케이션 구축

WBOY
WBOY원래의
2023-07-17 19:33:141328검색

PHP 프로그래밍 아이디어: 효율적인 Modbus TCP 통신 애플리케이션 구축

사물 인터넷의 급속한 발전으로 인해 점점 더 많은 장치가 TCP 통신을 통해 서버와 데이터를 교환해야 합니다. Modbus는 산업 자동화 분야에서 널리 사용되는 일반적으로 사용되는 통신 프로토콜입니다. 이 기사에서는 PHP 프로그래밍 언어를 사용하여 효율적인 Modbus TCP 통신 애플리케이션을 구축하는 방법을 소개하고 코드 예제를 제공합니다.

  1. 통신 방법 결정

Modbus TCP 통신 애플리케이션을 구축하기 전에 통신 방법을 결정해야 합니다. Modbus TCP는 PHP의 소켓 확장을 사용하여 구현하거나 phpmodbus와 같은 타사 라이브러리를 사용하여 개발 프로세스를 단순화할 수 있습니다. 여기서는 Modbus 프로토콜의 세부 사항을 캡슐화하고 사용하기 쉬운 API를 제공하는 phpmodbus 라이브러리를 사용하기로 선택했습니다.

  1. phpmodbus 라이브러리 설치

Composer를 사용하여 phpmodbus 라이브러리를 설치하는 것이 가장 쉬운 방법입니다. 명령줄 창을 열고 프로젝트 디렉터리를 입력한 후 다음 명령을 실행하여 phpmodbus 라이브러리를 설치합니다.

composer require phpmodbus/phpmodbus

Composer는 phpmodbus 라이브러리와 해당 종속 항목을 다운로드하고 설치합니다.

  1. Modbus TCP 장치 연결

먼저 Modbus TCP 연결을 생성해야 합니다. PHP에서는 ModbusMaster 클래스를 사용하여 이를 달성할 수 있습니다. 다음은 Modbus TCP 장치에 연결하기 위한 샘플 코드입니다.

require __DIR__ . '/vendor/autoload.php';

use PhpmodbusPhpmodbus;

$ip = '192.168.0.1'; // 设备的IP地址
$port = 502; // Modbus TCP的默认端口号

$modbus = new ModbusMaster($ip, $port);
  1. Read data

연결이 성공적으로 설정되면 ModbusMaster 클래스의 readMultipleRegisters 메서드를 사용하여 Modbus 장치의 레지스터 데이터를 읽을 수 있습니다. 다음은 레지스터 데이터를 보유하고 있는 Modbus 장치를 읽는 샘플 코드입니다.

$unitId = 0; // 设备的单元标识符
$startAddress = 0; // 开始地址
$numberOfRegisters = 10; // 读取寄存器的数量

$data = $modbus->readMultipleRegisters($unitId, $startAddress, $numberOfRegisters);
$values = Phpmodbus::byteArrayToRegisterArray($data);

위의 예에서 readMultipleRegisters 메소드는 장치의 장치 식별자, 시작 주소 및 레지스터 수를 매개변수로 받아들이고 바이트 배열을 반환합니다. Phpmodbus 라이브러리의 byteArrayToRegisterArray 메소드를 사용하여 바이트 배열을 레지스터 값 배열로 변환할 수 있습니다.

  1. 데이터 쓰기

Modbus 장치에 데이터를 써야 하는 경우 ModbusMaster 클래스의 writeMultipleRegisters 메서드를 사용할 수 있습니다. 다음은 레지스터를 보유하는 Modbus 장치에 데이터를 쓰는 샘플 코드입니다.

$data = [1, 2, 3, 4, 5]; // 要写入的数值数组
$startAddress = 0; // 开始地址
$unitId = 0; // 设备的单元标识符

$modbus->writeMultipleRegisters($unitId, $startAddress, $data);

위의 예에서 writeMultipleRegisters 메소드는 장치의 장치 식별자, 시작 주소 및 기록할 값 배열을 매개변수로 받아들입니다. . 데이터가 기록되는 배열의 길이는 기록되는 레지스터 수와 동일해야 합니다.

  1. 연결 종료

Modbus 장치와의 통신이 더 이상 필요하지 않은 경우 연결을 종료하여 리소스를 해제해야 합니다. ModbusMaster 클래스의 연결 해제 메소드를 사용하여 연결을 닫을 수 있습니다. 다음은 Modbus TCP 연결을 닫는 샘플 코드입니다.

$modbus->disconnect();

요약

이 기사에서는 PHP 프로그래밍 언어를 사용하여 효율적인 Modbus TCP 통신 애플리케이션을 구축하는 방법을 소개합니다. phpmodbus 라이브러리를 사용하면 Modbus 장치에 쉽게 연결하고 간단한 API를 사용하여 레지스터 데이터를 읽고 쓸 수 있습니다. 이 기사가 Modbus TCP 통신 애플리케이션을 구축하는 데 도움이 되기를 바랍니다.

참고: 위의 코드 예시는 참고용일 뿐입니다. 실제 애플리케이션에서는 특정 상황에 따라 일부 조정 및 확장이 필요할 수 있습니다.

위 내용은 PHP 프로그래밍 아이디어: 효율적인 Modbus TCP 통신 애플리케이션 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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