三菱MXComonentV50与C应用

2023-3-26 来源:不详 浏览次数:

今天讲一下C#通过三菱MX插件读取双字的另一种方法:

上一节讲了利用读出来的单字通过计算的方法,这种方法需要读取连续两个寄存器地址,然后进行计算,低位+高位*,这种方法用两个批量读取指令还有点区别。

今天介绍另一种方法,我们知道不管单字还是双字,在PLC中都是以二进制存储的,可以以10进制的方式展示,也可以用16进制进行展示,这个方法就是读出来两个单字的值,转换成16进制,然后把两个16进制组合成一个4个字节的16进制,再转换成10进制,就是我们想要的双字的值

这里面就涉及几个知识点:

1、批量读取指令ReadDeviceBlock和ReadDeviceBlock2这两个指令任意选择,因为返回的数据转换成16进制是一样的,首先定义一个数组,iRet[2],低位存放于iRet[0]中,高位存放于iRet]1]中;

2、数值转换成16进制字符串,用Convert.tostring指令

后面的16代表把数值转换成16进制的字符串,如果不加16,将转换成10进制的字符串。

这里面要特别注意一点,低位的字符串转换完成后,可能少于4位,比如转换完成后,低位的只有一个字符A,高位的只有一个字符B,那二个字符串相加,结果为BA,实际我们需要的结果是BA,低位字符串如果不中4位,需要补0的,用程序来解决

首先判断低位字符串是否小于4位,然后依次补0,这里面只有三个情况,所以就用三个if来判断了。

同理,高位也同样转换成16进制字符串,不用担心不足4位的情况。

3、把高低位字符串相加,得到新的字符串,再把16进制的字符串再次转换回整型数值

intvalue

value=Convert.toInt32(HD+LD,16)

这里面16进制字符串转换成整形,同样的后面要加一个数字16,代表这是16进制

至此Value的值就是我们想要的双字的值。

4、最后为了在TextBox中显示,还要把整形转换成字符串

最后完整程序如下:

为了程序简洁,省略了一此中间变量,供大家参考。

转载请注明:
http://www.wanruiguanye.com/bzhl/77435603.html
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有 2014-2024
    今天是: