SPS Beispielprogramme (Modbus)

In den folgenden Kapiteln werden verschiedene Beispielprogramme f�r die Modbus-Kommunikation via SPS (Simatic S7-1200, TIA Portal v16) beschrieben.

1. horstFX Bool-Register lesen

Hier wird gezeigt, wie im Siemens TIA Portal (v16) ein Bool-Wert aus einem Modbus-Coil (Adresse 1000) ausgelesen werden kann.

1.1 Funktionsbaustein

Mit Hilfe des Funktionsblocks MB_CLIENT wird ein Bool (1-Bit) aus den Modbus Coils gelesen.

Bei diesem Funktionsblock f�ngt das Modbus-Coil-Register bei der MV_DATA_ADDR 1 an, dies entspricht dem Coil Eintrag Nummer 0.
Da die Bool-Register bei Adresse 1000 beginnen, muss diesem Funktionsblock die MV_DATA_ADDR 1001 �bergeben werden (1 + 1000) um den Wert des Bool-Registers 0 abzufragen.

Der Wert wird beim erfolgreichen auslesen in die Variable MB_DATA_PTR geschrieben. Diese muss vom Typ real sein.

1.2 Datenbaustein

Der Vollst�ndigkeit halber findet sich nachfolgend der f�r dieses Beispiel genutzte Datenbaustein.
Die Parameter f�r den Verbindungsaufbau finden sich unter der Variable MB_Connection.

Der Wert des Bool-Register 0 wird in die Variable horsFX_BoolRegister_0 geschrieben.

Das zugeh�rige TIA Projekt kann hier heruntergeladen werden:

Modbus Bool-Register lesen

2. horstFX Float-Register auslesen

Hier wird gezeigt, wie im Siemens TIA Portal (v16) ein 32Bit-Gleitkomma-Wert aus zwei Modbus-Holding-Registern (Adresse 2000 und 2001) ausgelesen werden kann.

2.1 Funktionsblock

Mit Hilfe des Funktionsblocks MB_CLIENT werden zwei Word (4-Byte) aus den Modbus Registern gelesen.

Bei diesem Funktionsblock f�ngt das Modbus-Holding-Register bei der MV_DATA_ADDR 40001 an, dies entspricht dem Holding-Register Eintrag Nummer 0.
Da die Float-Register bei Adresse 2000 beginnen, muss diesem Funktionsblock die MV_DATA_ADDR 42001 �bergeben werden (40001 + 2000) um den Wert des Float-Registers 0 abzufragen.
Da zwei Register gelesen werden m�ssen betr�gt die MB_DATA_LEN 2.

Der Wert wird beim erfolgreichen auslesen in die Variable MB_DATA_PTR geschrieben. Diese muss vom Typ real sein.

2.2 Datenbaustein

Der Vollst�ndigkeit halber findet sich nachfolgend der f�r dieses Beispiel genutzte Datenbaustein.
Die Parameter f�r den Verbindungsaufbau finden sich unter der Variable MB_Connection.

Der Wert des Float-Register 0 wird in die Variable horsFX_FloatRegister_0 geschrieben.

Das zugeh�rige TIA Projekt kann hier heruntergeladen werden:

Modbus Float-Register lesen

3. horstFX Int-Register auslesen

Hier wird gezeigt, wie im Siemens TIA Portal (v16) ein 32Bit-Ganzzahl-Wert aus zwei Modbus-Holding-Registern (Adresse 1000 und 1001) ausgelesen werden kann.

3.1 Funktionsblock

Mit Hilfe des Funktionsblocks MB_CLIENT werden zwei Word (4-Byte) aus den Modbus Registern gelesen.

Bei diesem Funktionsblock f�ngt das Modbus-Holding-Register bei der MV_DATA_ADDR 40001 an, dies entspricht dem Holding-Register Eintrag Nummer 0.
Da die Integer-Register bei Adresse 1000 beginnen, muss diesem Funktionsblock die MV_DATA_ADDR 41001 �bergeben werden (40001 + 1000) um den Wert des Integer-Registers 0 abzufragen.

Da zwei Register gelesen werden m�ssen betr�gt die MB_DATA_LEN 2.

Der Wert wird beim erfolgreichen auslesen in die Variable MB_DATA_PTR geschrieben. Diese muss vom Typ DInt sein.

3.2 Datenbaustein

Der Vollst�ndigkeit halber findet sich nachfolgend der f�r dieses Beispiel genutzte Datenbaustein.
Die Parameter f�r den Verbindungsaufbau finden sich unter der Variable MB_Connection.

Der Wert des Integer-Register 0 wird in die Variable horsFX_IntRegister_0 geschrieben.

Das zugeh�rige TIA Projekt kann hier heruntergeladen werden:

Modbus Integer Register lesen