2 参数部分
2.2 命令索引
2.2.9 CONTINUE
2.2.9.1摘要信息
阻止先前运行的停止。.
2.2.9.2语法
CONTINUE
2.2.9.3描述你能用系统变量$ADVANCE定义先前控制器执行的中断如何动作。在指令关于外围(例如 输入/输出指令)的情况下,计算机先前的运行总是被停止。如果你不想这样的事情发生,
CONTINUE语句必须在相应的指令前被编程。
CONTINUE语句总是用于下列指令行,甚至是空白行。
2.2.9.4例子
使用$OUT防止运行的停止:
CONTINUE
$OUT[1]=TRUE CONTINUE
$OUT[2]=FALSE
ANOUT,HALT,WAIT,PULSE
长沙工控帮教育科技有限公司
41 2.2.10.1 摘要信息
已经被“CHANNEL”语句承认的输入输出通道能用 “COPEN”语句打开。
2.2.10.2 语句
COPEN(Channel_Name, Handle)
自变量 类型 解释
Channel_Name 在“CHANNEL”语句承认的通道名
Handle INT 用户定义的变量
2.2.10.3 描述
被CHANNEL语句承认的输入输出通道能用 “COPEN”语句打开。
“Handle”变量确定下列存取有关的通道。如果系统拒绝打开通道,则返回0。
预先确定的变量“$CMD”是命令执行一般的打开可用到的。
2.2.10.4 例子
开放名为:“SER_2”的通道和“HANDLE”。
COPEN(:SER_2,HANDLE)
程序全部的例子都可以在“CHANNEL”章中找到。
长沙工控帮教育科技有限公司
42
2.2.11 CREAD
2.2.11.1 摘要信息
从通道中读取数据。
应用的例子: 在KRC1和外围数据(PC,智能传感器...) 数据交换(读语句)。
“CREAD”语句用于从打开的通道中读取数据。在这有两个区别::
主动读入
程序请求通过通道进行输入。通道驱动器提出输入请求并将接受到的数据作为 结果返回到CREAD语句 。
被动读入
预先确定的变量(INT$DATA_SER1orINT$DATA_SER2),未被请求的数据到达 后通过增加通道驱动器,每个通道都是这样的。当执行热启动或当打开/关闭通 道时变量初始化为0。在系统等待读入请求的反馈信号方面也是有差别的:绝对 的或有条件的。绝对的意思是系统等待直到通道给出请求的数据。在有条件的 情况下,系统检查数据是否有效。
2.2.11.2 语句
自变量 类型 解释
Handle INT
长沙工控帮教育科技有限公司
由“COPEN”转移变量。注意:变量“$CMD”将被拒绝43 量的列举类型第一个元素。
“CMD_STAT”能有与“CREAD”有关的下列值:
CMD_OK 命令顺利的执行; Mode MODUS_T “MODUS_T”是列举类型,它有与下列“CREAD”有
关的值:
ABS 激活读入通道。函数等待到通道产生一个可用的 数据块或等待到“Timeout”失败。
COND 未被请求的通道读入。
SEQ 从以前被请求使用“ABS”或“COND”或作为 结果返回“CWRITE”的字节补偿读入完成了的数据块
长沙工控帮教育科技有限公司
44 Timeout REAL 参数“TIMOUT”可被用于指定时间,在等待数据块失败之后。
Timeout的值0.0允许无止境的等待。.
一个值大于60或是为负值,则数值是无效的。与系统有关的错误在等
“SER_1”和“SER_2”。
INT $DATA_SER1 或 INT $DATA_SER2,
在未被请求的数据到达后,这些数据通过通道驱动增加。当系统启动或通道打开或关闭 认信息“INVALIDHANDLE”被显示。
长沙工控帮教育科技有限公司
45 其它方式的规定或非初始化的变量导致一个被变量“STATUS”发现错误 。如果读“ABS”“COND”
成功,那么数据块的数据是先前被承认的,就像他们完全的读出。
文本是按照格式规定的程序段返回的。值决定被分配的适当的变量,系统检查值之否在任何区 域有效。“变量FOMAT”转换支持由“Kernighan/Ritchie”指定的格式规定(C语言1978),O,P,
N,U和【list】出外。
字符长度规范“H”和“L”不能使用。
只有9个格式参数可用于指定“CREAD”语句。如果几个变量是格式化可用到的,则必须在“#SEQ”
模式下读入。
系统不能区别大小写字符。在发生一个错误后读入失败(不符合格式或无效的值)。
转换字符“R”,当读入任何一个字节指定的字符长度次序 (与写入类似,例如“%2.5r”)或这所有 字节在结束信息之前,他也同样传入。
不像其它格式,单独字节的读入必须被“%1r”明确规定。.
没有用“%c格式”指定宽度,这样的格式是不合格的。字节能被分配到INT,REAL,CHAR,BOOL,
ENUM数据类型的变量或这种类型的一维数组。
假定整数数据类型出现在“little endian”格式中,而且是有正负之分的。
Real的数据类型在IEEE754标准格式中用32位表示。
Bit 31 符号, Bit 30—23 指数 Bit 22—0 尾数
长沙工控帮教育科技有限公司
46
hWDHir
(Signal) INT X X X X X X
INT array X X X X X
REAL X X X X
REAL array X X X
(Signal)
BOOL(1) X X X X X X
任何不等于0(zero)的值可以被TURN转换。
系统控制值是否被ENUM值允许。如果不是,读失败。ENUM开始为1。
如果没有足够的格式数据,(例如%2.5r,但只有7位),没有数据从格式读出,CREAD语句失败。被
47 下面列出了所有语句的应用:
--语句总是等待语句完全的执行完成和它返回程序。这是绝对CREAD语句读文本通道的一个显著特 征。
--不注意这些,这些程序会被中断程序打断。任何访问通道的努力都会被中断子程序阻断。.
语句的全部解释和通道指示命令信息都可以在“CHANNEL”中找到。观看2.2.5.部分。
程序完整的范例可以在“CHANNEL”章找到。
长沙工控帮教育科技有限公司
48
2.2.12 CWRITE
2.2.12.1 摘要信息
“CWRITE”语句能够使文字写入打开的通道,或者命令被写入命令通道。
应用实例: 数据 (写语句)在KRC1和装置间(PC,智能传感器...). 转换。
2.2.12.2 语句
2.2.12.3 说明
自变量 类型 解释
Handle INT “Handle”变量通过 “COPEN”或预先去定的变量
“$CMD”传送。
State STATE_T “CMD_STAT”是举例类型,它是组成结构类型
“STATE_T”状态变量的第一步。
“CMD_STAT”能有下列与CWRITE对应的值:
CMD_OK 命令成功执行;
;DATA_OK 命令被成功的执行。数据作为回复准备;
CMD_ABORT 因为“HANDLE”是无效的,命令没有被 执行;
CMD_REJ BCC 错误
CMD_SYN在 命令中语句错误。命令的语句错误,命令 因此不能被执行。
FMT_ERRI 错误的格式规范或不相应的变量。状况变 量由 “CWRITE”组成另一个重要部分:
HITS 正确的数字写入格式。.
Mode MODUS_T 变量类型“MODUS_T”(结构类型)定义些多少通道写入。
它有下面的值:
SYNC 语句直到数据已经发送还没有执行。
ASYNC 语句没有执行直到通道驱动已经证实数据 已经被承认。
长沙工控帮教育科技有限公司
49 变量的结构主要符合“C”语言 “FPRINTF” 功能的格式。
Var “Format”相应的变量.
2.2.12.3 说明
语句“CWRITE”使文本能够写入打开的通道或命令能够写入命令通道。
“Mode”的值写入命令通道的无关。如果“Mode”是非初始化的变量,那么语句失败而且 在变量“Status”中放置错误标记。
如果“Mode”有一个除SYNC或ASYNC以外的值,那么数据在SYNC模式下写入通道。
变量格式的转换规定有以下构造:
依靠输入的宽度(“%2r”),你可以指定多少字节的值会被延长或压缩。REAL的值出外。
当数值被压缩,高位字节被忽略;值通过在结尾增加原点位来延长 (little endian format) 。 如果宽度没有指定,固有的显示输出: INTEGER,REAL和ENUM 4个字节,BOOL和CHAR 1个字节。
50 布尔值作为0和1输出,ENUM作为数字值
结构变量 %d
<WDH> %4 r
(Signal)
INT X X X X X X
INT array X X X X X
REAL X X X
REAL array
X X X
(Signal)
BOOL X X X X X
BOOL array
X X X X X
ENUM X X X X X
ENUM
array X X X X X
CHAR X X X X
CHAR array
X X X X
通道结构的命令信息和状态定义都可以在“CHANNEL”章找到。
长沙工控帮教育科技有限公司
51 下面给出了几个“CWRITE”语句的范例:
数值的十进制和十六进制的转换
ENUM变量的固有转换值在ASCII中
“ENUM”变量的固有转换值在ASCII 中。相应的数字被输出。
长沙工控帮教育科技有限公司
52 DECL ENUM_TYP E
%D,E
写入两个真实值的名字(定义字符长度) REAL W1,W2
W1=3.97
W2=-27.3 CWRITE(..,..,..,”Value1=%+#07.3F Value2=+#06.2F”,W1.W2)
;发送数据: Value1=+03.970 Value2=-27.30
程序全部的范例都可以在“CHANNEL”章中找到。
长沙工控帮教育科技有限公司
53 声明程序和数据列表中的变量和常量。
2.2.13.2 语句
声明程序中的变量:
声明程序中的数组
声明数据列表中的变量:
或者同时分配值:
声明数据列表中的数组:
声明和初始化数据列表中的常量:
声明和初始化数据列表中的数组:
长沙工控帮教育科技有限公司
54
自变量 类型 解释
Data_Type 简单的数据类型:
INT,REAL,CHAR,BOOL
这些在系统文件能被任何结构和列举的类型,例如:
FRAME,POS,E6POS,AXIS,E6AXIS 能被自己定义的数据类型:
结构类型(STRUC)或列举类型(ENUM) Variable_Name,
Array_Name, Constant_Name, Object_Name
对象的名字被公告。
Size INT 没有负号的,正整数的常量定义数组的大小。
常量的数量产生数组的范围。
数组范围最大为3。
Value 被公告的常数数据类型
Array_Index INT 常量能在1到Size的范围内。把它看作数组元素开始来 分配值。
全部的变量和常量能仅仅在数据列表中被公告。
顺序使用关键字GLOBAL,在文件“Progress.ini”中的全球选项,
在INIT目录必须设为, TRUE:
GLOBAL_KEY=TRUE
2.2.13.3 说明
在程序中使用的变量必须是在声明中公告的名字和数据类型。简单的、复杂的和随意的、
可定义的数据类型是可用的。
声明首先由关键字DECL开始,跟随数据类型和变量列表和数组已有的数据类型。当声 明预先确定类型的变量和数组,关键字DECL可被省略。除简单数据类型INT,REAL,
CHAR和BOOL外,数据类型POS,EPOS,FRAME,AXIS,EAXIS etc中都被预先确 定。声明能被数据类型为POS的变量省略,因为这个数据类型是标准的数据类型而且是
55
56 变量数据类型“Freely” 声明可定义为结构类型或列举类型。
如果之后数据类型名不是预先确定的系统数据类型,关键字DECL必须在这里被编程。数 据类型定义STRUC和ENUM必须总是在DECL声明的这个类型变量之后。
2.2.13.4范例:
声明没有初始化。
DECL POS P1
;关键字DECL可被省略 INT A1,A2
REAL VEL[7],ACC[7],B DECL S_PAR_TYPE S_PAR[3]
由默认设置声明数组(只在数据列表中).
INT A[7] ;数组的7个整数值
A[1]=27 ;第一个数组元素被分配为27 A[2]=313
A[6]=11
CHAR TEXT1[80]
TEXT1[ ]=”Message Text”
CHAR TEXT2[2,80]
TEXT2[1,]=”First Message Text”
TEXT2[2,]=”Second Message Text”
声明变量的初始化(只在数据列表中).
FRAME F1={X 123.4, Y -56.7, Z 89.56}
STRUC,ENUM,DEFDAT
长沙工控帮教育科技有限公司
57
2.2.14 DEF...END
2.2.14.1 摘要信息
程序和子程序的声明。
2.2.14.2 语句
自变量 类型 解释
Program_Name
程序名进入这儿被定义。它是一个目标名而且在全球函 数情况下的它可能不长于24个字符
长度受控制器的指令系统限制。
长沙工控帮教育科技有限公司
58 关键字GLOBAL。
当程序被唤醒,有两种参数传送:传送输入参数和传送输出参数。 RETURN语句,没有时执行END语句。
长沙工控帮教育科技有限公司
59 没有外部参数的程序的声明:
DEF PROG( ) ...
END
声明子程序的外部电流和电压。适当的默认设置,他们输出参数。
DEF WELD(电流,电压) ...
END
声明子程序的外部电流和电压作为输入参数和RESULT作为输出参数。
DEF WELD(电流:IN,电压:IN,结果:OUT) ...
END
在CALCULATE子程序中,一些变量经过自动操作。在子程序调用后,在主程序中的A 和B跟随值:A=11;B=2。
DEF PROG( ) INT A,B A=1 B=2
CALCULATE(A,B) ...
END
DEF CALCULATE(X1:OUT,X2:IN) INT X1,X2
X1=X1+10 X2=X2+10 END
END,DEFFCT,RETURN
长沙工控帮教育科技有限公司
60
2.2.15 DEFDAT...ENDDAT
2.2.15.1 摘要信息
数据列表声明。
2.2.15.2 语句
自变量 类型 解释
Data_List_
Name
数据列表的名字进入这儿被定义。它是最长为24个字 符的对象名。长度通过控制器的管理系统限制。
如果数据列表的名字与指令相同,数据列表分配这个 指令作为数据列表声明的结果,同样在指令中相同的 名字也适用。
指令和数据列表从指令包中分配。