IF WORD_TO_BLOCK_DB(#I_wDBNO).DX(IDX := #"I_iResetConsumptionAddr.byte" + (#IO_i - 1) * #I_iInterval, BIT := #"I_iResetConsumptionAddr.bit")
AND NOT #I_bDosingUnitOn
THEN
WORD_TO_BLOCK_DB(#I_wDBNO).DD(#I_iOldConsumptionAfterResetAddr + (#IO_i - 1) * #I_iInterval) := WORD_TO_BLOCK_DB(#I_wDBNO).DD(#I_iNewConsumptionBeforeResetAddr + (#IO_i - 1) * #I_iInterval);
END_IF;
另外,使用WORD_TO_BLOCK_DB做间接寻址时,需要注意以下几点:
-
访问的DB必须是没有被优化的,因为优化后的块只能进行符号寻址;
-
WORD_TO_BLOCK_DB(#I_wDBNO)中的DB块号必须是WORD类型。
3.如果要对浮点型的DB块数据访问,需要用DWORD_TO_REAL()指令进行转换,这里不支持隐式转换。