醉湮邃虞
醉湮邃虞话老黑
级别: 略有小成
精华主题: 0
发帖数量: 229 个
工控威望: 409 点
下载积分: 1577 分
在线时间: 209(小时)
注册时间: 2009-01-16
最后登录: 2015-03-18
查看醉湮邃虞的 主题 / 回贴
楼主  发表于: 2014-02-26 12:35
自编的MODBUS 子站通讯程序与主设备通讯

测试时使用了触摸屏做主站
触摸屏单独连接一个PLC,各种速率通讯正常
但多个PLC连接后,
9600速率,通讯正常,

38400时,偶尔发生子站丢失,可以自恢复

115200 时,
触摸屏写各个PLC数据,通讯正常
触摸屏读数据,个别PLC有丢失现象,只能发送写指令后,才能读,过几秒又有子站丢失

怀疑PLC计算CRC时间过长,在高速率下应答超时。试验增加触摸屏超时时间,无效果

不知是不是我的程序有问题


棋牌比赛免费得实物,闲暇好去处
http://www.jj.cn/indexTG.html?promoterid=108502812
醉湮邃虞
醉湮邃虞话老黑
级别: 略有小成
精华主题: 0
发帖数量: 229 个
工控威望: 409 点
下载积分: 1577 分
在线时间: 209(小时)
注册时间: 2009-01-16
最后登录: 2015-03-18
查看醉湮邃虞的 主题 / 回贴
1楼  发表于: 2014-02-26 14:12
其实这段程序其实一直使用着,没什么问题

最近只是想提高速率,才出现了问题
有可能是我用的这个触摸屏 数字显示元件 机理有问题

当用三个 数字显示元件 分别显示三个PLC的内存数据时,高速率就有可能出现设备丢失现象

但同样的速率下,即使用 六个 数据传输元件 ,利用触摸屏内部毫秒计时器的第0位作为触发传送条件, 同时读六个PLC 内存数据,每个每次读取10字节,通讯、数据仍然很正常
棋牌比赛免费得实物,闲暇好去处
http://www.jj.cn/indexTG.html?promoterid=108502812
醉湮邃虞
醉湮邃虞话老黑
级别: 略有小成
精华主题: 0
发帖数量: 229 个
工控威望: 409 点
下载积分: 1577 分
在线时间: 209(小时)
注册时间: 2009-01-16
最后登录: 2015-03-18
查看醉湮邃虞的 主题 / 回贴
2楼  发表于: 2014-03-01 14:51
我还是对这个问题 纠缠了起来

我将触摸屏幕作为从站,两个PLC,分别一个从站,一个主站,同样对100字节进行读取
经测试,触摸屏应答仅许20毫秒,我的程序超过200毫秒才应答
看来CRC计算是主要问题
于是又测试CRC计算程序,计算一个200字节的CRC高达165毫秒,
看来得修改CRC计算程序了
把CRC计算改为了查表法后测试,200字节需要70毫秒(据两种算法的原理,平均运算速度应提高5倍左右,可能是因S700采用的是解释运行,所以速度才提高了1倍左右)
于是得出了结论,
当PLC作为主站时,因不需要即时应答,对CRC的计算时长要求不高,其影响的只是数据查询周期、扫描周期
当PLC作为从站时,需要及时应答,最好采用硬件验证CRC,但S7200未提供MODBUS 硬件,所以一定要用查表法

牺牲这512字节的表格内存空间是必要的。
这也就是一直未发现我的程序有问题的原因,因为一直用这段程序作为主站。
[ 此帖被醉湮邃虞在2014-03-03 14:58重新编辑 ]
棋牌比赛免费得实物,闲暇好去处
http://www.jj.cn/indexTG.html?promoterid=108502812
醉湮邃虞
醉湮邃虞话老黑
级别: 略有小成
精华主题: 0
发帖数量: 229 个
工控威望: 409 点
下载积分: 1577 分
在线时间: 209(小时)
注册时间: 2009-01-16
最后登录: 2015-03-18
查看醉湮邃虞的 主题 / 回贴
3楼  发表于: 2014-03-03 14:56
这两天折腾的!!!

终于搞定
115200 也不丢设备了
棋牌比赛免费得实物,闲暇好去处
http://www.jj.cn/indexTG.html?promoterid=108502812