MBserver()

<< 点击显示目录 >>

主页  ModbusTCP库使用说明 > 功能块与函数说明 >

MBserver()

ModbusTCP Slave功能块

参数表

clip0030

clip0029

 

需注意,老版本中存在ipString接口,此接口参数无效,为实现兼容性,在2.07.9版本重新添加此接口,但不使用。

 

调用语法 (Structured Text)

 

PROGRAM _CYCLIC

  (************************************************************)
  (*                 Slave核心调用程序段                     *)
  (************************************************************)
   
  FB_MBserver_0.enable                := TRUE;
  FB_MBserver_0.serverPort                := Ctrl.Para.uServPort;
   FB_MBserver_0.TimeOut                       := 500;
   FB_MBserver_0.p_cfg                := ADR(modbus_server_cfg);
  FB_MBserver_0();

END_PROGRAM

 

例程代码

PROGRAM _INIT
  (*********************************************************************)
  (*                           端口号设定                                         *)
  (*********************************************************************)
  //此端口默认可不设置,仅在测试场景,需一台设备多Slave任务时才需要修改。
  Ctrl.Para.uServPort                                       := 502;
 
  (*********************************************************************)
  (*                             存储数据赋值                             *)
  (*     需注意,为测试观察方便,索引值为0~MAX_MBTCP_REGISTERS_NUM   *)
  (* 实际使用请自行调整ModbusTCP库中的MAX_MBTCP_REGISTERS_NUM数据大小 *)
  (*********************************************************************)
  FOR i := 0 TO MAX_MBTCP_REGISTERS_NUM DO
      modbus_server_cfg.unit.p_discrete_inputs[i]     := ADR(Ctrl.Status.Data.Slave_DI_Data[i]); //只读,对应寄存器地址10001开始的,从PLC(Server)中读到上位机(Client)的BOOL变量,比如上位读取PLC的报警信息。
      modbus_server_cfg.unit.p_coils[i]                   := ADR(Ctrl.Status.Data.Slave_DO_Data[i]);//读写,对应寄存器地址00001开始的,是从上位(Client)写入到PLC(Server)中的BOOL变量,比如上位发给PLC的启停命令。
      modbus_server_cfg.unit.p_input_registers[i]       := ADR(Ctrl.Status.Data.Slave_AI_Data[i]); //只读,对应寄存器地址30001开始的,是从PLC(Server)中读到上位机(Client)的整形变量(16位),一一对应。比如上位读取PLC的一些电机温度,实际电机扭矩。
      modbus_server_cfg.unit.p_holding_registers[i]   := ADR(Ctrl.Status.Data.Slave_AO_Data[i]);//读写,对应寄存器地址40001开始的,是从上位机(Client)写入到PLC(Server)中的整形变量(16位),一一对应,比如上位输入的一些参数,如电机动作指令。
  END_FOR;
 
END_PROGRAM
 
 
PROGRAM _CYCLIC
 
  (************************************************************)
  (*                 Slave核心调用程序段                         *)
  (************************************************************)
   
  FB_MBserver_0.enable                := TRUE;
  FB_MBserver_0.serverPort                := Ctrl.Para.uServPort;
   FB_MBserver_0.TimeOut                := 500;
   FB_MBserver_0.p_cfg                := ADR(modbus_server_cfg);
  FB_MBserver_0();
 
END_PROGRAM
 
PROGRAM _EXIT
 
END_PROGRAM