Heim > Backend-Entwicklung > PHP-Tutorial > So implementieren Sie Batch-Lesen und Schreiben von Modbus TCP über PHP

So implementieren Sie Batch-Lesen und Schreiben von Modbus TCP über PHP

王林
Freigeben: 2023-07-17 15:56:01
Original
1894 Leute haben es durchsucht

So implementieren Sie das Batch-Lesen und Schreiben von Modbus TCP über PHP

1 Einführung in Modbus TCP
Modbus TCP ist ein industrielles Kommunikationsprotokoll, das auf dem TCP/IP-Protokoll basiert und häufig für die Gerätekommunikation im Bereich der industriellen Steuerung verwendet wird. Durch die Verwendung des Modbus TCP-Protokolls können Datenlese- und -schreibvorgänge zwischen Geräten durchgeführt werden. In diesem Artikel wird die Verwendung der PHP-Sprache zum Implementieren des Stapellesens und -schreibens von Modbus TCP vorgestellt und entsprechende Codebeispiele angehängt.

2. Umgebungsvorbereitung
Bevor Sie mit dem Schreiben von PHP-Code beginnen, müssen Sie die entsprechenden PHP-Erweiterungen und Umgebung installieren. Stellen Sie sicher, dass PHP- und Modbus TCP-bezogene Erweiterungen auf dem Server installiert sind. Nach Abschluss der Installation können Sie mit der Funktion phpinfo() prüfen, ob PHP normal läuft und ob die Modbus TCP-Erweiterung geladen ist.

3. Modbus TCP-Verbindung und Kommunikation
In PHP können Sie die Funktion modbus_new_tcp() verwenden, um eine Modbus TCP-Verbindung zu erstellen. Diese Funktion akzeptiert zwei Parameter: Der erste Parameter ist die IP-Adresse des Modbus TCP-Servers und der zweite Parameter ist die Portnummer des Modbus TCP-Servers. Das Folgende ist ein Beispielcode:

$modbus = modbus_new_tcp("192.168.1.10", 502);
if (!$modbus) {
    die('Failed to create Modbus TCP connection');
}
Nach dem Login kopieren

Nach erfolgreicher Erstellung können Sie die Funktion modbus_read_input_registers() zum Lesen von Daten verwenden, nämlich Modbus TCP-Verbindung, Slave-Adresse, Registeradresse und die Anzahl der Lesevorgänge. Das Folgende ist ein Beispielcode zum Lesen des Eingaberegisters:

$data = modbus_read_input_registers($modbus, 1, 0, 10);
if ($data === false) {
    die('Failed to read input registers');
}
print_r($data);
Nach dem Login kopieren

Mit dem obigen Code können Sie die Daten von 10 Registern beginnend mit Register 0 des Geräts mit Slave-Adresse 1 lesen und das Ergebnis ausgeben.

Wenn Sie auf das Gerät schreiben müssen, können Sie die Funktion modbus_write_single_register() verwenden. Diese Funktion akzeptiert vier Parameter, nämlich Modbus TCP-Verbindung, Slave-Adresse, Registeradresse und die zu schreibenden Daten. Das Folgende ist ein Beispielcode zum Schreiben in ein einzelnes Register:

$success = modbus_write_single_register($modbus, 1, 0, 100);
if (!$success) {
    die('Failed to write single register');
}
Nach dem Login kopieren

Mit dem obigen Code können die Daten 100 in Register 0 des Geräts mit der Slave-Adresse 1 geschrieben werden.

4. Batch-Lesen und Schreiben
In tatsächlichen Projekten kann es erforderlich sein, Daten gleichzeitig auf mehreren Geräten zu lesen und zu schreiben. Sie können die Funktionen modbus_read_input_registers_batch() und modbus_write_single_register_batch() verwenden, um Batch-Vorgänge zu implementieren.

Die Funktion modbus_read_input_registers_batch() akzeptiert drei Parameter: die Modbus TCP-Verbindung, die Geräteadresse und ein Array von Registeradressen. Das Folgende ist ein Beispielcode für das Batch-Lesen von Eingaberegistern:

$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);
Nach dem Login kopieren

Die Funktion modbus_write_single_register_batch() akzeptiert drei Parameter: die Modbus TCP-Verbindung, die Geräteadresse und ein Array von Registern und Daten. Das Folgende ist ein Beispielcode für das Stapelschreiben in ein einzelnes Register:

$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');
}
Nach dem Login kopieren

Mit dem obigen Code können die Register einer Gruppe von Geräten gleichzeitig gelesen und geschrieben werden.

5. Zusammenfassung
Anhand der obigen Einführung und des Beispielcodes können wir sehen, dass es relativ einfach ist, das Stapellesen und -schreiben von Modbus TCP über die PHP-Sprache zu implementieren. Bereiten Sie einfach die entsprechende Umgebung vor und nutzen Sie die mit Modbus TCP verbundenen PHP-Erweiterungsfunktionen, um Kommunikations- und Datenvorgänge zwischen Geräten einfach zu realisieren.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Batch-Lesen und Schreiben von Modbus TCP über PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage