我一直在编写一个程序,它通过Modbus RTU分析功率读取无功功率值。
无功功率由32位表示,而MSb确定符号。程序不读取整个32位而不是读取两个16位字。
读取32位后,我需要将值转换为REAL 数据类型。所以我在结构化文本中写了以下转换代码:
rQs: REAL := 0.0;
rQs := DINT_TO_REAL(DWORD_TO_DINT((SHL(WORD_TO_DWORD(stLovato_power.iQ_HW),16) + WORD_TO_DWORD(stLovato_power.iQ_LW))))/100.0;
(结构stLovato_power在其项目中包含16位字,其形成32位无功功率表示)。
似乎阅读没问题,但转换中的某些内容是错误的。尽管iQ_HW和iQ_LW中的值都非零,我仍然得到0。有人可以告诉我
我犯了哪个错误?
感谢。
答案 0 :(得分:0)
我刚刚解决了这个问题。代码是正确的,但程序模块没有由处理器处理。大多数模块变量都有一些值(这些值实际上是在不同的模块中计算的),因为我的意思是模块已被处理。劳驾。