Moin, ja gibt es. Dabei ist wichtig ob Du eine TCP Verbindung hast, die überwacht werden kann, oder eine verbindungslose Modbus UPD Kommunikation. Bei TCP ist es etwas einfacher, weil Du nur die Verbindung selbst überwachen musst. Das geht am schnellsten über die Eingabehilfe (F2). Dort findest Du unter den IoConfig_Globals den Namen des generischen Slave Gerätes zu dem es eine Methode GetErrorCode gibt, die keine Eingangsparameter hat. Also mit z.B. IoConfig_Globals.MeinSlave_tcp.GetErrorCode() bekommst Du einen Statatus als Enummeration vom Typ WagoSysModbusDiag.eRemoteSlaveError. Den Kannst Du auch in einen String umwandeln, indem Du ihn an die Funktion WagoSysModbusDiag.ModbusRemoteSlaveStrError übergibst.
Bei UDP musst Du Dir einen Kanal suchen, den Du überwachen kannst. Kanäle bündeln zusammenhängende Register. Die findest du im Konfigurator in der dritten Registerkarte. Basis ist 1, also der erste dort angezeigte Kanal hat die Nummer 1 und die folgenden jeweils um eins höher. Da suchst Du Dir einen Kanal mit lesenden Registern. Falls lesende Register mit unterschiedlicher Pollzeit definiert sind, nimmst du den mit der kürzesten Pollzeit. Diese Kanalnummer übergibst Du dann an die Methode GetChannelErrorCode, also für den ersten Kanal z.B. IoConfig_Globals.MeinSlave_udp.GetChannelErrorCode(1). Du bekommst wieder die Enummeration, die Du ebenfalls wieder in einen String umwandeln kannst.
Hat die Enummeration den Wert 0, liegt kein Fehler vor, d.h. mit einem Vergleich wie z.B. xIsError := eErrorCode <>0; bekommst Du den Status auch als Bool.