FUNCTION_BLOCK FB111
// Block Parameters
VAR_INPUT
// Input Parameters
StartAddr:INT; //起始通道地址
ChlNumber:INT; //要读却数据的个数
Ratio:REAL; //系数
BuffAddr:ANY; //目的地址
ptr AT BuffAddr :ARRAY[0..4] OF WORD;//解析ANY数据类型
END_VAR
VAR_IN_OUT
// I/O Parameters
i:INT;
InteAddr:WORD;
END_VAR
VAR
offset1:INT;
offset2:INT;
offset:INT;
END_VAR
VAR_TEMP
// Temporary Variables
CtlDB:WORD;
CtrBit:WORD;
j:INT;
END_VAR
InteAddr:=ptr[2]; //取得目的地址的DB块号
j:=0;
// i:=WORD_TO_INT(ptr[1]); 目的地址的数据个数
offset1:=WORD_TO_INT(ptr[3])*8192; //实际地址的高位
offset2:=WORD_TO_INT(ptr[4])/8; //实际地址的低位
offset:=WORD_TO_INT(INT_TO_WORD(offset1) OR INT_TO_WORD(offset2)); //得到实际

这是一个FUNCTION_BLOCK示例,用于从指定起始地址读取多个模块的温度值,经过系数转换后存储到目标DB块中。通过循环遍历通道,将读取到的IW[]数据除以比率并转换为DWord,然后存入指定的DB块地址。在实际应用中,可能需要调整地址偏移量和数据类型以适应不同的硬件配置。
最低0.47元/天 解锁文章
1707

被折叠的 条评论
为什么被折叠?



