2.6 IL的编程实例本例是一个用指令表程序定义功能的实例,功能描述的计算平面上两点的移动距离。 两点X,Y的坐标如下图所示。 图二用指令表编功能实例用结构化文本描述的两点间距离的计算公式为:Travel_distance:=SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(YI-Y2)))。TMax是X,Y两点见的最大距离,当计算值小于TMax时,说明计算正确;当计算值大于TMax时,说明X,Y两点间的距离超出了最大距离,在这种情况下,功能是没有输出的。用指令表编写的该功能的函数TRAVEL()如下: FUNCTION TRAVEL : REAL VAR_INPUT X1,X2,Y1,Y2 : REAL (*点X,Y坐标*) TMax : REAL (*最大移动距离*) END_VAR VAR Temp : REAL; (*中间值*) END_VAR LD Y1 SUB Y2 (*计算Y2-Y1*) ST Temp (*将Y2-Y1值存入Temp *) MUL Temp (*计算(Y2-Y1)的平方*) ADD( X1 SUB X2 (*计算(X1-X2)*) ST Temp (*将(X1-X2)值存入Temp *) MUL Temp (*计算(X1-X2)的平方*) ) (*将两平方值相加*) CAL SQRT (*调平方根函数*) ST TRAVEL (*设定计算结果*) GT TMax (*比TMax 大吗?*) JMPC ERR (*是,转到ERR 执行*) S ENO (*设定ENO *) ERR: RET (*错误返回,ENO 不输出*) END_FUNCTION功能块图(FBD)、梯形图(LAD)和顺序功能流程图(SFC)。
一、功能块图(FBD - Function Block Diagram)功能块图用来描述功能、功能块和程序的行为特征,还可以在顺序功能流程图中描述步、动作和转变的行为特征。功能块图与电子线路图中的信号流图非常相似,在程序中,它可看作两个过程元素之间的信息流。功能块图普遍地应用在过程控制领域。功能块用矩形块来表示,每一功能块的左侧有不少于一个的输入端,在右侧有不少于一个的输出端,功能块的类型名称通常写在块内,但功能块实例的名称通常写在块的上部,功能块的输入输出名称写在块内的输入输出点的相应地方。
1.1 功能块图的信号流在功能块网路中,信号通常是从一个功能或功能块的输出传递到另一个功能或功能块的输入。信号经由功能块左端流入,并求值更新,在功能块右端流输出。 l 布尔信号的取反在使用布尔信号时,功能或功能块的取反输入或输出可以在输入端或输出端用一个小圆点来表示,这种表示与在输入端或输出端加一个“取反”功能是一致的。如下图是一功能块图取反的实例。 l 信号反馈功能块图允许功能块的输出反馈回网路左侧的功能块输入,形成反馈路径。下图是一功能块反馈路径的实例,功能块Load1的输出端Level反馈回功能块Loop1的输入端ProcessValue。 1.2 功能块网路设计 功能块图的设计首先应该保证主信号流的线路清晰,避免过多的信号跨接和线路方向改变。
1.5 结构化文本与功能块图之间的转换特点 l 功能块图中的大部分程序能够转换为结构化文本。 l 结构化文本程序能够容易地转化为功能、功能块及其相关的参数值。 l 结构化文本直接转化为功能块网路是很困难的,IF…THEN, CASE,FOR, WHILE, REPEAT格式的语句还不能直接转换为功能块网路。
1.6 连续功能流程图(CFC-Continuous Function Chart)连续功能流程图是功能块图的一种特殊形式,它用于描述资源的顶层结构以及程序和功能块对任务的分配。连续功能流程图和功能块图之间的主要区别是资源和任务分配的不同。每一功能用任务的名称来描述,如图所示。程序也是箱是的情况。如果一个程序内的功能块象它的父程序一样在相同的任务下执行,任务关联是隐含的。在这种情况下,任务名称就没有必要显示在功能块中。连续功能流程图如图7所示。
3.1 顺序功能流程图的基本概念顺序功能流程图可以由步、有向连线和过渡的集合描述。如下图反映了SFC的主要特征。 l 步步用矩形框表示,描述了被控系统的每一特殊状态。MFC中的每一步的名字应当是唯一的并且应当在MFC中仅仅出现一次。一个步可以是激活的,也可以是休止的,只有当步处于激活状态时,与之相应的动作才会被执行,至于一个步是否处于激活状态,则取决于上一步及过渡。 l 有向连线有向连线表示功能图的状态转化路线,每一步是通过有向连线连接的。 l 过渡过渡表示从一个步到另一个步的转化,这种转化并非任意的,只有当满足一定的转换条件时,转化才能发生。转换条件可以用ST、LD或FBD来描述。转换定义可以用ST、IL、LD或FBD来描述。过渡用一条横线表示,可以对过渡进行编号。 l 动作(action)每一步是用一个或多个动作(action)来描述的。动作包含了在步被执行时应当发生的一些行为的描述,动作用一个附加在步上的矩形框来表示。每一动作可以用IEC的任一语言如ST、FBD、LD或IL来编写。每一动作有一个限定器(Qulifier),用来确定动作什么时候执行;标准还定义了一系列限定器(Qulifier),精确地定义了一个特定与步相关的动作什么时候执行。每一动作还有一个指示器变量,该变量仅仅是用于注释。动作的表示如下图所示: l 转化规则顺序功能流程图的任一步可能是激活的,也可能是休止的,与之相应的动作(Action)只有在步处于激活状态时,方能被执行,所以,步被激活和被休止的过程编确定了系统的行为。初始状态是指指令运行的开始即被激活的那个状态,这个步的标志为S0。每个过程都可以是有效的,也可以是无效的,只有紧接其前的各个阶段都处于激活状态时,过渡才是有效的,只有同时满足(1)过渡是有效的(2)过渡对应的接受特性为真,与过渡相连的下一步方能处于激活状态,同时,紧接其前的各个步全部被休止。当几个过渡可以同时被超越时,他们将同时被超越。