Der Sercos-Master kann den Service-Kanal SVC zum Lesen und Schreiben der IDNs und der Vorgangsbefehle verwenden. Die Kommunikation über den SVC nutzt den Echtzeitkanal, ist aber nicht zyklisch. Die typische Ausführungszeit eines 4-Byte-Parameters entspricht ungefähr 10 Sercos-Zyklen. Je nach der Verfügbarkeit des SVC kann die Ausführungszeit sehr viel länger sein. Da es möglich ist, bis zu 20 Vorgangsbefehle sowie IDN-Lese- und Schreiboperationen in einem gemeinsamen Puffer abzulegen, kann ein bestimmter Vorgangsbefehl bzw. eine bestimmte IDN-Lese- oder Schreiboperation mehr Zeit für die Ausführung benötigen.
Weitere Informationen über den SVC finden Sie im Abschnitt Nicht-zyklische Sercos-Kommunikation über den RTC und weitere Informationen über IDNs und Vorgangsbefehle finden Sie im Abschnitt Sercos-Parameter.
Vorgangsbefehle werden asychron ausgeführt. Durch das Aufrufen eines Vorgangsbefehls wird die Task nicht blockiert. Sie müssen den Status des Vorgangsbefehls lesen, um festzustellen, ob der Vorgangsbefehl beendet wurde.
Es gibt zwei Möglichkeiten zum Ausführen eines Vorgangsbefehls:
Über FC_ExecuteProcedureCommandAsync mit dem Eingangsparameter für die Topologieadresse und der IDN
Über FC_ExecuteProcedureCommandAsyncViaHandle mit dem Eingangsparameter für den Handle und die IDN
Mögliche Rückgabewerte:
DINT |
Name (ET_Result) |
Beschreibung |
---|---|---|
0 |
Ok |
Der Vorgangsbefehl wurde ausgeführt. |
8 |
Pending |
Der Vorgangsbefehl wartet auf die Ausführung. |
-1 |
DeviceManagerInvalidDeviceHandle |
Der Vorgangsbefehl kann nicht ausgeführt werden. Nur für den Aufruf über den Handle. |
-2 |
DeviceManagerNoPhysicalSlaveConnected |
Der Vorgangsbefehl kann nicht ausgeführt werden. |
-11 |
TopologicalAddressOutOfBounds |
Der Vorgangsbefehl kann nicht ausgeführt werden. Nur für den Aufruf über eine Topologieadresse. |
-15 |
ServiceChannelIdnInvalid |
Der Vorgangsbefehl kann nicht ausgeführt werden. |
-43 |
ServiceChannelBusy |
Der Vorgangsbefehl kann nicht ausgeführt werden. |
-99 |
UnexpectedFeedback |
Der Vorgangsbefehl kann nicht ausgeführt werden. |
Es gibt zwei Möglichkeiten, um den Status eines Vorgangsbefehls zu lesen:
Über FC_ReadProcedureCommandAsync mit dem Eingangsparameter für die Topologieadresse
Über FC_ReadProcedureCommandAsyncViaHandle mit dem Eingangsparameter für den Handle
Die Rückgabewerte sind die gleichen wie für die Ausführung eines Vorgangsbefehls. Der Aufruf gibt den Status des zu verarbeitenden Vorgangsbefehls zurück. Wenn kein Vorgangsbefehl verarbeitet wird, gibt der Aufruf den Status des nächsten Vorgangsbefehls in der Warteschlange zurück. Ein Vorgangsbefehl wird beendet, wenn der Rückgabewert nicht 8 entspricht.
Das Lesen oder Schreiben eines Parameters erfolgt asychron. Die Task ist nicht blockiert.
Verwenden Sie den Funktionsbaustein FB_WriteIDN, um einen Parameter zu schreiben und den Funktionsbaustein FB_ReadIDN, um die Parameterwerte zu lesen.
Die Zeitüberschreitung ist einer der Eingangsparameter für FB_WriteIDN und FB_ReadIDN. Der Standardwert für die Zeitüberschreibung entspricht 1000000 µs (1 s). Die Zeitüberschreitung startet mit der Ausführung des Lese- oder Schreibbefehls, und nicht mit dem Start in der Warteschlange. Je nach der Anzahl der Elemente in der Warteschlange und der Zeit, die für die Verarbeitung dieser Elemente erforderlich ist, kann es möglich sein, dass ein Lese- oder Schreibbefehl die Zeitüberschreibung vor dem Beginn der Verarbeitung erreicht.