F146_READ_DATA_TYPE_OFFS

Daten mit Type und Offset von Slave lesen

Mit diesem Befehl lesen Sie Daten von einem Slave mit dem Protokoll MEWTOCOL-COM oder Modbus-RTU Daten wie in den Systemregistern der verwendeten Schnittstelle definiert.Bei Datenübertragungen unter Verwendung des Modbus-Protokolls erzeugt der Compiler Modbus-Befehle auf der Grundlage der Modbus-Referenznummern.

Parameter

Eingang

Port (WORD, INT, UINT)

Legt die Kommunikationsschnittstellen fest (je nach SPS-Typ):

  • COM-Schnittstelle z.B. SYS_COM0_PORT

  • Ethernet-Schnittstelle z.B. SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU z.B. 16#xx01 (xx = Steckplatznummer) in COM01

SlaveAddress (WORD, INT, UINT)

Teilnehmeradresse des Slaves (MEWTOCOL: 1–99, MODBUS: 1–255), Rundruf: 0)

Einstellen auf 1, wenn ein SYS_ETHERNET_USER_CONNECTION_xx auf Eingang Port angewandt wird

SlaveWordAddressType (WORD, INT, UINT)

Zieladresstyp im Slave. Geben Sie einen Offset von Null an, z.B. DT0 oder WL0.

SlaveWordAddressOffs (WORD, INT, UINT)

Offset der Anfangsadresse auf dem Slave, aus dem die Daten gelesen werden. Der Adresstyp wird definiert durch SlaveWordAddressType.

NumberOfWords_BitsInWords (WORD, INT, UINT)

Anzahl der zu übertragenden Wortdaten (Bits).

Entweder:

  • Anzahl der Worte

    für Modbus RTU: 16#001–16#07F

    für MEWTOCOL-COM: 16#001–16#1FD oder 16#001–16#1B (FP0, FP-e)

Oder:

  • Steuerwort für die Bitübertragung: 16#8T0F mit T für eine Bitübertragung zum Master und F für eine Bitübertragung zum Slave (gilt nicht für FP7).

Ausgang

MasterWordData (ANY)

Wortbereich oder Register auf dem Mastermodul, in das die angeforderten Daten geschrieben werden.

Anmerkungen

  • Wir empfehlen, anstelle von diesem F-Befehl den entsprechenden FP7-Befehl zu verwenden: FP_READ_FROM_SLAVE_AREA_OFFS.

  • Die F145 oder F146-Befehle können nur ausgeführt werden, wenn keine der Befehle aktiv ist. Verwenden Sie den Merker "F145/F146 nicht aktiv" in Ihrem Programm, um den Status der Befehle zu prüfen.

  • Prüfen Sie anhand des Merkers "Kommunikationsfehler mit F145/F146“, ob die Übertragung erfolgreich war oder zu einem Fehler geführt hat.

  • Die Befehle F145 oder F146 können nicht ausgeführt werden, wenn die Zieladresse ein spezieller interner Merker (ab R9000), ein spezielles Datenregister (ab DT9000/DT90000) oder ein Dateiregister FL ist.

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)

  • Wenn Slave-Daten oder Master-Daten den verfügbaren Adressbereich überschreiten.

  • Wenn SlaveWordAddressType: Offset ¹ 0

  • Wenn als Kommunikationsart nicht MEWTOCOL-COM Master/Slave oder Modbus-RTU-Master/Slave eingestellt ist.

  • Wenn der ausgewählte COM-Port eine Kommunikationskassette erfordert, die nicht installiert ist.

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)

  • Wenn Slave-Daten oder Master-Daten den verfügbaren Adressbereich überschreiten.

  • Wenn SlaveWordAddressType: Offset ¹ 0

  • Wenn als Kommunikationsart nicht MEWTOCOL-COM Master/Slave oder Modbus-RTU-Master/Slave eingestellt ist.

  • Wenn der ausgewählte COM-Port eine Kommunikationskassette erfordert, die nicht installiert ist.

Beispiel

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	VAR
		bBool2: BOOL:=FALSE;
		bRead1: BOOL:=FALSE;
		bWrite2: BOOL:=FALSE;
		Bool16_OverlappingDut_1: BOOL16_OVERLAPPING_DUT;
	END_VAR

POE-Rumpf

Wenn bRead1 und sys_bIsComPort1F145F146NotActive auf TRUE gesetzt sind, wird der Ausgang Y38 von Slave 2 gelesen und in Bit 1 von Bool16_OverlappingDut_1.w0 geschrieben. Auf dieses Bit kann von Bool16_OverlappingDut_1.b1 zugegriffen werden. Es wird in bBool2 kopiert.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,bRead1,3,1,5,3,);
B(B_CONTACT,,sys_bIsComPort1F145F146NotActive,12,1,14,3,);
B(B_COIL,,bWrite2,45,1,47,3,S);
B(B_VARIN,,2,22,3,24,5,);
B(B_VARIN,,WY0,22,4,24,6,);
B(B_VARIN,,3,22,5,24,7,);
B(B_VARIN,,SYS_COM1_PORT,22,2,24,4,);
B(B_COIL,,bRead1,41,1,43,3,E);
B(B_F,F146_READ_DATA_TYPE_OFFS!,Instance,24,0,39,8,,?DEN?DPort?DSlaveAddress?DSlaveWordAddressType?DSlaveWordAddressOffs?DNumberOfWords_BitsInWords?AENO?CMasterWordData);
B(B_VARIN,,16#8108,22,6,24,8,);
B(B_VAROUT,,Bool16_OverlappingDut_1.w0,39,2,41,4,);
L(1,2,3,2);
L(5,2,12,2);
L(43,2,45,2);
L(14,2,24,2);
L(39,2,41,2);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_CONTACT,,Bool16_OverlappingDut_1.b1,8,1,10,3,);
B(B_COIL,,bBool2,20,1,22,3,);
L(10,2,20,2);
L(1,2,8,2);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

if (bRead1 and sys_bIsComPort1F145F146NotActive) then
    F146_READ_DATA_TYPE_OFFS(Port := SYS_COM1_PORT, 
                                SlaveAddress := 2, 
                                SlaveWordAddressType := WY0, 
                                SlaveWordAddressOffs := 3, 
                                NumberOfWords_BitsInWords := 16#8108, 
                                MasterWordData => Bool16_OverlappingDut_1.w0);
end_if;
bBool2 := Bool16_OverlappingDut_1.b1;

Letzte Änderung: 2024-12-18Feedback zu dieser SeitePanasonic Hotline