Impostare i parametri di comunicazione nell'unità SCU
Questa istruzione FP invia all'unità le modifiche ai parametri di comunicazione. Le modifiche vengono specificate da s2_dutParameter per la porta di comunicazione specificata da s1_Port.
Ingresso
Specifica le porte di comunicazione (in base al tipo di PLC):
Porta COM p.es. SYS_COM0_PORT
Porta Ethernet p.es. SYS_ETHERNET_USER_CONNECTION_1
MCU/SCU p.es. 16#xx01 (xx = numero slot) in COM01
Parametri da impostare per la porta SCU
Uscita
Indirizzo iniziale dell'area di memoria nell'unità master che memorizza il risultato dell'elaborazione (1 word)
Contenuto del risultato dell'elaborazione d_Result
FALSE: Completamento normale
TRUE: Completamento anomalo
FALSE: Processo completato
TRUE: Processo in corso
Prima di eseguire l'istruzione, assicurarsi che il bit 15 (flag processo in corso) dell'area di memoria del risultato di elaborazione specificato da dResult sia FALSE.
Se la modifica dei parametri viene eseguita per una porta COM nella quale è in corso un invio/ricezione, il processo di invio/ricezione viene annullato e i parametri vengono modificati. In tal caso, i dati ricevuti vanno persi. Il processo di invio viene sospeso.
Questa istruzione non può essere richiamata dalle funzioni definite dall'utente. È utilizzabile solo in programmi e Function Block.
Modificare i parametri di comunicazione per la porta COM della CPU utilizzando un programma utente.
Mentre la modifica richiesta viene elaborata, il bit 15 dell'area di memorizzazione del risultato dell'elaborazione d_Result passa a TRUE. Al termine del processo, il bit passa a FALSE.
Il risultato dell'elaborazione viene memorizzato nell'area specificata da d_Result. Se si verifica un errore, il flag del risultato di esecuzione (bit 14) passa a TRUE. Il codice di errore viene memorizzato nei byte basso di d_Result.
Leggendo i parametri di impostazione con l'istruzione FP_COM_GET_PARAMETER e impostando i parametri da modificare con l'istruzione FP_COM_PMSET, è possibile semplificare le impostazioni.
se l'area specificata utilizzando il registro indice eccede il limite.
se l'area specificata utilizzando il registro indice eccede il limite.
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
dutComParameter: FP_COM_PARAMETER_DUT;
bChangeStationNumber: BOOL:=FALSE;
wResult: WORD:=0;
bIsChangeInProgress: BOOL:=FALSE;
bIsChangeError: BOOL:=FALSE;
END_VAR
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_CONTACT,,bChangeStationNumber,5,2,7,4,);
B(B_F,E_MOVE!,,21,1,27,5,,?DEN?D?AENO?C);
B(B_VARIN,,2,19,3,21,5,);
B(B_VAROUT,,dutComParameter.wStationNumber,27,3,29,5,);
L(1,3,5,3);
L(7,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 := 6 ;
NETWORK_BODY
B(B_CONTACT,,bChangeStationNumber,5,1,7,3,R);
B(B_CONTACT,,bIsChangeInProgress,5,4,7,6,);
B(B_F,FP_COM_PMSET!,,21,0,31,5,,?DEN?Ds1_Port?Ds2_dutParameter?AENO?Cd_Result);
B(B_VARIN,,SYS_COM0_PORT,19,2,21,4,);
B(B_VARIN,,dutComParameter,19,3,21,5,);
B(B_VAROUT,,wResult,31,2,33,4,);
L(1,2,5,2);
L(1,5,5,5);
L(7,2,21,2);
L(7,5,11,5);
L(11,2,11,5);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,FP_TEST_BIT!,,21,0,29,5,,?DEN?D@'s'?Dn_Pos?AENO?Cd);
B(B_VARIN,,wResult,19,2,21,4,);
B(B_VARIN,,15,19,3,21,5,);
B(B_COIL,,bIsChangeInProgress,35,2,37,4,);
L(1,2,21,2);
L(29,3,35,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,FP_TEST_BIT!,,21,0,29,5,,?DEN?D@'s'?Dn_Pos?AENO?Cd);
B(B_VARIN,,wResult,19,2,21,4,);
B(B_VARIN,,14,19,3,21,5,);
B(B_COIL,,bIsChangeError,35,2,37,4,);
L(1,2,21,2);
L(29,3,35,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (bChangeStationNumber) then
dutComParameter.wStationNumber := 2;
END_IF;
IF DF(bChangeStationNumber) OR bIsChangeInProgress then
FP_COM_PMSET(s1_Port := SYS_COM0_PORT,
s2_dutParameter := dutComParameter,
d_Result => wResult);
End_IF;
FP_TEST_BIT(s := wResult, n_Pos := 15, d => bIsChangeInProgress);
FP_TEST_BIT(s := wResult, n_Pos := 14, d => bIsChangeError);