e!COCKPIT : Exemple de gestion Modbus - MA2ID - WAGO e!COCKPIT - Gestion Modbus, mise en place du programme

Mise en place

Pour des raisons de simplification au niveau des tests, la communication modbus sera réalisée en TCP. Nous utiliserons donc les blocs fonctionnels TCP de la bibliothèque WagoAppPlcModbus.

Nous allons dans un premier temps créer l'arborescence de notre projet de la manière suivante :

 

Définition des variables et renseignement du bloc coté esclave :

PROGRAM PLC_MODBUS_SLAVE
VAR
  FbSlave:WagoAppPlcModbus.FbMbSimpleServerTcp;
  xOpen: BOOL;
  wPort: WORD;
  utKeepAlive: WagoAppPlcModbus.typKeepAlive;
  bUnitId: BYTE;
  IIdentifyObject: WagoAppPlcModbus.I_IdentifyBaseObject;
  axDiscreteInputs:ARRAY[1..10] OF BOOL;
  axCoils:ARRAY[1..10] OF BOOL;
  awInputRegisters:ARRAY[1..10] OF WORD;
  awHoldingRegisters:ARRAY[1..1000] OF WORD;
END_VAR

FbSlave(
  xOpen:= xOpen,
  wPort:=wPort ,
  utKeepAlive:=utKeepAlive ,
  xIsOpen=> ,
  xError=> ,
  oStatus=> ,
  udiConnectedClients=> ,
  bUnitId:= bUnitId,
  IIdentifyObject:= IIdentifyObject,
  axDiscreteInputs:= axDiscreteInputs,
  axCoils:= axCoils,
  awInputRegisters:= awInputRegisters,
  awHoldingRegisters:=awHoldingRegisters ,
  oMbAccessInfo=> );

 

Définition des variables et renseignement du bloc coté maitre :

PROGRAM PLC_MODBUS_MASTER
VAR
  fbMaster:WagoAppPlcModbus.FbMbMasterTcp;
  xConnect: BOOL;
  sHost: STRING;
  wPort: WORD;
  utKeepAlive: WagoAppPlcModbus.typKeepAlive;
  eFrameType: WagoAppPlcModbus.eMbFrameType;
  tTimeOut: TIME;
  utQuery: WagoAppPlcModbus.typMbQuery;
  xTrigger: BOOL;
  utResponse: WagoAppPlcModbus.typMbResponse;
END_VAR

fbMaster(
  xConnect:= xConnect,
  sHost:= sHost,
  wPort:=wPort ,
  utKeepAlive:=utKeepAlive ,
  eFrameType:=eFrameType ,
  tTimeOut:= tTimeOut,
  utQuery:= utQuery,
  xTrigger:= xTrigger,
  utResponse:=utResponse ,
  xIsOpen=> ,
  xError=> ,
  oStatus=> );