PROGRAM MBCFG_ModbusSlave0 (* generated by config, one prg for each slave *)
VAR_INPUT RETAIN
END_VAR
VAR_OUTPUT RETAIN
END_VAR
VAR_INPUT
END_VAR
VAR_OUTPUT
var1 : DWORD; (**)
var2 : DWORD; (**)
(*--- system variables (read only) -------------------------*)
MBCFG_SlaveAddress : USINT := 20; (* valid range 1..247 *)
MBCFG_TimeOut : TIME := t#1000ms;
MBCFG_RequestDelay : TIME := t#200ms; (* 0 means no delay *)
MBCFG_Error : MBCFG_eERROR := MBCFG_START_UP;
MBCFG_SERCOM_ERROR : BYTE; (* generated by sercomm.lib -> see documentation of sercomm.lib *)
MBCFG_LastJob : MBCFG_typCOM_JOB;
(*----------------------------------------------------------*)
END_VAR
{library private}
VAR CONSTANT
zz_VARIABLECOUNT : INT := 2; (* number of variables *)
zz_JOBCOUNT : INT := 1; (* number of jobs *)
END_VAR
VAR
(*=== VARIABLE LIST ===============================================================================*)
zz_VariableList : ARRAY[1..zz_VARIABLECOUNT] OF MBCFG_typVARIABLE :=
( DataType := MBCFG_TYPE_DWORD,
ByteOrder := MBCFG_BYTE_ORDER_0,
BitSize := 32,
ptVar := 0,
ReadJobIndex := 1,
ReadStartBitNo := 0,
WriteJobIndex := 0,
WriteStartBitNo := 0 ),
( DataType := MBCFG_TYPE_DWORD,
ByteOrder := MBCFG_BYTE_ORDER_0,
BitSize := 32,
ptVar := 0,
ReadJobIndex := 1,
ReadStartBitNo := 32,
WriteJobIndex := 0,
WriteStartBitNo := 0 )
;
(*=================================================================================================*)
(*=== JOB LIST ====================================================================================*)
zz_JobList : ARRAY[1..zz_JOBCOUNT] OF MBCFG_typCOM_JOB :=
( Functioncode := 3,
ReadStartAddress := 12638,
ReadQuantity := 4,
WriteStartAddress := 0,
WriteQuantity := 0,
ptReadData := 0,
ptWriteData := 0 )
;
(*=================================================================================================*)
(*### MODBUS MASTER ##### FIXED CODE ###########################################*)
zz_MBCFG_MASTER : MBCFG_MASTER_SERIAL; (* for serial modbus RTU/ASCII *)
(*##############################################################################*)
END_VAR
Programm:
(*--- for each variable one entry ------------------------------------*)
zz_VariableList[1].ptVar := ADR(var1);
zz_VariableList[2].ptVar := ADR(var2);
(*--------------------------------------------------------------------*)
(*=== call of the master for this slave ====================================================*)
zz_MBCFG_MASTER( usiSlaveAddress := MBCFG_SlaveAddress, (* fixed entry *)
tTimeOut := MBCFG_TimeOut, (* fixed entry *)
iVariableCount := zz_VARIABLECOUNT, (* fixed entry *)
ptVariableList := ADR(zz_VariableList), (* fixed entry *)
iJobCount := zz_JOBCOUNT, (* fixed entry *)
ptJobList := ADR(zz_JobList), (* fixed entry *)
tRequestDelay := MBCFG_RequestDelay, (* fixed entry *)
MB_ComObject := MBCFG_COM_OBJECTS.MBCFG_MB_COM_2,(* generated entry *)
eError => MBCFG_Error, (* fixed entry *)
LastJob => MBCFG_LastJob (* fixed entry *)
);
(*==========================================================================================*)
MBCFG_SERCOM_ERROR := MBCFG_COM_OBJECTS.MBCFG_MB_COM_2.bInterfaceError;