关于SCL编程中的数据类型

已锁定

xiaode

  • 帖子

    1342
  • 精华

    2
  • 被关注

    49

论坛等级:奇侠

注册时间:2008-07-18

钻石 钻石 如何晋级?

关于SCL编程中的数据类型

605

5

2010-07-05 09:02:45

我使用SCL变了一个功能块,但是编译之后报无效的数据类型,大家帮忙看一下,是怎么回事?
FUNCTION FC201: void
VAR_INPUT
OPEN_CLOSE_TIMES: INT:=0;
OPEN_TIME_S: INT:=0;
CLOSE_TIME_S: INT:=0;
A_R: REAL:=0.0;
A_OPEN_H: REAL:=0.0;
A_OPEN_L: REAL:=0.0;
A_CLOSE_H: REAL:=0.0;
A_CLOSE_L: REAL:=0.0;
B_R: REAL:=0.0;
RESULT_OPEN_H: REAL:=0.0;
RESULT_OPEN_L: REAL:=0.0;
RESULT_CLOSE_H: REAL:=0.0;
RESULT_CLOSE_L: REAL:=0.0;

OPEN_PRO_NUM: INT:=0; // LEAK TEST MECHINE PROGRAMME SELECT WHRN THE CCV VALVE OPEN
CLOSE_PRO_NUM: INT:=0; // LEAK TEST MECHINE PROGRAMME SELECT WHRN THE CCV VALVE CLOSE
END_VAR

VAR_OUTPUT
TEST_OK: BOOL:=FALSE;
TEST_NG: BOOL:=FALSE;
CCV_OPEN_OPEN: BOOL:=FALSE;
CCV_OPEN_CLOSE: BOOL:=FALSE;
CCV_CLOSE_OPEN: BOOL:=FALSE;
CCV_CLOSE_CLOSE: BOOL:=FALSE;
RELEASE_VALVE_1_OPEN: BOOL:=FALSE;
RELEASE_VALVE_1_CLOSE: BOOL:=FALSE;
RELEASE_VALVE_2_OPEN: BOOL:=FALSE;
RELEASE_VALVE_2_CLOSE: BOOL:=FALSE;
OPEN_STATUS: BOOL:=FALSE;
CLOSE_STATUS: BOOL:=FALSE;
OPEN_TIMEOUT: BOOL:=FALSE;
CLOSE_TIMEOUT: BOOL:=FALSE;
OPEN_CLOSE_NOW_TIMES: INT:=0;
PRO_NUM: INT:=0;
A_OPEN_RECORD: ARRAY[1..10]OF REAL:=0.0;
A_CLOSE_RECORD:ARRAY[1..10]OF REAL:=0.0;
B_OPEN_RECORD:ARRAY[1..10]OF REAL:=0.0;
B_CLOSE_RECORD:ARRAY[1..10]OF REAL:=0.0;
RESULT_OPEN_RECORD:ARRAY[1..10]OF REAL:=0.0;
RESULT_CLOSE_RECORD:ARRAY[1..10]OF REAL:=0.0;
OPEN_RESULT:ARRAY[1..10]OF BOOL:=FALSE;
CLOSE_RESULT:ARRAY[1..10]OF BOOL:=FALSE;
END_VAR

VAR_TEMP
i: INT ;
OPEN_T_S: INT;
CLOSE_T_S: INT;
END_VAR
LABEL
LAB1;
LAB2;
END_LABEL
OPEN_CLOSE_NOW_TIMES:=1;
WHILE OPEN_CLOSE_NOW_TIMES<= OPEN_CLOSE_TIMES DO
// CCV VALVE OPEN
LAB1: OPEN_STATUS:=TRUE;
CLOSE_STATUS:=FALSE;
CCV_OPEN_OPEN:=TRUE;
CCV_OPEN_CLOSE:=FALSE;
CCV_CLOSE_OPEN:= NOT CCV_OPEN_OPEN;
CCV_CLOSE_CLOSE:= NOT CCV_OPEN_CLOSE;
RELEASE_VALVE_1_OPEN:=NOT CCV_OPEN_OPEN;
RELEASE_VALVE_1_CLOSE:=NOT CCV_OPEN_CLOSE;
RELEASE_VALVE_2_OPEN:=RELEASE_VALVE_1_OPEN;
RELEASE_VALVE_2_CLOSE:=RELEASE_VALVE_1_CLOSE;
PRO_NUM:=OPEN_PRO_NUM;
M200.4:=DB500.DBX8.0 AND NOT M200.5;
M200.5:=DB500.DBX8.0 ;
IF M200.4 THEN
OPEN_T_S:=OPEN_T_S+1;
END_IF;
IF OPEN_T_S>OPEN_TIME_S THEN
// GOTO ;
OPEN_TIMEOUT:=TRUE;
A_OPEN_RECORD[OPEN_CLOSE_NOW_TIMES]:=A_R;
EXIT; ////////////////////////////////////// MODIFY
ELSE
OPEN_TIMEOUT:=FALSE;
END_IF;

IF A_R > A_OPEN_L AND A_R < A_OPEN_H THEN
IF (A_R-B_R) > RESULT_OPEN_H AND (A_R-B_R) > RESULT_OPEN_L THEN
OPEN_RESULT[OPEN_CLOSE_NOW_TIMES]:=TRUE;
A_OPEN_RECORD[OPEN_CLOSE_NOW_TIMES]:=A_R;
B_OPEN_RECORD[OPEN_CLOSE_NOW_TIMES]:=B_R;
RESULT_OPEN_RECORD:=A_R-B_R;
GOTO LAB2;
ELSE
OPEN_RESULT[OPEN_CLOSE_NOW_TIMES]:=FALSE;
A_OPEN_RECORD[OPEN_CLOSE_NOW_TIMES]:=A_R;
B_OPEN_RECORD[OPEN_CLOSE_NOW_TIMES]:=B_R;
RESULT_OPEN_RECORD:=A_R-B_R;
EXIT;
END_IF;
ELSE
GOTO LAB1 ;
END_IF;
// CCV VALVE CLOSE
LAB2: OPEN_STATUS:=false;
CLOSE_STATUS:=TRUE;
CCV_OPEN_OPEN:=FALSE;
CCV_OPEN_CLOSE:=FALSE;
CCV_CLOSE_OPEN:= NOT CCV_OPEN_OPEN;
CCV_CLOSE_CLOSE:= NOT CCV_OPEN_CLOSE;
RELEASE_VALVE_1_OPEN:=NOT CCV_OPEN_OPEN;
RELEASE_VALVE_1_CLOSE:=NOT CCV_OPEN_CLOSE;
RELEASE_VALVE_2_OPEN:=RELEASE_VALVE_1_OPEN;
RELEASE_VALVE_2_CLOSE:=RELEASE_VALVE_1_CLOSE;
PRO_NUM:=CLOSE_PRO_NUM;
M200.6:=DB500.DBX8.0 AND NOT M200.7;
M200.7:=DB500.DBX8.0 ;
IF M200.6 THEN
CLOSE_T_S:=CLOSE_T_S+1;
END_IF;
IF CLOSE_T_S>CLOSE_TIME_S THEN
// GOTO ;
CLOSE_TIMEOUT:=TRUE;
A_CLOSE_RECORD[OPEN_CLOSE_NOW_TIMES]:=A_R;
EXIT; ////////////////////////////////////// MODIFY
ELSE
CLOSE_TIMEOUT:=FALSE;
END_IF;
IF A_R > A_CLOSE_L AND A_R < A_CLOSE_H THEN
IF (A_R-B_R) > RESULT_CLOSE_H AND (A_R-B_R) > RESULT_CLOSE_L THEN
CLOSE_RESULT[OPEN_CLOSE_NOW_TIMES]:=TRUE;
A_CLOSE_RECORD[OPEN_CLOSE_NOW_TIMES]:=A_R;
B_CLOSE_RECORD[OPEN_CLOSE_NOW_TIMES]:=B_R;
RESULT_CLOSE_RECORD:=A_R-B_R;
// GOTO LAB2;
OPEN_CLOSE_NOW_TIMES:=OPEN_CLOSE_NOW_TIMES+1;
ELSE
CLOSE_RESULT[OPEN_CLOSE_NOW_TIMES]:=FALSE;
A_CLOSE_RECORD[OPEN_CLOSE_NOW_TIMES]:=A_R;
B_CLOSE_RECORD[OPEN_CLOSE_NOW_TIMES]:=B_R;
RESULT_CLOSE_RECORD:=A_R-B_R;
EXIT;
END_IF;
ELSE
GOTO LAB2 ;
END_IF;

END_WHILE;
// Instruction Section
;

END_FUNCTION
无效的数据类型在的句子 分别是,
RESULT_OPEN_RECORD:=A_R-B_R;
RESULT_CLOSE_RECORD:=A_R-B_R;
我想问一下到底是怎么回事?
如果使用DWORD_TO _REAL 还是错误,并报无效的更多
关于SCL编程中的数据类型 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。