Herunterladen Inhalt Inhalt Diese Seite drucken

Anhang; Programmierbeispiele In C; Modbus_Read; Modbus_Write - ABB Protronic 100 Bedienungsanleitung

Vorschau ausblenden Andere Handbücher für Protronic 100:
Inhaltsverzeichnis

Werbung

8

Anhang 2

8.1 Programmierbeispiele in C

Alle nachfolgenden Beispiele für die Zugriffe auf Register sind in C, um eine exakte und fehlerfreies Bei-
spiel zu gewährleisten. Die Übertragung findet hier im RTU-Protokoll statt. Die Funktionen
modbus_read() und modbus_write() zeigen, wie ein Telgramm aufgebaut wird, alle anderen Funktionen
zeigen den Umgang mit den verschiedenen Datenformaten.

modbus_read

Daten von anderen MODBUS-Teilnehmern besorgen (Read Output Register: Funktion 03)
void modbus_read(unsigned regnr, int anzahl, int *recdata)
{
}

modbus_write

Daten zu anderen MODBUS-Teilnehmern schicken (Write Single Register: Funktion 06)
void modbus_write(unsigned regnr, int data)
{
}
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
int
i,anz;
unsigned
crc;
sendbuf[0] = mod_adr;
sendbuf[1] = 3;
sendbuf[2] = regnr>>8;
sendbuf[3] = regnr;
sendbuf[4] = 0;
sendbuf[5] = anzahl;
crc
= CRC16(sendbuf,6);
sendbuf[6] = crc;
sendbuf[7] = crc>>8;
ComWrite(sendbuf,8);
ComRead(receivebuf);
// receivebuf[0];
enthaelt Adresse
// receivebuf[1];
enthaelt Function-Code
anz = receivebuf[2];
// receivebuf[3+anz];
// receivebuf[4+anz];
for (i=0; i < anz; i+=2) {
recdata[i+0] = receivebuf[4+i];
recdata[i+1] = receivebuf[3+i];
}
unsigned
crc;
sendbuf[0] = mod_adr;
sendbuf[1] = 6;
sendbuf[2] = regnr>>8;
sendbuf[3] = regnr;
sendbuf[4] = data>>8;
sendbuf[5] = data;
crc
= CRC16(sendbuf,6);
sendbuf[6] = crc;
sendbuf[7] = crc>>8;
ComWrite(sendbuf,8);
ComRead(receivebuf);
/* MODBUS-Zieladresse
/* Read Output Register */
/* Hi Register Nummer
/* Lo Register Nummer
/* Hi Anzahl Register
/* Lo Anzahl Register
/* 8 Zeichen senden */
/* Daten Empfangen */
/*
Anzahl Datenbytes */
enthaelt Adresse CRC
enthaelt Adresse CRC
/* MODBUS-Zieladresse
/* Write Single Register */
/* Hi Register Nummer
/* Lo Register Nummer
/* Hi Datenbyte
/* Lo Datenbyte
/* 8 Zeichen senden */
/* Quittung Empfangen */
Anhang 2
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
35

Werbung

Inhaltsverzeichnis
loading

Diese Anleitung auch für:

Digitric 500Protronic 500Protronic 550

Inhaltsverzeichnis