功能块指令是Micro800控制器编程中的重要指令,它包含了实际应用中的大多数编程功能。功能块指令种类及说明见表5-4。
表5-4 功能块指令种类
1.报警(Alarms)
功能块指令报警类指令只有限位报警一种,其详细功能说明如下。
限位报警(LIM ALRM),限位报警功能块如图5-32所示
该功能块用高限位和低限位限制一个实数变量。限位报警使用的高限位和低限位是EPS参数的一半。其参数列表见表5-5。
下面简单介绍限位报警功能块的用法。限位报警的主要作用就是限制输入,当输入超过或者低于预置的限位安全值时,输出报警信号。在本功能块中X接的是实际要限制的输入,其他个参数的意义我们可以参照上表。当X的值达到高限位值H时,功能块将输出QH和Q,即高位报警和报警,而要解除该报警,需要输入的值小于高限位的迟滞值(H-EPS),这样就拓宽了报警的范围,使输入值能较快地回到一个比较安全的范围值内,起到保护机器的作用。对于低位报警,功能块的工作方式很类似。当输入低于低限位值L时,功能块输出低位报警(QL)和报警(Q),而要解除报警则需输入回到低限位的迟滞值(L+EPS)。可见报警Q的输出综合了高位报警和低位报警。使用时可以留意该输出。
图5-32 限位报警功能块
表5-5 限位报警功能块参数列表
该功能块时序图如图5-33所示。
图5-33 限位报警功能块时序图
下面用一个例子介绍报警功能块的使用方法,程序如图5-34所示。
假设程序为一个锅炉水位报警系统,h为锅炉水位的上限,这里假设为15,I为锅炉水位的下限,这里假设为5,eps为迟滞值,这里假设为1,x为当前水位,这里假设其初始值为10。此时,因为x小于h且大于1,所以qh、q、ql的输出均为False。若x上涨超过15,假设其当前为16,则由于其大于h,所以qh为True,由于其超过限位,所以q为True。之后,若x开始下降,当其下降到小于15但仍大于14(即15-1)时,qh和q仍为True,当其下降到小于14后,qh和q恢复为False。下限1与上限h同理。
2.布尔操作(Boolean operations)
布尔操作类功能块主要有以下4种,用途描述见表5-6。
图5-34 锅炉水位报警系统
表5-6 布尔操作功能块用途
下面详细说明下降沿触发以及重置功能块的使用:
(1)下降沿触发(F TRIG)
如图5-35所示。
该功能块用于检测布尔变量的下降沿,其参数列表见表5-7。
图5-35 下降沿触发功能块
表5-7 下降沿触发功能块参数列表
(2)双稳态触发器(RS功能块)
RS功能块属于复位优先,其参数列表见表5-8。RS功能块如图5-36所示。
图5-36 RS功能块
表5-8 RS功能块参数列表
示例见表5-9。
表5-9 RS功能块示例表
下面用一个例子介绍RS功能块的使用方法,程序如图5-37所示。
图5-37 RS功能块的使用
当RESET1为False时,若SET为True或有一个为True的脉冲时,q1被置为True。当RESET1为True时,无论SET为何值,q1均为False。当SET为False但q1为True时,若RESET1有一个为True的脉冲时,q1变为False。
3.通信(Communications)
通信类功能块主要负责与外部设备通信,以及自身的各部件之间的联系。该类功能块的主要指令描述见表5-10。
表5-10 通信类功能块指令
下面主要介绍ABL,ACL,AHL,ARD,AWA,MSG MODBUS这几种指令:
(1)测试缓冲区数据列(ABL ASCII Test For Line)
测试缓冲区数据列功能块指令(见图5-38)可以用于统计在输入缓冲区里的字符个数(直到并且包括结束字符)。其参数列表见表5-11,ABL功能块的使用见9.4.1。
图5-38 测试缓冲区数据列计功能块
表5-11 测试缓冲区数据列功能块参数列表
ABLACB数据类型见表5-12。
表5-12 ABLACB数据类型
ABL错误代码见表5-13。
表5-13 ABL错误代码
(续)
说明:“0x”前缀表示十六进制数。
(2)ASCII清除缓存寄存器(ACL ASCII Clear Buffers)
如图5-39所示。
图5-39 ASCII清除缓存寄存器功能块
ASCII清除缓存寄存器功能块指令用于清除缓冲区里接收和传输的数据,该功能块指令也可以用于移除ASCII队列里的指令。其参数描述见表5-14,ACL功能块的使用见9.4.2。
表5-14 ASCII清除缓存寄存器功能块参数
ACL数据类型,见表5-15。
表5-15 ACL数据类型
(3)ASCII握手数据列(AHL ASCII Handshake Lines)
如图5-40所示。
图5-40 ASCII握手数据列功能块
ASCII握手数据列功能块可以用于设置或重置RS-232请求发送(Request to Send,RTS)握手信号控制行。其参数见表5-16。
表5-16 ASCII握手数据列功能块参数
AHLI数据类型,见表5-17。
表5-17 AHLI数据类型
AHL ChannelSts数据类型,见表5-18。
表5-18 AHL ChannelSts数据类型
(4)读ASCII字符(ARD ASCII Read)
如图5-41所示。
图5-41 读ASCII字符功能块
读ASCII字符功能块用于从缓冲区中读取字符,并把字符存入一个字符串中。其参数见表5-19。
表5-19 读ASCII字符功能块参数
ARDARL数据类型,见表5-20。
表5-20 ARDARL数据类型
(5)写ASCII带附加字符(AWA ASCII Write Append)
如图5-42所示。
图5-42 写ASCII带附加字符的功能块
写出功能块用于从源字符串向外部设备写入字符。且该指令附加在设置对话框里设置的两个字符。该功能块的参数列表见表5-21,功能块的使用见9.4.3。
表5-21 写ASCII带附加字符功能块参数列表
AWAAWT数据类型,见表5-22。
表5-22 AWAAWT数据类型
4.计数器(Counter)
计数器功能块指令主要用于增减计数,其主要指令描述见表5-23。
表5-23 计数器功能块指令用途
下面主要介绍给定加减计数功能块指令:
给定加减计数(CTUD),给定加减计数功能块如图5-43所示。
图5-43 给定加减计数功能块
从0开始加计数至给定值,或者从给定值开始减计数至0。其参数列表见表5-24。
表5-24 给定加减计数功能块参数列表
下面用一个例子介绍计数器的使用方法,程序如图5-44所示。
这个程序要实现的功能是加减计数,梯级一是一个自触发的计时器,TON 1.Q每3s输出一个动作脉冲,并复位计时器,重新计时。梯级二使能CTUD加减计数器模块。梯级三通过decrease位使能减计数,这时当TON 1.Q位输出一个脉冲时,pv值减一。同理,梯级四用来使能加计数。梯级五用来复位加减计数器CTUD。这样便实现了加减计数功能。
图5-44 加减计数
5.计时器(Time)
计时器类功能块指令主要有以下4种,其指令描述见表5-25。
表5-25 计时器功能块指令用途
下面将详细介绍上述指令:
(1)延时断开计时(TOF)
如图5-45所示。
图5-45 延时断开计时功能块
延时断开计时,其参数列表见表5-26。
表5-26 延时断开计时功能块参数列表
该功能块时序图如图5-46所示。
图5-46 延时断开计时功能块时序图
研究一下该时序图,延时断功能块其本质就是输入断开(即下降沿)一段时间(达到计时值)后,功能块输出(即Q)才从原来的通状态(1状态)变为断状态(0状态),即延时断。从图中可以看出梯级条件IN的下降沿才能触发计时器工作,且当计时未达到预置值(PT)时,如果IN又有下降沿,计时器将重新开始计时。参数ET表示的是已消耗的时间,即从计时开始到目前为止计时器统计的时间,可以看出,ET的取值范围是(0,PT的设置值)。输出Q的状态由两个条件控制,从时序图中可以看出:当IN为上升沿时,Q开始从0变为1,前提是原来的状态是0,如果原来的状态是1,即上次计时没有完成,则如果又碰到IN的上升沿,Q保持原来的1的状态;当计时器完成计时时,Q才回复到0状态。所以Q由IN的状态和计时器完成情况共同控制。
下面通过一个例子介绍延时断开计时(TOF)的使用方法。
如图5-47所示,当delay control in置1时,delay control out置位,此时delay tim-er.Q位保持为1。当delay control in由1变为0时,断电延时计时器开始计时,计时3s后,delay timer.Q位由1变为0,梯级二导通,delay control out复位。由此便实现了断电延时的功能。
图5-47 延时断开梯级逻辑
(2)延时导通计时(TON)
如图5-48所示。
图5-48 延时导通计时功能块
延时导通计时。其参数列表见表5-27。
表5-27 延时导通计时功能块参数列表
该功能块时序图如图5-49所示。
研究一下该时序图,延时通功能块的实质是输入IN导通后,输出Q延时导通。从图中可以看出梯级条件IN的上升沿触发计时器工作,IN的下降沿能直接停止计时器计时。参数ET表示的是已消耗的时间,即从计时开始到目前为止计时器统计的时间,明显可以看出,ET的取值范围也是(0,PT的设置值)。输出Q的状态也是由两个条件控制,从时序图中可以看出:当IN为上升沿时,计时器开始计时,达到计时时间后Q开始从0变为1;直到IN变为下降沿时,Q才跟着变为0;当计时器未完成计时时,即IN的导通时间小于预置的计时时间,Q将仍然保持原来的0状态。
下面用一个例子讲解延时导通计时(TON)的使用方法。
如图5-50所示,这个程序常用于在现场检测故障信号,当探测故障发生的信号传送进来,如果马上动作,可能会引起停机,因为有的故障是需要停机的。假定这个故障信号并不是真正的故障,可能只是一个干扰信号,停机就变得虚惊一场了。所以一般情况下会将这个信号延时一段,确定故障真实存在,再去故障停机。本程序便是使用了延时导通计时(TON)来实现这一功能的。
图5-49 延时导通计时功能块时序图
图5-50 通电延时梯级逻辑
将计时器的预定值定义为3s,那么TON的梯级条件fault能保持3s,则故障输出动作的产生将延时1s执行。如果这是一个扰动信号,不到3s便已经消失,计时器TON的梯级条件随之消失,计时器复位,完成位不会置位,故障输出动作不会发生。故障动作延时时间可以根据现场实际情况来确定,挑选一个合适的延时时间即可。
(3)延时通延时断(TONOFF)
如图5-51所示。
图5-51 延时通延时断功能块
该功能块用于在输出为真的梯级中延时通,在为假的梯级中延时断开。其参数列表见表5-28。
表5-28 延时通延时断功能块参数列表
下面通过一个例子介绍延时通延时断(TONOFF)的用法。
如图5-52所示,该例子是某输出开关的控制要求,当控制发出打开命令后,延时3s打开;控制发出关闭命令后,延时2s关闭。如果发出打开的命令后3s内接受关闭命令,则不打开;如果发出关闭命令后2s内接到打开命令,则不关闭。
图5-52 延时通延时断梯级逻辑
通过TONOFF指令,很轻松地实现了这一功能。延时控制开关in作为TONOFF的梯级条件,开或关的任意情况会触发通电计时或断电计时,从而控制out位输出。
(4)上升沿计时(TP)
如图5-53所示。
图5-53 上升沿计时功能块
在上升沿,内部计时器增计时至给定值,若计时时间达到,则重置内部计时器。其参数列表见表5-29。
表5-29 上升沿计时功能块参数列表
该功能块时序图如图5-54所示。
图5-54 上升沿计时功能块时序图
下面研究该功能块的时序图。从时序图可以看出,上升沿计时功能块与其他功能块明显的不同是其消耗时间(ET)总是与预置值(PT)相等。可以看出,输入IN的上升沿触发计时器开始计时,当计时器开始工作后,就不受IN干扰,直至计时完成。计时器完成计时后才接受IN的控制,即计时器的输出值保持住当前的计时值,直至IN变为0状态时,计时器才回到0状态。此外,输出Q也与之前的计时器不同,计时器开始计时时,Q由0变为1,计时结束后,再由1变为0。所以Q可以表示计时器是否在计时状态。
6.数据操作(Data manipulation)
数据操作类功能块主要有最大值和最小值,其用途描述见表5-30。
表5-30 数据操作类功能块用途描述
下面举例说明该类功能块的参数及应用:
平均(AVERAGE),其功能块如图5-55所示。
图5-55 平均功能块
平均功能块用于计算每一循环周期所有已存储值的平均值,并存储该平均值。只有N的最后输入值被存储。N的样本数个数不能超过128个。如果RUN命令为假(重置模式),输出值等于输入值。当达到最大的存储个数时,第一个存储的数将被最后一个替代。该功能块的参数列表见表5-31。
表5-31 平均功能块参数列表
下面用一个例子介绍平均功能块的使用方法,程序如图5-56所示。(www.daowen.com)
图5-56 平均功能块的使用
当n值为5时,且run更改为True后,数组AVERAGE_1.Index中的数值将从0到4做周期性变化。AVERAGE_1.Index作为数组的角标周期性输入到xin中,这里设数组中的数为10、20、30、40、50,则可以在xout中得到其平均值30。
7.输入/输出(Input/Output)
输入/输出类功能块指令主要用于管理控制器与外设之间的输入和输出数据,详细描述见表5-32。
表5-32 输入/输出类功能块指令用途
(续)
下面将详细介绍上述指令块:
(1)立即输入(IIM)
如图5-57所示。
图5-57 立即输入功能块
该功能块用于不等待自动扫描而立即输入一个数据。注意:对于刚发布的Connected Components Workbench版本,IIM功能块只支持嵌入式的数据输入。
该功能块参数列表见表5-33。
表5-33 立即输入功能块参数列表
IIM/IOM状态代码,见表5-34。
(2)存储模块信息(MM INFO)
如图5-58所示。
表5-34 IIM/IOM状态代码
图5-58 存储模块信息功能块
该功能块用于检查存储模块信息。当没有存储模块时,所有值变为零。其参数列表见表5-35。
表5-35 存储模块信息功能块参数列表
MMINFO数据类型,见表5-36。
(3)嵌入式模块信息(PLUGIN INFO)
如图5-59所示。
表5-36 MMINFO数据类型
图5-59 嵌入式类模块的信息功能块
嵌入式模块的信息可以通过该功能块读取。该功能块可以读取任意嵌入式模块的信息(除了2080-MEMBAK-RTC模块)。当没有嵌入式模块时,所有的参数值归零。其参数列表见表5-37。
表5-37 嵌入式模块的信息功能块参数列表
(4)嵌入式模块数据读取(PLUGIN READ)
如图5-60所示。
图5-60 嵌入式模块数据读取功能块
该功能块用于从嵌入式模块硬件读取一组数据。其参数列表见表5-38。
表5-38 嵌入式模块数据读取功能块参数列表
嵌入式模块操作状态值,见表5-39。
表5-39 嵌入式模块操作状态值
(5)嵌入式模块重置(PLUGIN RESET)
如图5-61所示。
图5-61 嵌入式模块重置功能块
该功能块用于重置任意嵌入式模块硬件信息(除了2080-MEMBAK-RTC)。硬件重置后,嵌入式模块可以组态或操作。其参数列表见表5-40。
表5-40 嵌入式模块重置功能块参数列表
(6)读RTC(RTC READ)
如图5-62所示。
图5-62 读RTC功能块
该功能块用于读取RTC预设值和RTC信息。
提示:当在带嵌入式的RTC的Micro810控制器中使用时,RTCBatLow总是0。当由于断电导致嵌入式的RTC丢失其负载或存储信息时,RTCEnabled总是为0。其参数列表见表5-41。
表5-41 读RTC功能块参数列表
(续)
RTC数据类型,见表5-42。
(7)写RTC(RTC SET)
如图5-63所示。
表5-42 RTC数据类型
图5-63 写RTC功能块
该功能块用于设置RTC状态或是写RTC信息。其参数列表见表5-43。
表5-43 写RTC功能块参数列表
RTC设置状态值,见表5-44。
(8)系统信息(SYS INFO)
如图5-64所示。
表5-44 RTC设置状态值
图5-64 系统信息功能块
该功能块用于读取系统状态数据块。其参数列表见表5-45。
表5-45 系统信息功能块参数列表
SYSINFO数据类型,见表5-46。
表5-46 SYSINFO数据类型
(9)微调电位器(TRIMPOT READ)
如图5-65所示。
图5-65 微调电位器功能块
该功能块用于读取微调电位当前值。其参数列表见表5-47。
表5-47 微调电位器功能块参数列表
Trimpot ID定义,见表5-48。
表5-48 Trimpot ID定义
电位操作状态值,见表5-49。
(10)读校验和(RPC)
如图5-66所示。
表5-49 电位操作状态值
图5-66 读校验和功能块
用于从控制器或者存储模块中读取用户程序的校验和。其参数列表见表5-50。
表5-50 读校验和功能块参数列表
8.过程控制(Process Control)
过程控制类功能块指令用途描述见表5-51。
表5-51 过程控制类功能块指令用途
(1)微分(DERIVATE)
如图5-67所示。
图5-67 微分功能块
该功能块用于取一个实数的微分。如果CYCLE参数设置的时间小于设备的执行循环周期,那么采样周期将强制与该循环周期一致。注意:差分是以毫秒为时间基准计算的。要将该指令的输出换算成以秒为单位表示的值,必须将该输出除以1000。
功能块的参数列表见表5-52。
表5-52 微分功能块参数列表
下面用一个例子介绍微分功能块的使用方法,程序如图5-68所示。
图5-68 微分功能块的使用
设一计数器与计时器使其每100ms对变量cv值加1,将cv转成REAL型输入到XIN中,在CYCLE中输入微分时间T#200ms,则在xout中可得到微分结果0.01,即2除以200。
(2)迟滞(HYSTER)
如图5-69所示。
迟滞指令用于上限实值滞后。其参数列表见表5-53。
图5-69 迟滞指令
表5-53 迟滞指令参数列表
迟滞指令功能块指令的时序图如图5-70所示。
下面来研究迟滞功能块。从其时序图可以看出当功能块输入XIN1没有达到功能块的高预置值时(即XIN2+EPS),功能块的输出Q始终保持0状态,当输入超过高预置值时,输出才跳转为1状态。输出变为1状态后,如果输入值没有小于低预置值(XIN2-EPS),输出将一直保持1状态,如此往复。可见迟滞功能块是把功能块的输出1的条件提高了,又把输出0的条件降低了。这样就提高了启动条件,降低了停机条件,在实际的应用场合中能起到保护机器的作用。
(3)积分(INTEGRAL)
如图5-71所示。
图5-70 迟滞指令功能块指令的时序图
图5-71 积分功能块
该功能块用于对一个实数进行积分。
提示:如果CYCLE参数设置的时间小于设备的执行循环周期,那么采样周期将强制与该循环周期一致。
首次初始化INTEGRAL功能块时,不会考虑其初始值。使用R1参数来设置要用于计算的初始值。
建议不要使用该功能块EN和ENO参数,因为当EN为假时循环时间将会中断,导致不正确的积分。如果选择使用EN和ENO参数,需把R1和EN置为真,来清除现有的结果,以确保积分正确。
为防止丢失积分值,控制器从PROGRAM转换为RUN或RUN参数从“假”转换为“真”时,不会自动清除积分值。首次将控制器从PROGRAM转换到RUN模式以及启动新的积分时,使用R1参数可清除积分值。
该功能块的参数列表见表5-54。
表5-54 积分功能块参数列表
(4)量程转换(SCALER)
如图5-72所示。
该功能块用于基于输出范围量程转换输入值,例如
其参数列表见表5-55。
图5-72 量程转换功能块
表5-55 量程转换功能块参数列表
下面用一个例子介绍量程转换功能块的使用方法,程序如图5-73所示。
假设InputMin输入0.0,InputMax输入100.0,OutputMin输入0.0,OutputMax输入10000.0。则此功能块会将Input输入的数按0~100中的比例转化为0~10000中的数输出到Output中,若in中输入10.0,则out输出1000.0,若in中输入50.0,则out输出5000.0。
图5-73 量程转换功能块
(5)整数堆栈(STACKINT)
如图5-74所示。
图5-74 整数堆栈功能块
该功能块用于处理一个整数堆栈。
STACKINT功能块对PUSH和POP命令的上升沿检测。堆栈的最大值为128。当重置(R1至少置为真一次,然后回到假)后OFLO值才有效。用于定义堆栈尺寸的N不能小于1或大于128。下列情况下,该功能块将处理无效值:
如果N<1,STACKINT功能块尺寸为1的数据
如果N>128,STACKINT功能块尺寸为128的数据
功能块参数列表见表5-56。
表5-56 整数堆栈功能块参数列表
9.程序控制(Program Control)
程序控制类功能块指令主要有暂停和限幅以及停止并启动3个指令,具体说明如下:
(1)暂停(SUS)
该功能块用于暂停执行Micro800控制器。其参数列表见表5-57。暂停功能块如图5-75所示。
图5-75 暂停功能块
表5-57 暂停功能块参数列表
(2)限幅(LIMIT)
该功能块(见图5-76)用于限制输入的整数值在给定水平。整数值的最大和最小限制是不变的。如果整数值大于最大限值,则用最大限值代替它。小于最小值时,则用最小限值代替它。参数列表见表5-58。
图5-76 限幅功能块
表5-58 限幅功能块参数列表
(3)停止并重启(TND)
如图5-77所示。
图5-77 停止并重启功能块
该功能块用于停止当前用户程序扫描。然后在输出扫描,输入扫描,和内部处理后,用户程序将从第一个子程序开始重新执行。其参数列表见表5-59。
表5-59 停止并重启功能块参数列表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。