Tc3_RRCS_Sample01
Dieses einfache Beispiel dient ausschließlich dazu, die Kommunikation zwischen TwinCAT und dem RRCS-Server zu prüfen. Laden Sie das Beispiel hier herunter:
Tc3_RRCS_Sample01
In der Variablendeklaration (MAIN-Programm) werden alle benötigten Variablen deklariert und die Adressdaten analog zur Einstellung des RRCS-Servers vorgenommen. In diesem Fall:
- läuft der RRCS-Server auf einem Beckhoff IPC mit der IP-Adresse 192.168.42.59
- horcht der RRCS-Server auf Port 8193
- läuft das TwinCAT-Sample auf einem Beckhoff-Embedded-PC mit der IP-Adresse 192.168.42.3
Variablendeklaration:
PROGRAM MAIN
VAR
(* the state of the statemachine *)
eState: E_RRCS_State := IDLE;
(* the IP-Address and port of the PC which runs the RRCS- Server *)
fbRRCScom: FB_RRCScom(
ipAddr_Server:= '192.168.42.59',
ipPort_Server:=8193):= (eTraceLevel := TcEventSeverity.Verbose);
(* Retry in case of errors *)
tonRetry: TON := (pt := T#5S);
{region 'Get States'}
(* functionblock used to get the state of the RRCS-Server *)
fbGetState: FB_GetState(pfbRRCscom := ADR(fbRRCScom));
{endregion}
END_VAR
Danach wird das Programm basierend auf einer Statemachine erstellt:
CASE eState OF
CHECK_GATEWAY:
tonRetry(IN := FALSE);
fbGetState(bExecute:= TRUE);
IF fbGetState.bError THEN
eState:= ERROR;
ELSIF NOT fbGetState.bBusy THEN
IF fbGetState.sGatewayState = 'Working' THEN
eState := IDLE;
ELSE
eState := ERROR;
END_IF
END_IF
ERROR:
fbGetState(bExecute:= FALSE);
tonRetry(In:= NOT tonRetry.Q);
IF tonRetry.Q THEN
eState:= CHECK_GATEWAY;
END_IF
END_CASE
IF NOT tonRetry.Q THEN
eState := SEL(fbRRCScom.eCommState = E_CommState.ERROR, eState, ERROR);
END_IF
Starten Sie das Programm, ist der Status der Statemachine (eState) IDLE. Um den Status des RRCS-Servers abzufragen, müssen Sie den Status von eState auf CHECK_GATEWAY setzen. Siehe hierzu: https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_plc_intro/2531621771.html.
War die Anfrage erfolgreich, wechselt der Status des eState nach einigen Zyklen zurück auf IDLE und die Variable sGatewayState
erhält den Wert ´Working´.
Trat bei der Abfrage ein Fehler auf, wechselt der Status des eState auf ERROR und es folgen weitere Versuche entsprechend jener Zeit, die in tonRetry
angegeben wurde.