FP_COM_PMSET

Configuración de los parámetros de comunicación en SCU

Esta instrucción FP envía los cambios en los parámetros de comunicación a la unidad. Los cambios son especificados por s2_dutParameter para el puerto de comunicación especificado por s1_Port.

Parámetros

Entrada

s1_Port (WORD, INT, UINT)

Especificar los puertos de comunicación (dependiendo del tipo de PLC):

  • Puerto COM, por ejemplo SYS_COM0_PORT

  • Puerto Ethernet, por ejemplo SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU por ejemplo 16#xx01 (xx = número de slot) en COM01

s2_dutParameter (FP_COM_PARAMETER_DUT)

Parámetros a ajustar para el puerto SCU

Salida

d_Result (WORD, INT, UINT)

Dirección de inicio del área de memoria de la unidad maestra que guarda el resultado del procesamiento (1 palabra)

Contenido del resultado del procesamiento d_Result

  1.  (1) Byte de mayor peso
  2.  (2) Bandera de resultado de ejecución

    FALSE: Finalización normal

    TRUE: Finalización anormal

  3.  (3) Bandera de proceso en curso

    FALSE: Proceso completado

    TRUE: Proceso en curso

  4.  (4) Byte de menor peso
    • 0: Finalización normal
    • 1: El puerto de comunicación especificado no es válido
    • 2: Error de configuración
    • 3: Error de cambio de modo
    • 4: El puerto de comunicación especificado está ocupado
    • 5: Inconsistencia de los parámetros a modificar (al inicio/final del proceso de configuración, los parámetros especificados por los operandos son inconsistentes)

Observaciones

  • Antes de ejecutar la instrucción, asegurarse de que el bit 15 (bandera de proceso en curso) del área de almacenamiento de resultados de procesamiento especificada por dResult es FALSE.

  • Si el cambio de parámetros se realiza para un puerto COM donde está en curso un envío/recepción, se cancela el proceso de envío/recepción y se cambian los parámetros. En ese momento, los datos recibidos se pierden. El proceso de envío se suspende.

  • Esta instrucción no puede ser invocada por funciones definidas por el usuario. Utilizar solo en programas y bloques de función.

  • Cambiar los parámetros de comunicación para el puerto COM de la CPU, utilizando un programa de usuario.

  • Mientras se procesa el cambio solicitado, el bit 15 del área de almacenamiento de resultados de procesamiento d_Result pasa a TRUE. Cuando el proceso ha finalizado, pasa a FALSE.

  • El resultado del procesamiento se guarda en el área especificada por d_Result. Si se produce un error, la bandera de resultado de ejecución (bit 14) pasa a TRUE. El código de error se guarda en los bytes de menor peso de d_Result.

  • La lectura de los parámetros de ajuste mediante la instrucción FP_COM_GET_PARAMETER y los parámetros de ajuste a modificar mediante la instrucción FP_COM_PMSET permite simplificar los ajustes.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el área especificada utilizando el modificador índice supera el límite.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si el área especificada utilizando el modificador índice supera el límite.

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

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

Cuerpo 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

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

Modificado el: 2024-03-07Comentarios sobre esta páginaLínea directa de Panasonic