小弟遇到了这样一个问题,S7-300编程时,现在需要对数据块DB1中DB1.DBB0, DB1.DBB2, DB1.DBB4, DB1.DBB6,......一直到DB1.DBB584逐一与16#07进行与运算后转换为整数,然后将得到的整数乘以256之后,再逐一加DB1.DBB1, DB1.DBB3, DB1.DBB5, DB1.DBB7,......一直到DB1.DBB585转换对应的整数,最后将得到的293个整数连续写进DB2中,由于数据太多,需要使用循环程序,但数据块中的元素好像不能动态引用,有没有高手知道怎么解决,万分感激!</p>
问题补充:
(阿鸣)的建议很好,但是我目前的全局程序是使用梯形图编写的,我想知道实现我需要的功能可否使用梯形图编写?能否给出详细的解决方案或者程序段,其实我要实现的是远程批量温度采集,但是采集到的数据需要处理,详细的数据处理过程见附注:
( 注:TH-TL 是温度数据高位字节,低位字节。
数据字节定义:
TH :
B7 B6 B5 B4 B3 B2 B1 B0
0 0 0 0 F T6 T5 T4
TL :
B7 B6 B5 B4 B3 B2 B1 B0
T3 T2 T1 T0 LT1 LT2 LT3 LT4
TH - F: 为符号位,= 1,为负温; =0,为正温。
TH-高四位:= 0000,保留;
TH中 BIT2 ? BIT0: 为温度数据的高3位,T6为最高位;
TL中 BIT7 ? BIT0: 为温度数据的低8位,LT4为最低位;(LT1?LT4为小数部分)
温度值分辨率为: 0.0625 ℃ (1/16 ℃)
温度计算公式为:
正温:TMP = ((TH & 07H)*256+TL)*0.0625
负温:TMP = -((TH & 07H)*256+TL)*0.0625
例如:TH = 01H TL = 76H
则: 温度值 = ( 1 * 256 + 118)*0.0625 = 23.375 ℃
)
图片说明: 1,数据处理说明 |