| 作者 | 主题 |
|---|---|
|
520yhlily 新手 经验值:37 发帖数:30 精华帖:1 |
楼主
主题:请教一下,S7200与智能仪表的Modbus通讯
大家好,我最近做个通讯的项目,用的是S7200 CPU226和5个智能仪表的通讯,走的modbus协议,这里面遇到几个奇怪的问题,拿出来和大家说说,希望大家多给点建议!
先把编程思路简单说一下: 我用的MBUS指令库直接调用的程序,设置好参数即可; MBUS_CTRL:波特率9600,无校验,超时时间1000ms,上电初始化后,Done=1,无错误 MBUS_MSG:Slave=1(和仪表地址一样),RW=0,Addr=30001,Count=2,DataPtr=&VB100,上电执行,Done=1,无错误; 我的仪表上需要读取到的工程量显示1000,我的程序读上来的数据VW100=17865,VW101=19875,不管我怎么转换都得不到1000,我尝试改变Addr(只要不是30001)这个地址,程序初始化后MBUS_MSG就会报错102,改变Count值也报错102,我郁闷了~~ 最后没有办法,我改回原来的30001,接着我改变仪表上显示的工程量,程序里读出来的数据也变,搞得我不知道是Addr不对,还是程序哪里有问题; 这个仪表的地址和PLC时怎么对应的呢?那个30001和40001不知道是什么意思~~~ 请大家帮忙看一下,不胜感激啊~~~ |
|
520yhlily 新手 经验值:37 发帖数:30 精华帖:1 |
22楼
主题:回复:请教一下,S7200与智能仪表的Modbus通讯
大家好啊,目前问题得到解决,谢谢各位大力的帮助!!!
仪表的数据格式为国际标准的32位浮点数,进过modbus协议读取后进入PLC,在PLC里被转化成16进制数,其实在监控里面,把对应的指针指向的数据区格式调成浮点数格式,一切就明了了,地址是30001,计数2,这些参数都是对的,关键还是没有和做仪表的软件工程师仔细的沟通,这里也尝试了版主的方法,完全一样~ 其实没有想象的那么难,因为第一次做这个通讯,好多都不明白,造成好多不应该的错误,再次感谢大家的帮忙~~~~~~ |