电气电工
级别: 探索解密
精华主题: 0
发帖数量: 77 个
工控威望: 127 点
下载积分: 7842 分
在线时间: 53(小时)
注册时间: 2024-02-28
最后登录: 2024-11-14
查看电气电工的 主题 / 回贴
楼主  发表于: 2024-06-04 09:52
现在工控机做上位机,使用VB编程,PLC使用200smart。两者通过modbus-RTU与PLC的串口进行通讯。

好不容易把读PLC数据的程序写完了,然后发现给PLC写数据有很大局限性。

查手册发现只能给Q输出线圈和V保持寄存器写值。之前习惯是PLC里通过多个M0.0、M0.1这种互相配合,来控制1个Q的输出。但是RTU没法直接写入M值,我就想用V0.0来代替一下,但是写值到保存寄存器里是直接写入一个字的,一个字16位,可以有16个V0.0,但是只想写入其中某一个位而不改变其他的位,是没办法直接做到的。总不能先读一遍然后再写吧,这样很影响效率。再换个方式,如果把这1个字里只使用一个位其他不用,又太浪费了。

想请教下大佬们用工控机和smart通讯都是咋做的,可否指点下?


donxlr
级别: 正式会员
精华主题: 0
发帖数量: 66 个
工控威望: 93 点
下载积分: 885 分
在线时间: 10(小时)
注册时间: 2021-06-14
最后登录: 2024-11-14
查看donxlr的 主题 / 回贴
1楼  发表于: 2024-06-04 10:19
用高级语言不一定要用modbus协议,即使用modbus也优先考虑modbus tcp ,除了modbus 协议也可以使用s7通信协议,相对来说比modbus要灵活一些,各大触摸屏以及第三方上位机系统都是用的s7通信协议。还有就是modbus操作字 plc在通过字控制位也是一样的。