主站中的&VB3000 是不是等于 主站中的VW3000 那么为什么我从站读不出来VW3000的值呢?我想要控制从站的输出Q 麻烦大神看看我的对不对?但是我的从站I是可以读出来的 问题就是我写不了控制从站输出的值
最佳答案
1、主站中的&VB3000 是不是等于主站中的VW3000,那么为什么我从站读不出来VW3000的值呢?
如果是主站读指令,主站中MBUS_MSG 的 DataPtr 脚写&VB3000,只是表明从从站读来的数据放在以VB300开始的一片连接的V存储区,至于这个V区是多大,则还与 Addr 脚指定的从站存储区的类型以及 Count 脚有关。
如果是写从站指令,还以MBUS_MSG 的 DataPtr 脚写&VB3000为例,区域大小还时与上面所说一样,那就要看从站接收区是什么了,是线圈还是保持寄存器区。比如是200系列,如果是保持寄存器区,则要看保持区在从站中是从V区的哪一个VB开始的。仔细了解主从站地址的对应关系。
2、
控制从站Q点。给你介绍两种办法。
若是直接写从站Q点,但要注意是以遵守从站协议中“以整字节地址边界(如Q0.0、Q2.0)开始、以8的整数倍为位个数”的规约。
那一写就是8个点,比如从Q0.0-Q0.7,对应了00001-00008;
主站写指令的相关管脚如下:
Addr:1
Count:8
DataPtr:&VB3000 此时VB300如果=2#0000 0101,只要通讯成功,则从站的 Q0.0、Q0.2就会为1。
另一种是用从站的 V 存储区控制 Q点,而这个 V 存储区对应的是从站的保持寄存器区。但读写保持区的最小单位是 1 个字,可以利用保持区的这个字的位来写程序控制从站的 Q 点。
这种方式比较灵活。
参考资料
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/020.html
提问者对于答案的评价:
谢谢 虽然现在弄起来了 但是不晓得为什么&VB3000依旧送不到从站的VW3000然而我把管教ADDR换成了40001 写入 用&VB1000就可以了 也不晓得是什么原因 还是多谢你了
最佳答案作者回复:
检查地址、库存储区有没有重叠
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc282877.html