Reset di una porta COM specifica
Questo Function Block invia una richiesta di reset della porta COM a un numero di porta specificato. Il PLC deve essere impostato sulla comunicazione "controllata dal programma". Valutare le variabili di uscita bIsDone e bIsRequested per controllare se la porta specificata è stata resettata e se possa essere usata di nuovo.
Ingresso
Se impostata su TRUE, la richiesta di reset della porta COM viene inviata al numero di porta specificato
COM0, COM1, COM2 sulla CPU
16#xx01–16#xx04 (xx = numero slot 1–64) su SCU
Uscita
Impostare su TRUE, se la porta COM è resettata e può essere utilizzata di nuovo.
Impostare su TRUE, se il reset della porta COM è stato richiesto.
Variabili di sistema corrispondenti delle uscite (impostare solo se la porta COM è stata resettata da bReset della stessa istanza)
Richiesta di reset
COM0: sys_bIsComPort0ResetRequested
COM1: sys_bIsComPort1ResetRequested
COM2: sys_bIsComPort2ResetRequested
Reset effettuato
COM0: sys_bIsComPort0ResetDone
COM1: sys_bIsComPort1ResetDone
COM2: sys_bIsComPort2ResetDone
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR
fbResetComPort: ResetComPort;
bResetComPort: BOOL:=FALSE;
iPort: INT:=0;
bComPortCannotBeUsed: BOOL:=FALSE;
END_VAR
Quando la variabile bResetComPort è impostata su TRUE, il Function Block viene eseguito.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_VARIN,,iPort,19,3,21,5,);
B(B_CONTACT,,bResetComPort,6,2,8,4,);
B(B_FB,ResetComPort!,fbResetComPort,21,1,30,5,,?BbReset?BPort?AbIsDone?AbIsRequested);
L(1,3,6,3);
L(8,3,21,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_COIL,,bComPortCannotBeUsed,39,1,41,3,S);
B(B_CONTACT,,fbResetComPort.bIsRequested,6,1,8,3,);
L(1,2,6,2);
L(8,2,39,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_COIL,,bComPortCannotBeUsed,39,1,41,3,E);
B(B_CONTACT,,fbResetComPort.bIsDone,6,1,8,3,);
L(1,2,6,2);
L(8,2,39,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
fbResetComPort(bReset := bResetComPort,
Port := iPort);
IF (fbResetComPort.bIsRequested) then
bComPortCannotBeUsed := TRUE;
ELSIF (fbResetComPort.bIsDone) then
bComPortCannotBeUsed := FALSE;
END_IF;