SCL程序转换类型问题

分享到:
242
下一篇 >

菜鸟:

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 怎么回事呢?谢谢大家了!问把收到的字符串转换成int。用SCL

侠圣:

1、记住:STRING变量使用前需初始化。例如:在声明变量时初始化(barcode1:STRING[5]:='wr';)

,或者可先声明变量(barcode1:STRING[5];),再赋值(barcode1:='wr';)

2、由于FC块不能在声明变量时初始化赋值,因此SCL编译时出错,所以可选用带背景DB的FB块。

3、如果确实需要选用FC块,则可以将STRING变量赋值放置在DB块或M存储区中调用。

游民:

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中的输入定义为复杂数据类型的话,不能在块中直接使用。请问什么为复杂数据类型?

奇侠:

什么为复杂数据类型?

请看STEP7的帮助的附录部分的数据类型和参数类型的介绍。

侠圣:

1、复杂数据类型(Complex Data Types)包括DATE_AND_TIME、STRING、ARRAY、STRUCT,这四种类型。

2、而STRING不正好属于复杂数据类型吗?所以我就没弄懂你这SCL编译是咋通过的!!

侠士:

楼主,我个人认为‘ELSE’应该是不能插入在‘CASE..OF...’与‘END_CASE’之间的。

你可能感兴趣: 工控菜鸟园 自动化系统 SCL
无觅相关文章插件,快速提升流量