modbusTCP修改库V26使用说明Word文件下载.docx
《modbusTCP修改库V26使用说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《modbusTCP修改库V26使用说明Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
1.1MBserver........................................................................................................................................................................3
1.2MBclient..........................................................................................................................................................................4
2数据类型.......................................................................................................................................................................5
2.1modbus_server_cfg_typ..............................................................................................................................................5
2.2modbus_client_cfg_typ................................................................................................................................................6
3例程...............................................................................................................................................................................7
3.1ModbusTCP从站(Slave).....................................................................................................................................7
3.2ModbusTCP主站(Master)...................................................................................................................................9
1功能块说明
1.1MBserver
MBserver功能块用于创建一个ModbusTCP从站(Slave).
注意:
ModbusTCP从站(Slave)寄存器容量为:
1000个InputRegister、1000个OutputRegister、1000个DiscreteInputs、1000个Coils
从站(Slave)最多允许3个ModbusTCP主站(Master)同时进行连接
注意:
当ModbusTCP主站(Master)越多,同一时间中访问的数据越多,刷新时间越长!
例如:
有2台上位机与PCC相连接,每一台有600个变量,刷新时间约为1秒。
功能块参数
I/O
参数名
数据类型
描述
IN
enable
BOOL
功能块使能
p_cfg
modbus_server_cfg_typ
(给出结构体的地址)
指向modbus_server_cfg_typ类型结构体的指针。
此结构体将存放Modbus类型的地址。
TimeOut
UDINT
当ModbusSlave端检测到某条连接已经很长一段时间没有收到任何数据,则ModbusSlave端会自动关闭该连接。
waitTime用于设置等待时间,1个单位为10ms。
如果waitTime为0,则默认等待时间为30s(3000)
ipString
STRING[18]
本机的IP地址
OUT
status
UINT
功能块返回的状态值
功能块说明
此功能块将建立一个ModbusTCP从站(Slave)实例,并根据所收到的Modbus指令对p_cfg所指向的寄存器(或线圈)进行操作。
1.2MBclient
MBclient功能块用于创建一个ModbusTCP主站(Master)。
ModbusTCP主站(Master)目前只能和一个ModbusTCP从站(Slave)进行通讯
服务器端同时能够对20条Modbus指令进行操作
每一条指令最多同时操作122个AI/AO或者200个DI/DO,如果需要访问更多的IO点,可以拆分成多条指令同时执行
port
通讯端口号ModbusTCP通讯端口号为502
server_ip_addr
STRING(18)
ModbusTCP从站(Slave)IP地址
modbus_client_cfg_typ
(给出结构体的指针)
指向modbus_client_cfg_typ类型结构体的指针,此结构体将存放相应的操作指令。
receive_timeout
指令发出后,主站等待从站回应的超时时间,其默认值为1000ms(1s)。
此功能块将建立一个ModbusTCP主站(Master)实例,并将modbus_client_cfg_typ结构体中的指令循环发送至ModbusTCP从站(Slave)。
2数据类型
2.1modbus_server_cfg_typ
结构体成员
数据类型
描述
unit
modbus_server_unit_typ
存放ModbusTCP从站(Slave)的各个IO变量地址,共有4个UDINT的数组成员,用于存放不同类型IO变量的地址
p_discrete_inputsUDINT[1000]:
存放DI变量的地址;
p_coilsUDINT[1000]:
存放DO变量的地址;
p_input_registersUDINT[1000]:
存放AI变量的地址
p_holding_registersUDINT[1000]:
存放AO变量的地址
地址说明:
数组名称
Modbus协议对应地址
p_discrete_inputs[0]-p_discrete_inputs[1999]
10001-11000
p_coils[0]-p_coils[1999]
00001-01000
p_input_registers[0]-p_input_registers[1999]
30001-31000
p_holding_registers[0]-p_holding_registers[1999]
40001-41000
AutomationBasic语言举例
将读取的DI以及AI资料分别存放在boolVal1变量和AI数组中
modbus_client_cfg.unit.p_discrete_inputs[0]=adr(boolVal1)
loopi=1to1999do
modbus_client_cfg.unit.pinput_registers[i]=adr(AI[i])
endloop
变量声明表:
变量名称
modbus_client_cfg
boolVal
AI
INT[1000]
2.2modbus_client_cfg_typ
action_enable
modbus_client_action_enable_typ[20]
其中有single和cyclic两个成员变量:
singleBOOL无间隔时间,立即执行下一条指令;
cyclicBOOL间隔一定时间(可设)执行下一条指令;
action_param
modbus_client_action_param_typ[20]
拥有如下成员:
typeUSINTModbus指令码;
start_addrUINT起始地址;
quantityUINT访问的IO个数;
p_pvUDINTIO变量的对应存放地址
timerUDINT指令间隔时间,单位为毫秒(ms)。
3例程
3.1ModbusTCP从站(Slave)
例程功能描述:
如下例程将会用MBserver功能块实现ModbusTCP从站(Slave)功能,在从站中将存放1000个AI、1000个AO、1000个DI、1000个DO,供ModbusTCP主站(Master)操作
Initial代码
loopi=1to999do
modbus_client_cfg.unit.p_discrete_inputs[i]=adr(DI[i])
modbus_client_cfg.unit.p_coils[i]=adr(DO[i])
modbus_client_cfg.unit.p_input_registers[i]=adr(AI[i])
modbus_client_cfg.unit.p_holding_registers[i]=adr(AO[i])