>  기사  >  백엔드 개발  >  PHP 프로그래밍 팁: 신뢰성이 높은 Modbus TCP 통신 구현

PHP 프로그래밍 팁: 신뢰성이 높은 Modbus TCP 통신 구현

WBOY
WBOY원래의
2023-07-18 10:14:021452검색

PHP 프로그래밍 팁: 신뢰성이 높은 Modbus TCP 통신 구현

요약: Modbus TCP는 산업 자동화 시스템에서 장치 간 데이터 상호 작용을 구현하는 데 일반적으로 사용되는 산업용 통신 프로토콜입니다. 이 기사에서는 높은 신뢰성의 데이터 전송을 달성하기 위해 PHP 프로그래밍 언어를 사용하는 Modbus TCP 통신에 대한 몇 가지 기술을 소개합니다. 특히 여기에는 PHP Modbus 확장 라이브러리 설치 및 사용, TCP 연결 설정, Modbus 요청 작성 및 응답 구문 분석에 대한 코드 예제가 포함되어 있습니다.

키워드: PHP 프로그래밍, Modbus TCP, 신뢰성, 데이터 전송, 코드 예제

소개:

Modbus TCP(TCP/IP 기반 Modbus 프로토콜)는 산업 자동화 분야에서 널리 사용되는 통신 프로토콜입니다. 일반적으로 PLC(프로그래머블 로직 컨트롤러), 센서, 모터 드라이버 및 기타 장치 간의 데이터 교환에 사용됩니다. 실제로 효율적이고 안정적인 데이터 전송이 필요한 산업용 애플리케이션의 경우 Modbus TCP 통신의 신뢰성을 보장하는 것이 매우 중요합니다. 이 기사에서는 독자가 높은 신뢰성의 Modbus TCP 통신을 달성하는 데 도움이 되는 몇 가지 PHP 프로그래밍 기술을 소개합니다.

  1. PHP Modbus 확장 라이브러리를 이용한 설치 및 사용

먼저 PHP Modbus 확장 라이브러리를 설치해야 합니다. 이 확장 라이브러리는 Modbus 장치와의 통신을 용이하게 하는 일련의 기능을 제공합니다. 다음 단계를 통해 설치할 수 있습니다.

1단계: PHP Modbus 확장 라이브러리 소스 코드를 다운로드합니다.
2단계: 소스 코드의 압축을 풀고 압축이 풀린 디렉터리로 들어갑니다.
3단계: 다음 명령을 실행하여 확장 라이브러리를 컴파일합니다:
$ phpize
$ ./configure
$ make
$ make install

설치가 완료된 후 php.ini 파일에 다음 줄을 추가할 수 있습니다. 확장 라이브러리 활성화:
extension= modbus.so

PHP Modbus 확장 라이브러리를 사용하는 방법은 다음과 같습니다.

// 建立TCP连接
$tcp = modbus_tcp_connect('192.168.0.1', 502);

// 编写Modbus请求
$request = modbus_write_multiple_registers(1, 100, array(0x01, 0x02, 0x03));

// 发送请求并接收响应
$response = modbus_send_raw_request($tcp, $request);

// 解析响应
$data = modbus_get_response_data($tcp, $response);
  1. TCP 연결 설정

Modbus TCP 통신을 수행하기 전에 먼저 Modbus 장치와의 TCP 연결. PHP의 소켓 기능을 사용하여 연결을 설정할 수 있습니다. 구체적인 예는 다음과 같습니다.

// 建立TCP连接
$ip = '192.168.0.1';
$port = 502;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("Socket创建失败: " . socket_strerror(socket_last_error()));
}

$result = socket_connect($socket, $ip, $port);
if ($result === false) {
    die("Socket连接失败: " . socket_strerror(socket_last_error($socket)));
}

// 连接建立成功,进行后续操作
// ...
  1. Modbus 요청 작성 및 응답 구문 분석을 위한 코드 예

일반적으로 Modbus 요청은 함수 코드, 시작 주소 및 데이터로 구성됩니다. 다음은 Modbus 다중 레지스터 요청 작성 및 응답 구문 분석을 위한 샘플 코드입니다.

// 编写Modbus请求:写多个寄存器
$slave_address = 1;
$start_address = 100;
$data = array(0x01, 0x02, 0x03);

$request = pack('CCCC', $slave_address, 0x10, ($start_address >> 8) & 0xFF, $start_address & 0xFF);
$request .= pack('n', count($data) * 2);
foreach ($data as $value) {
    $request .= pack('n', $value);
}

// 发送请求并接收响应
socket_write($socket, $request, strlen($request));
$response = socket_read($socket, 1024);

// 解析响应
if (strlen($response) <= 0) {
    die("未接收到响应");
}

$raw_data = substr($response, 6); // 去除响应头部
$data_length = ord($response[4]);

$data = array();
for ($i = 0; $i < $data_length / 2; $i++) {
    $data[] = ord($raw_data[$i * 2]) << 8 | ord($raw_data[$i * 2 + 1]);
}

// 打印解析结果
print_r($data);

결론:

이 기사에서는 PHP Modbus 확장 라이브러리 설치 사용을 포함하여 PHP 프로그래밍 언어를 사용하여 높은 신뢰성의 Modbus TCP 통신을 달성하는 기술을 소개합니다. TCP 연결 사용, 설정, Modbus 요청 작성 및 응답 구문 분석에 대한 코드 예제. 이 기사를 연구함으로써 독자는 PHP 프로그래밍에서 Modbus TCP 통신과 관련된 지식과 기술을 더 잘 익힐 수 있으며 이를 통해 산업 자동화 시스템의 데이터 전송 효율성과 안정성을 향상시킬 수 있습니다.

참조:

  1. PHP Modbus 확장 라이브러리 공식 문서
  2. PHP 공식 문서: 소켓 기능
  3. Modbus TCP 프로토콜 사양

위 내용은 PHP 프로그래밍 팁: 신뢰성이 높은 Modbus TCP 통신 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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