Hier der Funktionsaufruf:
Hier die Zeilen, in denen der Range-Error zuschlägt
Code:
if ConnectionState<>UA_STATUSCODE_GOOD then
log(llError,format('UA_Client_connect failed ConnectionState %s',[GetHResultString(ConnectionState)]))
else
log(llBlack,format('UA_Client_connect connected ConnectionState %s',[GetHResultString(ConnectionState)]));
if statuscode<>UA_STATUSCODE_GOOD then
log(llError,format('UA_Client_run_iterate failed Statuscode %s',[GetHResultString(statuscode)]))
Code:
function TOpcUAServer.GetHResultString(HR: HResult): String;
begin
result:='$'+IntToHex(hr);
if Statuscodelist.ContainsKey(result) then
result:=Statuscodelist[result];
end;
Die Log-Funktion selber mit den selben Parametern wird im Erfolgsfall laufend aufgerufen.
Zum Umfeld: Ich benutze eine C-
Dll, um aus Delphi mit einem OPCUA-Server zu kommunizieren. Timer-gesteuert wird laufend eine
Dll-Funktion angestoßen, um die Kommunikation zu am Leben zu erhalten. Bekomme ich einen Kommunikationsfehler, schreibe ich die entsprechende Log-Meldung raus.
Geht mir nun die Kommunikation flöten (passiert laufend, während die zugehörige Steuerung programmiert wird, oder halt auch wenn ich das Netzwerkkabel ziehe), dann beglückt mich diese Bereichsprüfungsmeldung, die an der Anlage blöd aussieht.
Deaktiviere ich die Bereichsprüfung, läuft alles wunderbar, die Kommunikation setzt wieder auf.