SCL程序转换问题

FUNCTION FC11 : INT
VAR_INPUT
    barcode1:STRING[5];
    barcode2:STRING[5];
END_VAR
VAR_temp
    x1:INT;
    x2:INT;
END_VAR

BEGIN
x1:=STRING_TO_INT(barcode1);//编译不成功处
x2:=STRING_TO_INT(barcode2);
   IF x1<>0 AND x2<>0 AND x1<>x2 THEN
      CASE x1 of
      92:
        FC11:=8;
      07:
        FC11:=1;
      62:
        FC11:=2;
      ELSE
        FC11:=0;
      END_CASE;
   END_IF;   
END_FUNCTION
E:illegal parament assignment 编译错误。
请问怎么处理,谢谢大家。用SCL

最佳答案

FC或FB的I/O区域中复杂数据类型变量实际上是一个指针,所以要用临时变量转一下
改成下面这样就可以了
FUNCTION FC11 : INT
VAR_INPUT
    barcode1:STRING[5];
    barcode2:STRING[5];
END_VAR
VAR_temp
    x1:INT;
    x2:INT;
    bt1:STRING[5];
    bt2:STRING[5];
END_VAR

BEGIN
bt1 := barcode1;
bt2 := barcode2;
x1:=STRING_TO_INT(bt1);//编译不成功处
x2:=STRING_TO_INT(bt2);
   IF x1<>0 AND x2<>0 AND x1<>x2 THEN
      CASE x1 of
      92:
        FC11:=8;
      07:
        FC11:=1;
      62:
        FC11:=2;
      ELSE
        FC11:=0;
      END_CASE;
   END_IF;   
END_FUNCTION

提问者对于答案的评价:
谢谢,编译通过了。但还有些不太明白的地方?
1.FC中的输入定义为复杂数据类型的话,不能在块中直接使用。请问什么为复杂数据类型?

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc235241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐