三菱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中显示,还要把整形转换成字符串
最后完整程序如下:
为了程序简洁,省略了一此中间变量,供大家参考。