dword dwords
大家好,小宜来为大家讲解下。dword,dwords这个很多人还不知道,现在让我们一起来看看吧!
学SIEMENS PLC必须清楚Dword、Word、Byte、Bit、高低位的关系,你清楚吗?
这几天跟客户搞个ADS通信对接!
客户输入给我方设备通信接口是两个WORD,但是我方程序写的是一个DWORD,该怎么转换呢?
倍福的PLC没有直接word转dword的指令,要自己计算赋值,归根结底数据转换都把它看成二进制数计算,问题都能迎刃而解。
我想了两种方法:
方法1,最笨的方法,也是最简单的方法,就是把word和dword都拆分成位计算,如下,
先声明word1和word2是两个word类型;
再声明dword1是一个dword类型;
dword1.0:= word[1].0;
dword1.1:= word[1].1;
dword1.2:= word[1].2;
dword1.3:= word[1].3;
dword1.4:= word[1].4;
dword1.5:= word[1].5;
dword1.6:= word[1].6;
dword1.7:= word[1].7;
dword1.8:= word[1].8;
dword1.9:= word[1].9;
dword1.10:= word[1].10;
dword1.11:= word[1].11;
dword1.12:= word[1].12;
dword1.13:= word[1].13;
dword1.14:= word[1].14;
dword1.15:= word[1].15;
dword1.16:= word[2].0;
dword1.17:= word[2].1;
dword1.18:= word[2].2;
dword1.19:= word[2].3;
dword1.20:= word[2].4;
dword1.21:= word[2].5;
dword1.22:= word[2].6;
dword1.23:= word[2].7;
dword1.24:= word[2].8;
dword1.25:= word[2].9;
dword1.26:= word[2].10;
dword1.27:= word[2].11;
dword1.28:= word[2].12;
dword1.29:= word[2].13;
dword1.30:= word[2].14;
dword1.31:= word[2].15;
方法2,通过二进制加法和乘法的方式计算得到,如下:
dword1:= word[1]*65536+word[2];
解读如下:
65536转换二进制是1 0000 0000 0000 0000;
word[1]*65536就是把word[1]左移16位,把这16位让给word[2];
word[1]*65536+word[2]就会组合成一个新数据,把dword[1]所以位赋值,得到dword[1]数据,完成转换。
本文dword,dwords到此分享完毕,希望对大家有所帮助。