查了modbus on tcp标准协议,搜索了论坛相关帖子,未能找到一个明确的说法,在实际调试中确实也碰到了这样的问题,单独开这个帖子请教大家,实在汗颜。
硬件:S7 315-2PN(client), 电脑+tcp调试工具(server)
软件包:modbus tcp pn-cpu v2.6软件包
基础设置: 按照文档“基于s7-300,400 CPU集成PN接口modbus tcp通讯快速入门”对FB102“modbusPN”以及DB2(DB_Param)、DB1(control_dat)以及DB11(holding register)进行了相关设置。
测试1:PC端创建基于端口502的服务器。FB102管脚上设置起始地址16#0001,长度128以内,此时PLC与PC能进行正常通讯,PLC问询,PC在设置的响应时间内回复数据。经查验,数据交互正常。
测试2:PC端创建基于端口502的服务器。FB102管脚上设置起始地址16#8001(超出7fff),长度任意,运行后PLC报错,错误代码A006,“CP为客户端时,数据区1-8中对应的modbus地址范围(data_type,start_address和length)不存在”,建议“修改参数data_type,start_address或者length”。
我修改了db1(control_dat)里面的起始地址和结束地址,也是从8001开始偏移,但是仍然报同样的错误。
db块无法超过7fff个word,好像是有这个限制,但是设置偏移之后也无法使用,这个就不明白了,modbus tcp的协议上面对起始地址也没找到明确的限制。
不知道大家有没有碰到过这样的情况?