三菱GX Works 2中输入数据的平均值

时间:2018-02-06 15:17:07

标签: plc codesys

我需要从三菱输入模块Q64AD获得输入信号的平均值。我在结构化文本中使用GX Works 2。

这就是我以前在Codesys中获得平均值的方式:

timer_sr(IN:= NOT timer_sr.Q , PT:= T#5s );

SUM1:= SUM1 + napr1;
Nsum:=Nsum + 1;

IF timer_sr.Q THEN
    timer_sr(IN:= NOT timer_sr.Q , PT:= T#5s);
    outsr := SUM1 /Nsum;
    Nsum := 0;
    SUM1 := 0;
END_IF;

napr1 - 来自模块

的值

这段代码在GX Works 2中不起作用,我认为因为SUM1不是INT数据类型,而只是Word [signed]类型。

有没有办法让SUM1成为INT类型,或者可能是该解决方案还有另一种逻辑?

1 个答案:

答案 0 :(得分:0)

在其他平台上它应该可以工作,但编译器发出警告,所以我猜它仍然会编译?当然,如果价值为负,则会出现问题。

您可以通过IEC函数WORDINT转换为WORD_TO_INT。我不确定您的系统是否符合标准,但如果确实如此,请尝试以下方法: WORD_TO_INT(SUM1)。如果SUM1> 65535然后会出现问题,因为INT的上限是32767。

如果这没有帮助,您能否提供更多详情?怎么不工作?

聚苯乙烯。 WORD是无符号数据类型,未按您编写的那样签名。