FP_COM_PMSET

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.

Parametri

Ingresso

s1_Port (WORD, INT, UINT)

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

s2_dutParameter (FP_COM_PARAMETER_DUT)

Parametri da impostare per la porta SCU

Uscita

d_Result (WORD, INT, UINT)

Indirizzo iniziale dell'area di memoria nell'unità master che memorizza il risultato dell'elaborazione (1 word)

Contenuto del risultato dell'elaborazione d_Result

  1.  (1) Byte alto
  2.  (2) Flag risultato di esecuzione

    FALSE: Completamento normale

    TRUE: Completamento anomalo

  3.  (3) Flag processo in corso

    FALSE: Processo completato

    TRUE: Processo in corso

  4.  (4) Byte basso
    • 0: Completamento normale
    • 1: La porta di comunicazione specificata non è valida
    • 2: Errore di impostazione
    • 3: Errore di modifica modalità
    • 4: La porta di comunicazione specificata è occupata
    • 5: Incoerenza dei parametri da modificare (all'inizio/alla fine del processo di impostazione, i parametri specificati dagli operandi sono incoerenti)

Note

  • 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.

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se l'area specificata utilizzando il registro indice eccede il limite.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se l'area specificata utilizzando il registro indice eccede il limite.

Esempio

Intestazione del POU

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

Corpo LD

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

Corpo ST

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);

L'ultima revisione: 2024-03-07Feedback su questa paginaPanasonic hotline