【问题标题】:A weird For To Loop in CodesysCodesys 中一个奇怪的 For To 循环
【发布时间】:2023-02-05 21:42:21
【问题描述】:

我试图在一个数组中创建一个定时循环,但我发现有些东西不正常,所以我回到了一个更简单的例子。现在我发现我的循环一直跳过 1 个索引并放置一个值。所以我只得到 index0、index1、index3 的值。我不明白为什么会这样,我会展示我的代码。

FOR vCount := 0 TO 9 DO
    vVsample[vCount] := INT_TO_REAL(WORD_TO_INT(vVin)); 
    vCount := vCount +1;
END_FOR

结果将是:

vVsample[0] = value vVin 
vVsample[1] = did not change the value and is therefore 0
vVsample[2] = value vVin
vVsample[3] = did not change the value and is therefore 0
vVsample[4] = vVin

等到 vCount = 10

我正在使用 Codesys V2.3 并在模拟模式下对此进行了测试

【问题讨论】:

    标签: plc codesys


    【解决方案1】:

    FOR 循环已经增加了迭代器,因此 vCount := vCount +1; 行是问题所在。只需删除它:

    FOR vCount := 0 TO 9 DO
        vVsample[vCount] := INT_TO_REAL(WORD_TO_INT(vVin));
    END_FOR
    

    或者换成 while 循环:

    vCount := 0;
    WHILE vCount <> 10 DO
        vVsample[vCount] := INT_TO_REAL(WORD_TO_INT(vVin));
        vCount := vCount +1;
    END_WHILE
    

    【讨论】:

    • 谢谢我才知道
    【解决方案2】:

    我自己已经找到了答案,不需要将 vCount 加 1。 这样做时,它将始终跳过数组的一个索引。

    我的愚蠢错误

    【讨论】:

    • 可能发生在我们最好的人身上:)
    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 2019-02-11
    • 2019-04-30
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多