S7-200与希望森兰SB200变频器做Modbus通讯的问题?

基本配置:
CPU是226,变频器SB200,通讯参数设定波特率9600,1个起始位,8个数据位,1个停止位,无校验。

故障现象:
读指令间歇性的报03错误,通讯超时,读取的数据一直未零。

问题1:寄存器地址应该怎么写?
变频器的寄存器地址是四位16进制地址,PLC的Mbus_MSG指令要求5位十进制地址。变频器功率参数的地址为320DH,转成十进制是12813.Mbus_MSG指令中这个地址应该咋写呢?
参考附件图片里的寄存器特点。

问题2.为啥老是通讯不上
我用的支持中心下载的示例程序,还是不行,程序段如下:
TITLE=程序注释: modbus 主站读写程序
// 
// 注意:1. modbus RTU主站功能是通过指令库中预先编好的程序功能块实现的,该库只针对Port 0口有效
//             2. modbus RTU主站使用了一些用户中断,在用户程序中不能禁止中断
//             3. 该例程访问的为一个从站,若访问不同的从站,可通过改变从站地址来实现。
// 
Network 1 
// 第一扫秒周期, 复位各标志位和起始位
LD     SM0.1
R      M2.0, 8
R      M4.0, 8
R      M0.0, 2
Network 2 
// modbus 主站初始化完成后, 启动读写指令
LD     M0.0
EU
S      M0.1, 1
Network 3 // 网络标题
LD     SM0.0
=      L60.0
LD     SM0.0
=      L63.7
LD     L60.0
CALL   SBR1, L63.7, 9600, 0, 1000, M0.0, MB1
Network 4 
LD     M0.1
O      M2.3
=      L60.0
LD     M0.1
EU
LD     M2.3
EU
OLD
=      L63.7
LD     L60.0
CALL   SBR2, L63.7, 1, 0, 412814, 1, &VB1500, M2.1, MB3
Network 5 
// 读取从站保持寄存器的数据完成,复位请求
LD     M2.1
R      M2.3, 1
R      M0.1, 1
Network 6 
// 读取从站输入点
LD     M2.1
=      L60.0
LD     M2.1
EU
=      L63.7
LD     L60.0
CALL   SBR2, L63.7, 1, 0, 412824, 2, &VB2000, M2.2, MB4
Network 7 
// 读取从站输入点完成,复位请求
LD     M2.2
R      M2.1, 1
Network 8 
// 写从站实际输出值
LD     M2.2
=      L60.0
LD     M2.2
EU
=      L63.7
LD     L60.0
CALL   SBR2, L63.7, 1, 1, 12801, 2, &VB3000, M2.3, MB5
Network 9 
// 写从站实际输出值完成,复位请求
LD     M2.3
R      M2.2, 1

问题补充:
二楼关于地址的讲法不太确切,用哪种方式写地址的话,编译通不过,提示指令操作数非法!

继续求解……

图片说明:

S7-200与希望森兰SB200变频器做Modbus通讯的问题?    S7-200与希望森兰SB200变频器做Modbus通讯的问题?   

最佳答案

你的参数表里
3200H,对应地址为43201或43200你自己试看看吧,其他的都是顺序就是了,指令里写w#16#43200
还有你这样也看不出什么来,你用个串口监视器监控下看看有没有发出正确的命令,还有你的485线可能需要交叉互换,你要换下看看。例子程序本身没有问题,看看线路和变频设置对不对。

提问者对于答案的评价:
后来证明程序确实没问题,参考http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=112731&cid=1028
里面的评价内容。

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc217817.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月29日 下午4:56
下一篇 2017年11月29日 下午4:56

相关推荐