Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Programmiertipps: Implementierung einer hochzuverlässigen Modbus TCP-Kommunikation

PHP-Programmiertipps: Implementierung einer hochzuverlässigen Modbus TCP-Kommunikation

WBOY
WBOYOriginal
2023-07-18 10:14:021454Durchsuche

PHP-Programmiertipps: Implementierung einer hochzuverlässigen Modbus-TCP-Kommunikation

Zusammenfassung: Modbus TCP ist ein häufig verwendetes industrielles Kommunikationsprotokoll, das zur Implementierung der Dateninteraktion zwischen Geräten in industriellen Automatisierungssystemen verwendet wird. In diesem Artikel werden einige Techniken für die Modbus-TCP-Kommunikation mithilfe der Programmiersprache PHP vorgestellt, um eine hochzuverlässige Datenübertragung zu erreichen. Insbesondere enthält es Codebeispiele für die Installation und Verwendung der PHP-Modbus-Erweiterungsbibliothek, den Aufbau von TCP-Verbindungen, das Schreiben von Modbus-Anfragen und das Parsen von Antworten.

Schlüsselwörter: PHP-Programmierung, Modbus TCP, Zuverlässigkeit, Datenübertragung, Codebeispiele

Einführung:

Modbus TCP (Modbus-Protokoll basierend auf TCP/IP) ist ein Kommunikationsprotokoll, das im Bereich der industriellen Automatisierung weit verbreitet ist. Es wird häufig für den Datenaustausch zwischen SPS (speicherprogrammierbarer Steuerung), Sensoren, Motortreibern und anderen Geräten verwendet. In der Praxis ist es sehr wichtig, die Zuverlässigkeit der Modbus TCP-Kommunikation sicherzustellen, insbesondere für industrielle Anwendungen, die eine effiziente und stabile Datenübertragung erfordern. In diesem Artikel werden einige PHP-Programmiertechniken vorgestellt, die den Lesern helfen sollen, eine hochzuverlässige Modbus-TCP-Kommunikation zu erreichen.

  1. Installation und Verwendung mit der PHP-Modbus-Erweiterungsbibliothek

Zuerst müssen wir die PHP-Modbus-Erweiterungsbibliothek installieren. Diese Erweiterungsbibliothek bietet eine Reihe von Funktionen zur Erleichterung der Kommunikation mit Modbus-Geräten. Es kann durch die folgenden Schritte installiert werden:

Schritt 1: Laden Sie den Quellcode der PHP-Modbus-Erweiterungsbibliothek herunter.
Schritt 2: Entpacken Sie den Quellcode und geben Sie das entpackte Verzeichnis ein.
Schritt 3: Führen Sie den folgenden Befehl aus, um die Erweiterungsbibliothek zu kompilieren:
$ phpize
$ ./configure
$ make
$ make install

Nachdem die Installation abgeschlossen ist, können Sie der Datei php.ini die folgende Zeile hinzufügen Aktivieren Sie die Erweiterungsbibliothek:
extension= modbus.so

Die Methode zur Verwendung der PHP-Modbus-Erweiterungsbibliothek ist wie folgt:

// 建立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. Einrichten einer TCP-Verbindung

Bevor Sie die Modbus-TCP-Kommunikation durchführen, müssen Sie zunächst eine herstellen TCP-Verbindung mit dem Modbus-Gerät. Sie können die Socket-Funktion von PHP verwenden, um eine Verbindung herzustellen. Die konkreten Beispiele sind wie folgt:

// 建立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. Codebeispiele zum Schreiben von Modbus-Anfragen und Parsing-Antworten

Im Allgemeinen bestehen Modbus-Anfragen aus Funktionscode, Startadresse und Daten. Das Folgende ist ein Beispielcode zum Schreiben von Modbus-Mehrfachregisteranforderungen und Parsing-Antworten:

// 编写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);

Fazit:

In diesem Artikel werden die Techniken zur Verwendung der PHP-Programmiersprache vorgestellt, um eine hochzuverlässige Modbus-TCP-Kommunikation zu erreichen, einschließlich der Verwendung der Installation der PHP-Modbus-Erweiterungsbibliothek und Codebeispiele für die Verwendung, den Aufbau einer TCP-Verbindung, das Schreiben von Modbus-Anfragen und das Parsen von Antworten. Durch das Studium dieses Artikels können sich die Leser die Kenntnisse und Fähigkeiten im Zusammenhang mit der Modbus-TCP-Kommunikation in der PHP-Programmierung besser aneignen und so die Datenübertragungseffizienz und Stabilität industrieller Automatisierungssysteme verbessern.

Referenz:

  1. Offizielle Dokumentation der PHP-Modbus-Erweiterungsbibliothek
  2. Offizielle PHP-Dokumentation: Socket-Funktion
  3. Modbus TCP-Protokollspezifikation

Das obige ist der detaillierte Inhalt vonPHP-Programmiertipps: Implementierung einer hochzuverlässigen Modbus TCP-Kommunikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn