smart200 ST30与 ST20 modbus通讯不上

smart200 ST30与 ST20  modbus通讯,刚开始学用,不知到哪里有问题,通讯不上,主站用的ST30,从站用的ST20,两个PLC用485线连接的,目前还是通讯不上,请教一下到底是哪里出了问题。

问题补充:
补充一下,我这个位数也试过1个和2个都试过也不行,还有就是我这两个程序里只有通讯程序,所以地址都没有重叠的可能

图片说明:

smart200 ST30与 ST20  modbus通讯不上    smart200 ST30与 ST20  modbus通讯不上    smart200 ST30与 ST20  modbus通讯不上    smart200 ST30与 ST20  modbus通讯不上   

最佳答案

你的附图,从左至右,记为图1、图2、图3、图4.
图1是主站写从站的,将主站VB2000开始的100个字(200个字节)的数据发送给从站。
图3中,对主站VB2000的最低位V2000.0做了一个改写。你采用了主站通信指令MBUS_MSG的完成位done指定的M0.1作为停止条件,M10.0作为启动条件控制V2000.0的置位、复位。主站写从站连续多个保持性寄存器(功能码16)数据帧(209个字节),从站响应回传数据帧(8个字节),计算起始位、停止位、报文头(地址域1个字节)、报文尾(CRC校验码),耗费的时间大约是传输2170个比特耗费的时间,约0.22秒。理论上M0.5的周期1秒内,只有0.22秒M0.1为0,0.78秒是1,故而V2000.0大多数时间是0.
至于你程序监控,看到V2000.0为1,只能是恰好碰到了。这是计算机与PLC通讯机制的问题。深入的研究可以参考:西门子专家赵欣老师的讲解。(担心你一下子看不懂)
http://www.ad.siemens.com.cn/service/elearning/series/288.html
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1621155&b_id=25&s_id=&num=65#anch
图4初始化从站,把保持性寄存器区映射在以VB2000开始的1000个字间。从主站接受的数据自然存在VB2000开始的寄存器内,主站的VB2000对应从站的VB2000,主站VB2001对应从站VB2001,以此类推。
图2中,从站接收到的数据V2000.0驱动其输出Q0.0。由于主站中V2000.0大多数时间时间为0,Q0.0则多数时间为0,特别是还涉及通信数据一致性问题(通信的过程并不是在PLC一个扫描周期完成的,往往多个周期分段处理,数据又可能随着程序执行而在等待通信处理的过程中本身发生改变)。你看不到Q0.0被点亮十分正常。这也许就是所说的通信不上的判断依据。你亲眼所见未必为真,必须透过现象看本质。
为了测试你的通信本身是否成功,建议你读写IO点,直接改写V区数据(初始化、或者在程序中改写),不要借助你通信中的done位。

提问者对于答案的评价:
问题已经找到,确定是串口线的问题,串口线是交叉连接线,感谢大家的帮助,谢谢大家!

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

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午6:07
下一篇 2020年10月30日 下午6:07

相关推荐

发表回复

登录后才能评论