概述
读指定地址的值(命令码为00000002,fins中的命令为0101)
参考文章中以读DM存储区举例,因为我实际用到的是CIO存储区,所以我以CIO存储区举例
2.1 按照字(word)读
查同一个作者的另一篇文章,欧姆龙OMRONPLC之HostLink通讯协议-FINS命令W字/位操作篇,CIO存储区按照字的代码为B0,读取CIO区地址0000中的值,读一个长度的字
发送:46494E53 0000001A 00000002 00000000 08000020 01000002 00FF0101 B0000000 0001
返回:46494E53 00000018 00000002 00000000 C0000200 02000001 00FF0101 000000C1
没有找到对08000020的解释
01000002的头和尾分别为接收方和发送方
0101是命令
B0000000前两位是CIO的地址码,接下去的四位是字对应的地址,我读的是0000,最后两位是位的地址,因为是按字读,所以这边就是00不用管
0001表示读一个字
返回码中的最后4个十六进制数中,两位(0000)表示成功,00C1就是读到的值
需要注意的是,一个字读出来值占两个十六进制,因为一个字的位有0-15,最大就是11111111 11111111(这是我的理解,不确定是不是有错误),所以一个字占两个十六进制。
2.2 按照位(bit)读
CIO存储区按位的代码为30,读取CIO区地址000104的值,读一个位(地址000104就是输入变量I01.04的地址)
发送:46494E53 0000001A 00000002 00000000 80000200 01000002 00FF0101 30000104 0001
接收:46494E53 00000017 00000002 00000000 C0000200 02000001 00FF0101 000001
这里接收到的和上面按字读同样是读一个长度,但是字一个长度由两个十六进制组成,而位由一个十六进制组成,注意区别,在写入的时候也要注意
读的时候还遇到过一个问题,命名CIO0100地址中是有值的,但是读出来全是0,那是因为犯了个错误,这里的CIO0100用的是十进制,发送的是十六进制,所以应该是0064地址,其实只是个小问题,仔细一点。
最后
以上就是从容水蜜桃为你收集整理的python 欧姆龙plc通信_电脑与欧姆龙plc通过网络通信的全部内容,希望文章能够帮你解决python 欧姆龙plc通信_电脑与欧姆龙plc通过网络通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复