python 欧姆龙plc通信_电脑与欧姆龙plc通过网络通信

读指定地址的值(命令码为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地址,其实只是个小问题,仔细一点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值