1.电动机控制的编程
(1)使用两个按钮实现电动机起保停控制
使用两个按钮控制电动机的起保停具有结构简单、易于编程的特点。根据起动优先或停止优先的不同,有两种不同的实现方法。
1)停止优先。采用双稳元素功能块RS可实现停止优先的电动机起保停控制,程序如图6-1a所示。也可用图6-1b所示梯形图程序实现该控制。
图6-1 停止优先的起保停控制
a)用功能块实现 b)用梯形图实现
用指令表编程语言编写的程序如下:
LD START //读取START状态
OR RUN //与RUN进行或逻辑运算
ANDN STOP //运算结果再与STOP取反的信号进行与逻辑运算
ST RUN //最终结果存放在RUN
用结构化文本编程语言编写的程序如下:
RUN:=RS1(SET:=START, RESET1:=STOP);
2)起动优先。一些紧急联锁用的设备,例如,消防水泵、紧急通风机的起保停控制宜采用起动优先的控制方式。功能块图和梯形图编程语言编写的程序如图6-2所示。
用指令表编程语言编写的程序如下:
LD RUN //读取RUN状态
ANDN STOP //与STOP取反的信号进行与逻辑运算
OR START //运算结果再与START进行或逻辑运算
ST RUN //最终结果存放在RUN
图6-2 起动优先的起保停控制
a)用功能块图实现 b) 用梯形图实现
用结构化文本编程语言编写的程序如下:
RUN:=SR1(SET1:=START, RESET:=STOP);
3)注意事项。应用上述编程语言编程时需注意下列事项:
①用功能块图和结构化文本编程语言编程时,START和STOP采用常开触点。用梯形图和指令表编程语言编程时,START是常开触点,STOP是常闭触点。
②标准功能块中,停止优先控制规定用S和R1端表示置位端和复位端。为清楚表示其特性,一些软件采用SET和RESET1表示。同样,起动优先控制规定用S1和R端表示置位端和复位端。为清楚表示其特性,一些软件采用SET1和RESET表示。
③停止优先表示当同时按下起动(置位)和停止(复位)按钮时,输出RUN端为0,即电动机停止。在图形上,输入端用1表示优先级高的端子,即R1或RESET1端的优先级高于S或SET端。起动优先表示当同时按下起动(置位)和停止(复位)按钮时,输出RUN端为1,即电动机起动。
④大多数电动机和运转设备采用停止优先的起保停控制方式来控制其起保停。
(2)使用一个按钮实现电动机起保停控制
使用一个按钮实现电动机起保停控制也称为单按钮起保停控制。常用于PLC的输入点数较少,而需要控制起停的设备较多的场合。
单按钮起保停控制的控制要求是当第一次按下起停按钮START时,电动机起动并保持;当第二次按下起停按钮START时,电动机停止并保持。有多种程序可实现所需控制要求。下面介绍常用程序。
1)上升沿触发的单按钮起保停控制。
①使用上升沿边沿检测功能块。图6-3是采用上升沿边沿检测功能块实现单按钮的起保停控制梯形图程序。
按下START按钮时产生的脉冲信号实现起停控制,称为上升沿触发的单按钮起保停控制。当第一次按下START按钮时,经上升沿边沿检测功能块R1的检测,输出L有一个脉冲信号,在003梯级,使电动机RUN激励和运转,并自保。当第二次按下START按钮时,同样有一个脉冲信号L输出,因RUN自保,因此,在002梯级,使中间变量S2激励,从而在003梯级使输出RUN失励,即电动机停止运转。
②采用计数器功能块。采用计数器功能块实例C1对按钮按动的次数进行计数,也可实现单按钮起保停控制。图6-4是采用计数器实现的单按钮起保停控制梯形图程序。
图6-3 上升沿触发的单按钮起保停控制
图6-4 采用计数器实现的单按钮起保停控制梯形图程序
当第一次按下START按钮时,经上升沿边沿检测功能块R1的检测,输出L有一个脉冲信号,它作为计数器的输入脉冲,用于计数,计数设定值PV为2,同时,脉冲信号L连接到RS1双稳元素功能块的置位端,使其输出RUN激励。当第二次按下START按钮时,计数器C1计数到,它的输出C1.Q为1,使RS1的复位端置1,因此,其输出RUN失励,表示电动机停止运转。
2)下降沿触发的单按钮起保停控制。当上述程序的上升沿边沿检测功能块用下降沿边沿检测功能块替代时,可实现下降沿触发的单按钮起停控制。图6-5是采用下降沿触发的单按钮起保停控制梯形图程序,是常见的一种梯形图程序。
当第一次按下START按钮时,中间变量C1激励,并自保,但因串接在RUN梯级的是START的反相信号,因此,RUN未激励,同样,C2也未激励。当按钮释放时,START取反信号为1,因此,RUN激励,电动机运转。第二次按下START时,因START、RUN的线路仍接通,因此,RUN保持激励状态,同时,C2也激励。按钮START释放时,才使RUN失励,实现停止电动机运转的控制要求。
图6-5 下降沿触发的单按钮起保停控制梯形图程序
(3)电动机的正反转控制
电动机的正反转切换通过更换电动机的一组相线实现。电气控制线路中常用两个接触器KM1和KM2实现,如图6-6所示。图中,SB2和SB3分别是正转和反转的起动按钮,SB1是停止按钮。
有两种实现电动机正、反转控制的方法:一种方法是电动机正、反转切换不经过停止的过程;另一种方法是电动机先停止,然后根据切换要求切换到所需的运转方式。
图6-6 电动机正反转电气控制线路
a)主电路 b) 无互锁控制电路 c) 正-停-反控制电路 d) 正-反-停控制电路
1)经停止过程的电动机正、反转切换控制。与图6-6对应,可采用两个起动按钮ZQ和FQ用于正转和反转的起动,一个按钮TZ用于停止运转。正转和反转的接触器用ZZ和FZ表示。梯形图程序如图6-7所示。
图6-7 经停止过程的电动机正、反转切换控制程序
电动机在停运状态时,ZZ和FZ都未激励。
当按下ZQ正转起动按钮时,输出ZZ激励,表示电动机正转。同时,它将反转控制线路切断,防止反转起动。只有按下TZ停止按钮,电动机才能停转。
当按下FQ反转起动按钮时,输出FZ激励,表示电动机反转。同时,它将正转控制线路切断,防止正转起动。只有按下TZ停止按钮,电动机才能停转。
2)不经停止过程的电动机正、反转切换控制。与图6-6对应,采用两个起动按钮ZQ和FQ用于正转和反转的起动,一个按钮TZ用于停止运转。正转和反转的接触器为ZZ和FZ。不经停止过程的电动机正、反转切换控制梯形图程序如图6-8所示。
与历停止过程的电动机正、反转切换控制程序类似,只在各梯级上增加一个如图6-8所示的常闭触点,它用于停止电动机的运转。
当按下ZQ正转起动按钮时,输出ZZ激励,表示电动机正转。同时,它断开反转控制线路,使反转接触器触点断开。
图6-8 不经停止过程的电动机正、反转切换控制程序
当按下FQ反转起动按钮时,输出FZ激励,表示电动机反转。同时,它断开正转控制线路,使正转接触器触点断开。
按下TZ停止按钮,电动机停转。
为防止因接触器动作延迟可能发生相间短路,程序中除了用接触器触点进行互锁外,还用起动按钮反相触点断开另一控制回路,实现互锁。同时,在外部接线时采用图6-9所示互锁接线方式。
有时,也将电动机热继电器的常闭触点串联到各梯级中,当负载过大,热继电器激励时,能够及时使接触器输入信号断开。但实际应用时,常在外部接线时串接接入热继电器触点,用于减少PLC的输入点数,如 图6-9所示。
3)定时交替的电动机正、反转切换控制。一些应用场合需要电动机正转一定时间后自动切换到反转,反转运转一定时间后自动切换到正转。这种情况可采用定时交替正、反转切换方法来控制电动机的运转。
另一种应用情况是电动机正转一定时间后自动停止,停止一定时间后自动反转,反转一定时间后自动停止,然后停止一定时间后自动正转,如此循环运转和停止,例如,洗衣机的电动机。
①没有停止过程的电动机交替正、反转控制。图6-10是定时交替的电动机正、反转控制程序。
图6-9 PLC的外部接线图
图6-10 定时交替的电动机正、反转控制程序
程序采用一个按钮START作为起动信号,用按钮TZ手动停止电动机的运转。采用两个定时器对正、反转的运行时间定时,定时时间在T1和T2定时器功能块中设置。图6-10中,正转时间设定为2s,反转时间设定为3s。
程序采用两个RS功能块,用两个定时器组成循环过程。由于定时器循环过程中,只有在T2定时器计时到才重新更新,因此,对正转ZZ的双稳元素功能块可采用置位优先的SR功能块。
此外,程序采用起动信号来防止系统一旦上电,就开始运转,同样,停止信号也通过开关获得。
如果采用有正、反转的起动按钮,则起动时可选择先起动正转或起动反转。如果需要有正、反转的起动信号,也可采用图6-11所示的程序。
图6-11 采用正、反转起动按钮的控制程序
②有停止过程电动机交替正反转控制。图6-12是有停止过程电动机正反转控制程序。
图6-12 有停止过程定时交替的电动机正、反转控制程序
(4)电动机的星-三角转换控制
电动机的星-三角转换控制用于三相异步电动机的减压起动,即起动电动机时,采用星形联结,电动机运转后自动切换到三角形联结。电动机的星-三角转换控制程序如图6-13所示。
设电动机的三个绕组分别是AX、BY和CZ,则星形联结是将X、Y和Z连接在一起,A、B和C连接到三相输入端,三角形联结是将A与Z、B与X、C与Y连接在一起,并将A、B和C连接到三相输入端。
当输出接触器KM激励,KM的各触点闭合,组成星形联结;当输出接触器KMΔ激励,KMΔ的各触点闭合,组成三角形联结。当输出继电器KM激励,起动电动机。假设星形联结起动5s后自动转换到三角形联结。
图6-13 电动机星-三角转换控制电路和程序
a)主电路 b) 控制电路 c) 梯形图程序
程序转换过程如下:按下起动按钮START后,K1激励并自保,同时使连接的接触器KM激励,相应触点闭合,003梯级中,K2激励,它使连接的接触器KM激励,组成星形联结结构,并使电动机在低起动电流下运转,当延时时间5s到,定时器T1的输出T1.Q变为1,使K2失励,K3激励,它使相应的接触器KM失励,接触器KMΔ激励,电动机组成三角形联结结构,并用三角形联结运转。按下停止按钮后,K1失励,电动机停转。
程序中,星形联结和三角形联结的两个输出继电器已实现互锁,为防止转换过程中造成相间短路,硬件接线可用类似图6-13的形式实现硬件互锁。
星-三角起动的优点是星形起动电流只有原来三角形起动电流的1/3,约为电动机额定电流的2倍,因此,起动特性好、结构简单、价格低。星形起动的缺点是起动转矩也下降到三角形直接起动转矩的1/3,因此,其转矩特性差。
考虑到星形联结转换到三角形联结过程中可能造成相间短路,可在星形联结断开后,再延时一段较短时间,例如,0.5s后才转换到三角形联结。程序如图6-14所示。
图6-14 有延时的电动机星形-三角形转换程序
(5)点动和连续运行控制
电动机控制中,有时要求可以连续运转,有时要求点动,例如行车的电动机。电动机的点动采用一个点动按钮DD,按下点动按钮,电动机运转;释放按钮,电动机停转。电动机的连续运行采用两个按钮,一个起动按钮QA,一个停止按钮TA。按下起动按钮后,电动机运行;释放后,电动机保持运行,直到再次按下停止按钮。
PLC实现上述功能十分方便。程序如图6-15所示。
图6-15 电动机点动、连续控制程序
也可编写如图6-16所示的程序实现点动和连续运行控制。
图6-16 另一个电动机点动、连续控制程序
(6)电动机的顺序控制
在一些应用中,需要电动机的顺序控制。如在开车时,一系列电动机应逆序起动;停车时,一系列电动机要顺序停止。又如,在传送带输送机系统中,一系列传送带输送机的电动机的开车应先开后级电动机,再开前级电动机;当系统停车时,应先停前级电动机,后停后级电动机。这称为逆序起动,顺序停止。这类控制系统的控制程序如图6-17所示。示例中有三台电动机。
图6-17 电动机顺序控制系统的程序
当控制的电动机数大于3台时,第一台电动机的程序不变,最终电动机的程序与图中第三台程序类似,仅将STOP3改接最终一台的停止按钮。中间的电动机与图中第二台电动机程序类似。仅起动条件的与函数连接该台电动机的起动按钮和下一台电动机的运转信号,停止条件的与函数连接该电动机的停止按钮和上一台电动机的运转信号(取反)。
2.定时器和计数器的编程
很多场合需要使用定时器和计数器。例如,电动机的定时运行、延时运行或停止等。
(1)电动机的定时运行
电动机的定时运行包括延时起动、延时停止、运行规定时间停止等。它们都需要采用定时器功能块。
1)电动机延时起动控制。电动机延时起动控制与电动机的停止优先控制类似,但增加定时器用于延时。图6-18所示程序中假设延时时间为2s。
2)电动机延时停止控制。电动机起动后运行规定时间后自动停止的控制程序需要一个脉冲定时器T1,程序与图6-18所示程序类似,只需要将TON定时器改为TP定时器。
3)电动机延时起动,运行规定时间后停止的控制。将电动机延时起动控制程序和运行规定时间的程序结合,可实现电动机延时起动,运行规定时间停止的控制要求。程序如图6-19所示。假设延时时间(由TON功能块的设定设置)为5s,规定运行时间(由TP功能块的设定设置)为15s。
图6-18 电动机延时起动控制程序
图6-19 电动机延时起动,运行规定时间后停止的控制程序
4)电动机延时起动、延时停止的控制。将电动机延时起动和电动机延时停止的程序结合,可实现电动机延时起动和延时停止的控制要求。图6-20是控制程序。假设延时起动时间为5s,延时停止时间(由TOF功能块的设定设置)是15s。
图6-20 电动机延时起动和停止的控制程序
(2)长定时器的实现
IEC61131-3标准没有规定定时器的定时时间的限度。但实际PLC受存储器容量限制,不可能实现无限的定时时间。长时间的定时器实现可采用多种程序。
1)多定时器串联。多定时器串联程序可实现长定时。一个定时器计时到其设定值后,启动第二个定时器,然后,启动第三个定时器等。总延时时间是各定时器计时时间之和。
图6-21是一个定时器串联的程序示例。PLC能够提供最长为8h的定时器,为实现自动打印日报表,需要每隔24h发送一个打印信号。当第一次闭合START开关后,图6-21所示程序能够每隔24h给PRINT发送一个打印信号。
图6-21 定时器串联程序示例
2)定时器和计数器组合。将定时器和计数器串联,可实现长定时功能。例如,图6-21所示程序也可用图6-22所示定时器和计数器的串联程序实现。
图6-22 定时器和计数器串联程序示例
(3)周期信号发生器
生产过程中有时需要各种信号,例如脉冲信号、方波信号、正弦信号等。
1)脉冲信号发生器。一些应用场合需要周期的脉冲信号,例如,三相步进电动机转速控制时所需脉冲信号就可用脉冲信号发生器产生的脉冲信号。
图6-23所示程序用于产生一个周期为1s的脉冲信号。改变定时器的设定时间可改变脉冲周期。
图6-23 周期脉冲信号发生器程序
2)方波信号发生器。方波信号发生器要求输出信号周期接通和断开。通常,将接通时间和总周期之比称为占空比。在时间比例控制系统中将控制器输出以对应的占空比来接通和断开输出信号,实现连续量信号输入和开关量输出的控制规律。
①一个延时接通定时器组成方波信号发生器。图6-24显示用一个延时接通定时器组成平衡方波信号发生器的程序。信号的周期时间是定时器设定时间的两倍。平衡方波指信号对称,即占空比为1:2。通常,这种信号发生器称为平衡振荡信号发生器。
图6-24 一个延时接通定时器组成平衡方波信号发生器程序
②两个延时接通定时器组成方波信号发生器。图6-25显示用两个延时接通定时器组成平衡方波信号发生器的程序。信号的周期是T1和T2的设定时间之和。当输出OUT连接到定时器输出取反信号(见图6-25),占空比为T1设定时间与总周期之比。START闭合时,输出OUT先闭合后断开。当输出OUT连接到定时器输出信号,占空比为T2设定时间与总周期之比。START闭合时,输出先断开后闭合。通常,这种信号发生器称为不平衡振荡信号发生器。当T2设定时间与T1设定时间相同时,组成平衡振荡信号发生器。
图6-25 两个延时接通定时器组成平衡方波信号发生器程序
3)锯齿波信号发生器。锯齿波信号发生器用于产生周期锯齿波,它被作为时间比例控制的信号源等。
假设锯齿波的周期为10s,幅值为1,起动信号为START,锯齿波以变量OUT输出。采用延时接通定时器实现的程序如图6-26所示。信号波形如图6-27所示。
图6-26 锯齿波信号发生器程序
图6-27 锯齿波信号波形图
需注意,将时间数据类型转换为实数数据类型时,时间数据以ms为单位,因此,锯齿波信号周期时间为10000ms,程序中乘以0.0001后,使锯齿波周期时间转换为实数1.0。如果希望锯齿波的幅值为K,应在乘法函数的乘数用0.0001与K之积表示。
4)正弦信号发生器。锯齿波信号发生器和正弦函数等三角函数结合,可实现三角函数信号发生器。图6-28是正弦波信号发生器程序。正弦信号以10s为周期,由于正弦函数输入是用弧度计算的,因此,将乘数0.0001改为0.000628,正弦波信号幅值是输出OUT乘以幅值K获得。
图6-28 正弦信号发生器程序
图6-29是输入起动信号START和输出正弦波信号OUT的波形图。
图6-29 正弦波信号发生器的信号波形图
5)全波整流信号发生器。如果在上述程序中将输出取绝对值,则可获得以10s为周期的全波整流输出信号。图6-30是输出的全波整流信号波形图。
图6-30 全波整流输出信号波形图
(4)长计数器的实现
IEC 61131-3标准对计数器的计数值没有规定其限度。但实际PLC受存储器容量限制,不可能实现无限计数。因此,对长计数的计数器可采用有关程序实现。
图6-31显示用两个加计数器C1和C2实现长计数功能的程序。START给出计数脉冲输入信号。C1计数器功能块计数设定值是100,C2计数器功能块计数设定值是500,当计数值达到50000时,C2计数器功能块输出一个脉冲信号。
图6-31 多计数器组成长计数功能的程序
多计数器串联程序可实现长计数。一个计数器计数到其设定值后,起动第二个计数器,然后,起动第三个计数器等。总计数次数是各计数器计数设定值之积。
3.反馈变量的应用
在工程应用中,往往需要迭代运算,例如,在线补偿节流装置的非线性,采用在线计算节流装置在测得差压条件下的流出系数,并实现节流装置的非线性补偿,该运算过程就需要对流出系数进行迭代运算。
根据IEC61131-3标准,在功能块图标准编程语言中引入了反馈变量。标准指出,一个网络的输出参数值返回到同一网络中作为输入参数时,这种连接路径称为反馈路径,相应的变量称为反馈变量。
反馈变量的求值规则如下:
1)当第一次网络求值时,使用反馈变量的初始值,它可以是该数据类型的约定初始值、用户在变量初始化时规定的初始值或当具有掉电保持属性的反馈变量在掉电前的数值。
2)其后,反馈变量的值根据反馈信号确定,即用反馈变量的新值作为该网络的输入值。
由此可见,PLC编程语言中的反馈变量具有迭代运算功能。其第一次初始值就是迭代初值,以后将用新的计算结果作为下一次迭代值。
(1)高阶方程求解
高阶方程经转换,可表示为x=f(x),该方程的求解转换为确定以图形表示的两条曲线,即y=f(x)和y=x的交点。以示例说明。
【例6-1】求解方程x3-1.5x2-x+1=0。
方程经转换,可表示为y=x3-1.5x2+1=x。图6-32是其曲线。直线与曲线的交点即方程的根。
假设x的初值为0,则计算y=1,根据x=y,确定x的第二次迭代值为1,计算得到:y=0.5。x的第三次迭代值为0.75。如此迭代运算,直到x=0.64458430。
图6-32 方程求根的迭代过程
PLC的程序和运算结果如图6-33所示。迭代运算过程如图6-34所示。(www.xing528.com)
图6-33 求解方程的PLC程序和运算结果
图6-34 方程求解的迭代过程
(2)整数开方
当选用的PLC只有整数运算功能时,节流装置检测的差压dp经AI转换为整数0~16000,需经开方转换为流量0~16000,由于没有SQRT函数可使用,为此,必须对整数开方用下列迭代公式计算:
根据迭代公式编写的程序如图6-35所示。其输出q是根据输入的差压dp计算获得的整数表示的开方值。
图6-35 整数开方的PLC迭代程序
(3)位力方程计算压缩因子
对非理想气体,可用位力方程拟合,可用压力或体积作为因子进行拟合。体积拟合公式为
统计力学指出,第二位力系数B反映两个气体分子间的相互作用对气体p-V-T关系的影响;第三位力系数C反映三个气体分子间的相互作用对气体p-V-T关系的影响等。一般用B和C两个系数就有足够精度。
上述两个方程有两个未知数Z和V,由于是非线性方程,因此,只能用迭代计算算法求解。即先假设某一变量的初始值,然后计算其结果,再用该计算结果作为第二次迭代运算的新值,如此循环,直到在网络中该变量的输入与输出相等。
用PLC功能块图可方便地实现这种迭代运算。程序如图6-36所示。变量声明如下:
图6-36 位力方程计算压缩因子的程序
图6-36的变量中,Temp是该气体温度(K);Pressure是该气体的压力(bar1bar=105Pa);V是体积(cm3);根据上述工程单位,气体常数Rconst=83.14;B和C是位力系数。
【例6-2】根据有关数据,异丙醇的位力系数为:B=-388cm3·mol-1,C=-26000cm6·mol-2。计算200℃(473.15K)、10bar异丙醇的压缩系数。
将数据键入图6-36所示的程序,下装并运行,图6-37是运行结果画面。
图6-37 压缩因子计算程序的运行结果
需注意,反馈变量V的初始值不能用系统约定的零,因它将造成除以零的出错。为此,在实际应用时,可设置一个0~1之间的小值。B和C的数据类型是实数,因此,输入时,应分别是-388.0和-26000.0。压力数值也用10.0输入。由于温度是热力学温度,因此,应选择热力学温度数值473.15。
由图6-37的运行结果可知,在规定的温度和压力下,异丙醇的压缩系数为0.88661581,计算精度很高。
(4)节流装置流出系数计算
节流装置测量流体流量的基本方程是
式中,q是单位时间内流过节流装置的流体质量流量(kg/s);d是工况条件下一次装置节流孔直径(m);β是直径比,指节流孔直径与管道内径之比;Δp是差压(Pa);ρ是流体密度(kg/m3);ε是流体可膨胀性系数;C是流出系数。
根据GB/T 2624.2-2006的有关公式,孔板节流装置的流出系数可按下式计算:
当D<71.12mm(2.8in)时,应增加下列项:+0.011(0.75−β)(2.8−D/25.4)式中,;;,是孔板上游端面到上游取压口距离与管道直径之比;,是孔板下游端面到下游取压口距离与管道直径之比;,是孔板上游端面到下游取压口距离与管道直径之比;
角接取压:L1=L2′=0;
D-D/2取压:L1=1;L2′=0.47;
法兰取压:L1=L2′=25.4/D;D的单位是mm。
由于节流装置流出系数C与径比β、雷诺数Re、取压方式及流体类型等因数有关,用式(6-5)描述。而径比β又与流体流量Q、节流装置差压值Δp、流出系数C、流体物性(密度ρ)有关,用式(6-4)描述。此外,流体的雷诺数Re与流体流量q、管道内径D、流体黏度μ等有关,常用下式描述:
因此,节流装置流出系数是节流装置径比、流体雷诺数、取压方式等因子的函数,而它们与所选最大流量、最大差压等有关,必须用迭代法求解。由于不同差压下流出系数并非常数,因此,当流量较小时,因流出系数增加,使输出差压偏小。图6-38是该程序的主要功能块及其连接图。
程序包含三个功能块,即Qcal、Ccal和Recal,分别用式(6-4)、式(6-5)和式(6-6)计算流量、流出系数和雷诺数。其中,流出系数作为反馈变量,实现迭代运算。图中,element_type选项可用于选择标准孔板、标准喷嘴等节流装置等(计算流出系数的公式不同),tap选项用于选择取压方式。
为实现在线补偿,可采用具有反馈变量和反馈路径的功能块编程语言,它的特点是可实现迭代运算。此外,可用周期执行的任务实现定时运算,因此,用PLC可方便地实现在线非线性补偿。
图6-38 在线非线性补偿的实施方案
图6-39是在线非线性补偿的仿真曲线,图中,差压从1kPa变化到100kPa,使流量测量范围度达10。而流出系数从0.6052变化到0.6112。由于实现非线性补偿,因此,实际流量得到补偿而下降。
图6-39 流出系数在线补偿的差压、流量和流出系数的关系
4.比较函数的应用
比较函数可应用于判别等类的逻辑运算。并被广泛应用于工业生产过程。
(1)旋转定位控制
某组合机床的工作台在旋转过程中需要控制其转速,常采用绝对值编码器检测旋转角度。当工作台旋转到规定角度T1处需减速,旋转到T2处开始制动,旋转到T3处停止。停止处角度误差大于规定值T4则报警。
1)格雷码转换为二进制码。格雷码是绝对编码,是一种错误最小化的编码方式。其位数和二进位码有相同的位数,因此,被广泛应用于编码器。
在二进制运算中忽略进位、退位,则加减运算就成为异或运算。格雷码在相邻位间转换时,只有一位产生变化,因此,大大降低状态转换时的逻辑混淆。10位绝对值编码器的格雷码转换为二进制码可用图6-40所示程序实现。也可用异或函数实现。
图6-40 10位绝对值编码器的格雷码转换为二进制码程序
2)旋转定位控制的量化。10位绝对值编码器产生数字0~1023,因此,可用一个字节的BCD码表示。将二进制数字转换为BCD码数值,可用数据类型转换函数。假设二进制数存放在%IW0,用W_BCD_TO_INT函数将编码值转换为整数ZJ。用EQ等于比较函数将该整数ZJ与规定的转角T1比较,如果相等则减速JS。如果旋转的角度大于或等于T2,则用GE大于或等于比较函数进行比较,满足条件后开始制动ZD。如果旋转角度等于T3,即用EQ等于比较函数比较ZJ与T3,满足条件就停止TZ。如果,停止时旋转角度已超过T4,即用GE大于或等于比较函数进行比较,满足时发送报警信号ALM。
结构化文本编程语言的程序如下:
ZJ:=W_BCD_TO_INT(%IW0); //BCD码转角值转换为整数ZJ
JS:=EQ(ZJ,T1); //如果转角等于T1,则减速JS
ZD:=ZJ>=T2; // 如果转角大于或等于T2,则制动ZD
TZ:=EQ(ZJ,T3) ; //如果转角等于T3,则停止TZ
ALM:=(ZJ>=T4)ANDNOTRUN; //如已停止及转角大于或等于T4,则发报警ALM
测量的旋转角度是模拟量,要转换为数字量,这称为量化。
设模拟量为y,量化后的数字量为y*,则有
y=K1qy*+K2 (6-7)
式中,K1是变送器输出输入量程范围之比;K2是零点压缩;q是量化单位,;M是模拟量全量程;N是寄存器位数;y*是数字量,只能取整数。对8位编码器,转换精度为0.5级;对10位编码器,转换精度为0.1级;对12位编码器,转换精度可达0.025级。
【例6-3】模拟量量化计算。
假设角度检测采用10位绝对值编码器,角度量程为0~360°,求240°和270°对应的数字量。
模拟量全量程M=360-0=360;N=10;则;;K2=0°;y=240°。
因y=K1qy*+K2,得,即16#2AA。
同样,270°对应的数字量是768,即16#300。
需注意,模拟量转换为数字量后是整数,因此,采用四舍五入获得整数。
该旋转定位控制系统的T1是240°,程序中,对应的数字应填16#2AA,T2是270°,程序中,对应的数字应填16#300,T3是360°,表示旋转一周后停止,因此,程序中,对应的数字应填16#000。该系统中,数字1表示角度0.35°,该旋转定位控制系统设置T4为2,即0.7°。如要提高旋转定位的控制精度,可改用12位绝对值编码器,这时,数字1表示0.08789°。
程序中,RUN信号是运转状态信号,当旋转运行时,其值为1。因此,只有在停止旋转后,如果超过T4,才发送报警信号。
(2)分度盘工位控制
分度盘每18°为一个工位,旋转一周有20个工位可进行控制。系统采用10位绝对值编码器检测旋转角度。为此,需要每隔18°有一个输出,用于作为该工位的操作信号。用等于比较函数实现旋转角度与不同工位对应角度的比较,并发送输出。此外,当分度盘到达某工位后,需发送停止旋转信号,直到该工位的操作结束。控制系统要求在电源掉电后或紧急停车后能够保持停车前的位置。
根据该控制系统分析,可采用等于比较函数实现,功能块编程语言编写的程序如图6-41所示。
需注意,用于检测分度盘角度的变量具有保持属性,即RETAIN属性。可保证在电源掉电时,该变量的值保持不变,在恢复电源后,仍能在掉电前的工位继续操作。
(3)自动增益控制
自适应控制系统是一类能够适应过程特性或环境条件的变化,自动调整控制器参数的控制系统。简单自适应控制系统根据过程动态特性和扰动动态特性来调整控制器参数。通常,该系统仅调整控制器的增益,因此,也称增益自适应控制系统。
图6-41 分度盘工位控制程序
依据偏差自动调整控制器增益的控制系统是一种简单自适应控制系统。假设采用PI控制算法,即
式中,f(e)是偏差e的函数。一种最简单的算法是f(e)=|e|,这表明,偏差大时控制作用增强,偏差小时控制作用缓和。这种系统在pH控制等工业过程控制中获得成功。
在PLC中可以设置一些偏差区间,在某一偏差区间,控制器用某一增益,不同的偏差区间有不同的增益,控制器根据偏差大小和对应的增益,计算出在该偏差下的控制器输出。
通常,偏差e较小,偏差函数f(e)的值较小,控制器输出较小,系统响应较平缓;偏差e较大,偏差函数f(e)的值较大,控制器输出较大,系统响应较激烈。偏差e和偏差函数f(e)的关系类似模糊控制,需根据所采用的A-D转换卡的转换精度等确定。通常,最大增益与最小增益之比不应大于4。
采用8位输入A-D转换卡,测量信号PV与设定SP的差是偏差e,将偏差的上限和下限存放在ES1~EX1、ES2~EX2、…、ES16~EX16等变量中,用大于或等于和小于比较函数将偏差与这些限值比较,如果,偏差在某一偏差区间,则输出为对应的偏差函数值,偏差函数值存放在K1~K16中。偏差值存放在PC变量内。程序如图6-42所示。
采用SEL选择函数,当偏差值PC在某一偏差区间时,其输出起动对应的SEL函数,选择函数返回值为对应的增益值,其他偏差区间的比较输出为0,对应的选择函数返回值为0,因此,加法函数的返回值是某一符合偏差区间的增益输出。
由于采用PI控制算法,因此,控制系统可消除余差。由于采用变增益,因此,该控制系统具有快速的动态响应和良好的静态性能。
5.运算函数的应用
逻辑运算可直接用PLC的逻辑函数和功能块实现。代数运算通常要用运算函数实现,例如,气体流量的温度、压力补偿运算、流量的开方运算、时间比例控制等。
图6-42 自动增益控制程序
(1)时间比例控制
时间比例控制是将控制器的连续输出转换成与输出成比例的开关量输出的一类控制。例如,在一些精细化工生产过程中常采用时间比例控制。时间比例控制将连续的控制器输出信号转换为占空比与输出成比例的开关量输出。通常,输出的接通时间与连续输出量成比例。因此,称为时间比例控制。接通时间与总周期之比称为占空比。
【例6-4】时间比例控制。
8位模拟量输出对应数字量是0~256。假设总周期T2是30s,即在30s内开关量有一次接通和断开过程。如果控制器连续输出是y,则接通时间应为
用图6-25所示方波信号发生器程序,定时器功能块T2的设定即为总周期,本例可输入T#30s。时间比例控制的程序如图6-43所示。
图6-43 时间比例控制程序
程序中,MUL函数的输入S1,初始值设置为16#7530,即十进制数30000,变量数据类型是DINT。同样,DIV函数的输入S2,初始值设置为16#100,即十进制数256,数据类型也是DINT。虽然30000没有超过整数INT的范围32767,考虑应用的广泛性,仍用长整数数据类型。数据转换为时间的函数也采用长整数转换为时间的DINT_TO_TIME函数,转换后的数值以s为单位。需注意,控制器输出Y也是长整数数据类型。
(2)比例积分微分控制功能块
计算机控制系统中,采用比例积分微分控制算法。其位置算法是
增量算法是
①积分控制功能块。积分控制功能块用于实现积分运算。它可消除控制系统的余差,改善系统静态性能。积分控制功能块的程序如下:
程序中,积分控制算法采用累加方法计算积分增量输出。
②微分控制功能块。微分控制功能块用于实现微分运算,它可以消除高频噪声的影响,改善系统动态性能。微分控制功能块的程序如下:
程序中,微分控制算法采用差分方法计算其增量输出:
实际应用时,为抑制高频噪声,采用如下算法:
③比例积分微分控制功能块。比例积分微分控制功能块实现比例积分微分运算,比例积分微分控制功能块调用积分功能块和微分功能块,其程序如下:
④应用示例。只需要调用PID1的实例。
【例6-5】PID控制。
(3)气体流量测量的温度压力补偿
气体流量测量时,由于气体密度受到气体实际温度和压力的影响,因此,气体流量测量时要进行温度压力补偿。补偿公式如下:
式中,下标n表示设计状况的数据,下标1表示实际工况下的数据;F、p和t是气体的流量、表压(kPa)和温度(℃)。
为在PLC实现上述补偿运算,需要进行加、乘和除的代数运算。当流量测量采用孔板和差压变送器时,还需要开方运算。
压力测量信号存放在%IW0,温度测量信号存放在%IW2,流量测量信号存放在%IW4,为减少PLC的计算工作,可将设计工况气体的表压和温度先转换为绝压和开尔文温度,即将设计工况气体的绝压值和开尔文温度值直接作为被除数或除数。温度压力补偿程序如图6-44所示。
图6-44 温度压力补偿程序
图示程序中,设计工况的气体表压是1600kPa,温度是50℃,因此,直接用数据1703.1和323.15代入,以减少程序运算工作量。
实际应用时,考虑到输入信号是十位A-D转换卡输入,因此,采用两个字节的字(WORD)存放,同样,输出数据也用字存放。
(4)模除函数的应用
我国古代第一部数学专著《九章算术》有盈不足卷,现将线性同余方程问题举例说明。
【例6-6】模除函数的应用示例。
今有梨一堆,不知其数。以3个一组分组,余1梨;以5个一组分组,余2梨;以7个一组分组,余3梨;以11个一组分组,余4梨。问梨至少有几个?
设梨数为X,用A、B、C、D分别表示3、5、7、11,用AM、BM、CM、DM分别表示余数1、2、3、4。输入和输出数据类型可选DINT。
功能块程序如下,本体程序如图6-45所示。
图6-45 模除函数应用程序
将有关数据输入就可获得,总的梨数至少是367个。
图6-46是X输出的变化曲线。
本功能块可用于4个整数数据类型的输入变量。如果输入变量小于4个,可将不足的数据变量设置为1,并将其余数设置为0。当多于4个输入变量时,可根据程序的结构扩展。
数据类型与X的大小有关,可改变输入和输出数据类型以扩展其应用范围,例如,可以都设置为ULINT,以适应不同的应用需要。
如果输出数据X大于输入A、B、C、D之积,则系统无解。为简化,本程序未设置有关的判别条件。
图6-46 X输出的变化曲线
6.移位函数的应用
移位函数在时间逻辑控制系统和顺序逻辑控制系统中有大量应用。
(1)操作权限确认控制
【例6-7】操作权限确认控制。
采用4个按钮作为操作权限确认按钮,其中,3个按钮S1、S2和S3用于输入操作权限口令数值,第4个按钮S4用于确认输入的数值。如果输入的口令数值符合设置的数值,则输出LS置1。程序如图6-47所示。
图6-47 操作权限确认程序
变量声明见表6-1。
表6-1 操作权限控制程序的变量表
变量SF1、SF2和SF3用于移位,它们的数据类型是字节,因此,每个按钮最多可按8次,当按的次数超过8次,表示重新开始计数。如果采用的数据类型是字,则每个按钮最多按动次数可达16次,它使操作权限确认的安全性大大提高。需注意,设置的权限数值由字的某位确定。例如,权限数值是13、15、8,SF1、SF2和SF3分别是%QW0、%QW2、%QW4,则与逻辑函数的输入地址应设置为%QX1.4、%QX3.6和%QX5.7。
程序中,与函数的三个输入数值是设置的权限数值,程序中为1、6、8,即当S1按1次,S2按6次,S3按8次后,再按S4按钮,就能使输出LS置1,并用于操作权限确认,如果按的次数不符合上述数值,则表示操作权限不符合,不能使LS置1。
需注意,用于移位的变量是SF1、SF2和SF3,其初始值需设置为16#80,使系统起动后,三个移位变量的初始值都是第8位为1。该设置能保证按下的次数等于计数数值,即按第1次,计数数值为1,按第2次,计数数值为2等。
输出LS可用于单按钮起停控制程序,程序不多述。
(2)长循环移位控制
需要移位的步数很大时,需要多个字、双字或长字之间移位。
【例6-8】长循环移位的示例。
控制系统要求移位21步。为此,可用两个字的移位实现。两个字可最大移位32步,程序用计数器计数到21步后进行循环。表6-2是程序的变量表。图6-48是其功能块图程序。
程序用SHL实现字为单位的不循环左移。用计数器C1对移位步数计数。当计数步数为1时,用比较函数将第一个字的低位置1,从而实现初始值的置位。当计数步数为17时,将后续字的低位置1,实现从上一字到下一字的移位操作。当计数值达到循环设置值21时,用计数器C1的输出进行自复位,实现循环操作。
上述程序也可用于字和双字的移位。例如,当SF2采用双字时,就可实现最大48步的循环左移位。此外,前后字之间可以不连续。例如,SF1的地址是%QW0,SF2的地址可在%QW6等。
表6-2 长循环移位控制程序的变量表
类似地,将左移函数改为右移,并对初始值进行更改,可用于长循环的右移。
图6-48 长循环移位功能块图控制程序
S2和S3分别是SF1和SF2的低位地址。例如,SF1地址是%QW0,则S2的地址是%QX0.0;SF2的地址是%QW2,则S3的地址是%QX4.0。
S1是移位信号,当上述程序用于时间顺序控制系统时,S1是各个时间脉冲信号。当上述程序用于顺序功能表图的应用时,S1是各转换条件信号。
需注意,虽然最后一个移位单元的移位因计数器计数到计数设定值而中止,但其移位仍继续进行,因此,程序中这些位一般不能用于其他应用。例如,本例中,程序不能使用%QX2.5~%QX2.7、%QX3.0~%QX3.7这些位。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。