Escribir datos en el esclavo
Utilizar esta instrucción para escribir datos desde un maestro en un esclavo a través del puerto de comunicación utilizando el protocolo MEWTOCOL o Modbus RTU, según se haya definido en la configuración de los registros del sistema del puerto utilizado. Asegurarse de que el protocolo es el mismo para el maestro y el esclavo. Deben coincidir las áreas de memoria del maestro y del esclavo. Si los datos del esclavo no están disponibles en el área de usuario del maestro, utilizar FP_WRITE_TO_SLAVE_AREA_OFFS o FP_MODBUS_MASTER.
Para la transmisión de datos utilizando Modbus, el compilador genera comandos Modbus basados en las direcciones Modbus.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
Número de estación del esclavo (MEWTOCOL: 1-99, MODBUS: 1-247)
Ajustar a 1, si se aplica una SYS_ETHERNET_USER_CONNECTION_xx al Port de entrada
Área de palabras o registro en la unidad maestra donde se encuentran los datos que se van a escribir en el esclavo.
Salida
Dirección destino en el esclavo donde se escriben los datos solicitados
Para FP7 solamente: Para obtener una descripción de todos los códigos de error, consultar la tabla de códigos de error de comunicación Modbus/MEWTOCOL.
Para otros PLCs: ajustar a 0
Durante el envío: Bandera de envío de la comunicación maestra es TRUE
Envío realizado: Bandera de envío de la comunicación maestra es FALSE
Finalización normal: FALSE
Finalización anormal: TRUE
si el área especificada utilizando el modificador índice supera el límite.
si el área especificada utilizando el modificador índice supera el límite.
Si no esta instalado el casete de comunicaciones necesario para el puerto adicional (COM) seleccionado.
En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.
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
wWriteToSlaveResult: WORD:=0;
(*result of write to slave instruction*)
iSlaveStationNumber: INT:=0;
(*slave station number*)
arrParameters: ARRAY [0..15] OF DINT;
(*Array of parameters to be send to slave station*)
bSetParameters: 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 := 6 ;
NETWORK_BODY
B(B_F,FP_WRITE_TO_SLAVE!,,19,0,30,6,,?DEN?DnPort?DStationNumber?DSource?AENO?CSlaveAddress?CResult);
B(B_VARIN,,SYS_COM2_PORT,17,2,19,4,);
B(B_VARIN,,iSlaveStationNumber,17,3,19,5,);
B(B_VARIN,,arrParameters,17,4,19,6,);
B(B_VAROUT,,g_Peripherie_SlaveParameter_Address,30,2,32,4,);
B(B_VAROUT,,wWriteToSlaveResult,30,3,32,5,);
B(B_CONTACT,,bSetParameters,4,1,6,3,);
L(1,2,4,2);
L(6,2,19,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if bSetParameters then
FP_WRITE_TO_SLAVE(Port := SYS_COM2_PORT,
StationNumber := iSlaveStationNumber,
Source := arrParameters,
SlaveAddress => g_Peripherie_SlaveParameter_Address,
Result => wWriteToSlaveResult);
end_if;