FP_COM_PMSET

Définir les paramètres de communication dans le module SCU

Cette instruction FP envoie les modifications des paramètres de communication à un module. Les modifications sont spécifiées par s2_dutParameter pour le port de communication indiqué par s1_Port.

Paramètres

Entrée

s1_Port (WORD, INT, UINT)

Indique les ports de communication (selon le type d’API) :

  • Port COM, par ex. SYS_COM0_PORT

  • Port Ethernet, par ex. SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU, par ex. 16#xx01 (xx = numéro du connecteur) dans COM01

s2_dutParameter (FP_COM_PARAMETER_DUT)

Paramètres à définir pour le port SCU

Sortie

d_Result (WORD, INT, UINT)

Adresse de départ de la zone mémoire dans l’unité maître qui sauvegarde le résultat du traitement (1 mot)

Contenu du résultat d_Result

  1.  (1) Octet de poids fort
  2.  (2) Drapeau du résultat de l’exécution

    FALSE : Exécution terminée normalement

    TRUE : Exécution terminée anormalement

  3.  (3) Drapeau de process en cours

    FALSE : Process terminé

    TRUE : Process en cours

  4.  (4) Octet de poids faible
    • 0 : Exécution terminée normalement
    • 1 : Le port de communication spécifié est invalide.
    • 2 : Erreur de paramétrage
    • 3 : Erreur de changement de mode
    • 4 : Le port de communication spécifié est occupé.
    • 5 : Incohérence des paramètres qui doivent être modifiés (début/fin du paramétrage, paramètres spécifiés par des opérandes incohérents)

Remarques

  • Avant d’exécuter l’instruction, vérifiez que le bit 15 (drapeau de process en cours) de la zone de sauvegarde du résultat, spécifiée par dResult, est sur FALSE.

  • Si la modification des paramètres est exécutée pour un port COM alors qu’un envoi/une réception est en cours, l’envoi/la réception est annulé et les paramètres sont modifiés. Les données reçues sont perdues. L’envoi est suspendu.

  • Cette instruction ne peut pas être appelée par des fonctions définies par l’utilisateur. Utilisez uniquement des programmes et des blocs fonctions.

  • Changez les paramètres de communication du port COM de l’unité centrale à l’aide d’un programme utilisateur.

  • Lorsque la requête de modification est en cours de traitement, le bit 15 de la zone de sauvegarde du résultat d_Result passe à TRUE. Lorsque le process est terminé, il devient FALSE.

  • Le résultat du process est sauvegardé dans la zone spécifiée par d_Result. Si une erreur apparaît, le drapeau du résultat de l’exécution (bit 14) devient TRUE. Le code d’erreur est sauvegardé dans les octets de poids faible de d_Result.

  • Si vous utilisez l’instruction FP_COM_GET_PARAMETER pour lire les paramètres et l’instruction FP_COM_PMSET pour définir les paramètres qui doivent être modifiés, le paramétrage peut être simplifié.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

Exemple

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.

	VAR
		dutComParameter: FP_COM_PARAMETER_DUT;
		bChangeStationNumber: BOOL:=FALSE;
		wResult: WORD:=0;
		bIsChangeInProgress: BOOL:=FALSE;
		bIsChangeError: BOOL:=FALSE;
	END_VAR

Corps en 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

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

Modifié le : 2024-03-07Commentaires sur cette pageAssistance téléphonique