在S7-1200中创建优化的DB1,并创建3个变量:data,A,B,如图1:
图1.优化访问的DB块变量
在OB1中,位地址“数据块_1”.A和“数据块_1”.B分别串联了片段访问的“数据块_1”.data.%X0和“数据块_1”.data.%X10,并且将“数据块_1”.data传送到MD0中,如图2:
图2. 应用片段访问置位DWord变量的相关bit位
当在S7-1200中修改“数据块_1”.A和“数据块_1”.B为true时,如果按bit位的顺序进行排列,也许你会认为M区中对应的是M0.0和M1.2将被设置为true?
那么结果是不是这样的呢?请继续往下看。
首先,看一下优化数据块中,是如何将存储区(例如Byte,Word或DWord)划分为更小的存储区(例如bit),这种划分方式也称为存储器分片,使用片段访问可方便地对操作数按位、字节、字进行访问。
如图3:
图3.bit位在优化访问的变量中的排布
从图中可见,对于DWord的32个bit位,从右往左依次是X0——>X31。
详细信息可点击阅读原文进行了解。
然后,我们再看一下标准地址的存储顺序,例如MD0,由字节MB0~MB3组成,MB0为最高字节,MB3为最低字节,这是西门子专有的存储方式:“高位低存”(也许,这种存储方式突然就颠覆了您之前的认识!)。
MB0在最左侧,M0.7最高位,往右顺序排列为M0.6……M0.0。
MD0中各bit位的排列顺序如下,M0.7为最高位,M3.0为最低位。
如图4:
图4.bit位在标准地址访问中的排布
通过上述的对应分析,不难看出,优化变量中的X0和X10位,传送到MD0时,应该是M3.0和M2.2。
并且,在监控表中将MD0的32个bit全部展开监视,也验证了这个结果。
如图5:
图5.监视MD0的32个bit位
通过分析可见,标准地址和优化DB存储的bit顺序是有区别的,当使用片段访问时,一定要注意这个规则,小小的片段访问也有大大的智慧啊!