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:

Tc3_RRCS_Sample01 1:

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.

Tc3_RRCS_Sample01 2:

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.