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.
Entrada
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
Parámetros a ajustar para el puerto SCU
Salida
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
FALSE: Finalización normal
TRUE: Finalización anormal
FALSE: Proceso completado
TRUE: Proceso en curso
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.
si el área especificada utilizando el modificador índice supera el límite.
si el área especificada utilizando el modificador índice supera el límite.
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
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);