本实验结合进纸滚筒电动机的速度反馈设计一个闭环系统,并用功能块来实现。
驱动控制系统用来调节送到造纸机中纸的速度,如果进纸滚筒加速或减速都有可能把纸撕破,因此要求对进纸滚筒的电动机实际速度进行监控。下面将在在ControlLogix系统中使用驱动功能块创建一个如图3-50所示的闭环控制系统,并对用到的PI指令设置比例和积分增益以调节速度。
图3-50 闭环控制系统结构图
在这个实验里用ControlLogix DEMO箱中的第一个模拟量输入口(AIO)代表进纸滚筒的设定值,将0~10V的信号定标以代表电动机的RPM设定值。
由于使用0~10V电压信号模拟速度值输入,范围为0~10V的电压表模拟速度值输出,故可以定标如下:
输入整定为:0V=0RPM,10V=1000RPM;
输出整定为:0RPM=0V,1000RPM=10V。
把速度设定值和实际速度值相减得到一个偏差,再将偏差作为PI功能块的输入,在PI调节器的作用下就可以产生一个速度的校正值,然后再反馈回系统。
用PI回路来控制驱动控制系统,所以可以用每10ms运行一次的周期任务,PI算法中的积分增益取决于下列公式中的时间间隔:
Output=Kp*Error+Ki*(deltaT)+IA,其中deltaT为时间间隔。
当PI或PID回路作为周期任务执行时,回路中用到的时间间隔和周期任务的时间间隔是一样的,所以,这里PI回路中的deltaT将自动设定为10ms。
本实验主题:
●创建功能块图项目控制驱动系统。
●采用闭环控制。
●闭环系统中选择起始触发的选择。
●采用比例和积分增益。
●功能块报警面板。
实验步骤:
1)打开RSLogix5000软件。新建项目“Motor_Speed3”,如图3-51所示。
图3-51 新建项目“Motor_Speed3”
2)右键单击“Tasks”(任务)文件夹,从弹出菜单中选择“New Task…”(新建任务)并命名任务为“Outfeed”。设定周期为10ms,参数设置如图3-52所示。
我们已经创建了一个每10ms执行的周期性任务,我们还必须在里面再创建一个运行程序。
图3-52 设置任务属性
3)在项目资源管理器中,右键单击周期型任务“Outfeed”,从弹出菜单中选择“New Program”(新建程序),把程序命名为“Drive_system”,如图3-53所示。
完成后单击“OK”。
在项目资源管理器下可以看到如图3-54所示画面。
图3-53 命名程序
图3-54 项目资源管理器
4)接着再在程序中创建一个运行的例程(routine)。
右键单击程序“Drive_system”。选择“New Routine...”(新建例程)。例程类型为“Function Block Diagram”(功能块图),如图3-55所示。
图3-55 新建例程
项目树如图3-56所示。
5)现在需要把该“Routine”规划到运行程序中。
右击程序“Drive_system”,在“Properties”(属性)的“Configuration”选项卡中选择“function_blk”作为主例程,如图3-57所示。
由图3-58可以看出,外部电压输入(速度给定值)到模拟量输入模块后,整定为项目量(转速)后与速度反馈相减计算偏差值,然后对偏差值进行PI运算,最后得出速度控制值。
下面我们编程实现虚线框内的偏差值PI控制算法。
注意:Scale(项目量整定)这部分工作无需编程,可以在模拟量模块通道组态过程中完成,Alarm(报警)同样如此。
图3-56 项目资源管理器
图3-57 指定主例程
图3-58 速度调节系统结构图
创建功能块程序中所需的标签Command_Speed、Output_Speed和Actual_Speed。这些标签都是Drive_system程序域标签。右键单击“Program Tags”,从弹出菜单中选择“New Tag”(新建标签)。输入如图3-59所示。
创建完成后,双击Drive_system→Program Tags,Drive_system程序域中标签如图3-60所示。
接下来,编写功能块程序。在项目资源管理器中,单击“fuction_blk”功能块例程。
与前面的实验相同,首先需要添加的功能块为IREF(Input Reference)。并为两个IREF功能块输入标签Command_Speed和Actual_Speed,如图3-61所示。
图3-59 创建新标签
图3-60 Drivesystem程序域中标签
图3-61 添加功能块IREF
如果将给定速度“Command_Speed”减去电动机的实际速度“Actual_Speed”,用产生的偏差去校正它,所以接下去要添加一个减法功能块。
找到工具栏中“Favorite”大类,单击“SUB”指令,在图上添加一个减法功能块。在SUB功能块上双击参数按钮,弹出如图3-62所示属性框。
注意功能块里的参数,“SourceA”代表设定点或期望的速度。该系统中需要将“Com-mandSpeed”与“SourceA”相连。
把IREF模块“Command_Speed”连到减法功能块的“SourceA”。
要把设定值减去电动机的实际速度,就需要将另一个IREF指令“Actual_Speed”作为输入参考加到“SourceB”上,如图3-63所示。
图3-62 SUB属性框
图3-63 连接功能块
减法功能块的输出(Dest)代表电动机实际值和理想值间的偏差。把这个偏差加到PI指令中,计算校正值。从工具栏“Drive”中选择PI指令,如图3-64所示。
图3-64 选择PI指令
把减法功能块的“Dest”这一点连到PI指令的输入,如图3-65所示。
图3-65 连接功能块
打开PI指令的参数表,如图3-66所示。
图3-66 PI指令参数表
在功能块编辑器中PI功能块与梯形图编辑器中使用的PID指令稍微有些不同,首先它没有微分增益,只有比例和积分增益。所以,PI直接把增益用到输入信号(偏差)上而不是输入信号的变化量上。其次,必须在PI功能块以外产生偏差(用减法功能块作设定值和反馈量的减法运算),再把这个偏差反馈作为PI功能块的一个输入。
比例增益:这个增益用来使得过程变量很快到达设定值,然而,过大的增益会引起过程变量超调,从而使系统不稳定,在这个实例中,就会撕破纸筒甚至损坏设备。而增益太小又会使系统响应时间过长,输出响应可能比较稳定,但永远到不了设定值。
积分增益:这个增益用于使得过程变量稳定在某一值,通过消除余差到达设定值,控制器输出的变化量正比于偏差存在的时间总量。所以,偏差存在的时间越长,积分增益需要校正的就越多,如果这个值太大,系统本身将会超调变得不稳定,始终在设定值上下振荡。
一开始只需在系统中加入比例增益。(www.xing528.com)
把比例增益(Kp)设为1。
把“HighLimit”设为1000,这样PI指令的输出就不会超出1000,这是电动机运行的最大值。
把“LowLimit”设为0,这样PI指令的输出就不会是负值,送给电动机的速度也不会低于0r/min。
选择“OK”。
PI指令的输出就是要送给进纸滚筒的新指定速度的校正值。将PI指令的输出值与一个OREF功能块相连,并为该OREF功能块添加标签“Output_Speed”,如图3-67所示。
将PI指令的输出与SUB指令的“SourceB”相连,构成闭环系统,如图3-68所示。
对于闭环控制系统而言,如果一组功能块在同一闭环内,则控制器无法确定哪个功能块
图3-67 编辑OREF功能块
图3-68 编辑闭环回路
最先执行。也就是说,它无法解析回路,如图3-69所示。
图3-69 无法解析回路
为确定功能块的执行顺序,可使用假定数据有效(Assume Data Available)指示来标记用于创建回路(反馈线)的输入线。对于本实验而言,功能块1(SUB)使用功能块2(PI)在上次例程执行后的输出。假定数据有效(Assume Data Available)指示确定了回路内数据流向。箭头指示了数据输入到回路的首个功能块。切忌使用假定数据有效(Assume Da-ta Available)指示来标记回路中所有连接线,如图3-70所示。
程序编写完成。接下来,进行I/O组态。
注意:要将外部电压输入0~10V整定为转速值0~1000r/min,传统的方式需要添加专门的工程量整定指令。对于ControlLogix平台,只需要在模拟量输入/输出模块向导中就可以完成工程量整定、校准和报警等功能的设置,无需专门编写程序。
添加一个模拟量输入模块,用作速度给定。单击“I/O Configuration”文件夹,选择“New Module”(添加新模块)。从添加模块列表中选择“1756-IF6I”。从弹出对话框中输入如图3-71所示属性。
图3-70 标记反馈线
图3-71 “1756-IF6I”模块属性对话框
输入后,单击“Next”,弹出如图3-72所示对话框。
图3-72 “1756-IF6I”默认属性
该页不修改,单击“Next”,弹出如图3-73所示对话框。
该页只能在线监视,单击“Next”,弹出如图3-74所示工程量整定对话框。
该页用于设定工程量整定0~10V对应0~1000r/min。完成后,单击“Next”,弹出报警设置对话框,如图3-75所示。
图3-73 “1756-IF6I”可在线监视的属性
图3-74 工程量整定对话框
图3-75 报警设置对话框
在该页分别设定高高报警、高报警、低报警以及低低报警。一旦超过该值,相应报警位置位以提示用户。
单击“Next”,弹出校准对话框,如图3-76所示。
图3-76 校准对话框
模块各通道的校准只有在线状态下方可进行,按下“Next”,弹出如图3-77所示模块属性对话框。
图3-77 模块属性对话框
通过该对话框可在线浏览模块属性,此时“Next”按钮呈灰色,表示所有对话框均设置完,单击“Finish”(完成)。
下面添加一个模拟量输出模块用作输出控制。
单击“I/O Configuration”文件夹中选择“New Module”(添加新模块)。将模拟量输出模块通道依次按各对话框设置,其中,模块属性和工程量整定如图3-78所示。
报警设置对话框如图3-79所示。
同时利用“Aliasfor”(别名标签)完成程序标签与I/O地址间映射。
图3-78 工程量整定对话框
图3-79 报警设置对话框
注意:由于没有实际的电动机和编码器,实际转速(Actual_Speed)值也就无法测得,故在此使用模拟量输出模块0通道“Local∶5∶O.Ch0Data”值模拟实际转速。
以“Command_Speed”标签与地址“Local∶4∶I.Ch0Data”映射为例,左键单击选择“Drive_system”程序中“Program Tags”(程序域标签),单击右键在弹出菜单中选择“Edit Tags”(编辑标签)。弹出标签编辑窗口,如图3-80所示。
图3-80 标签编辑窗口
如果对“Command_Speed”标签映射的I/O地址很熟悉,可以直接在“Alias For”一列中输入该I/O地址。如果对该I/O地址不熟悉,我们可以通过软件来帮助输入地址。左键单击“Command_Speed”一行的“Alias For”(别名),并单击出现的向下箭头。逐层展开,直至出现如下画面,选择“Local∶4∶I.Ch0Data”,表示标签“Command_Speed”与“1756-IF16”的通道0(即“Local∶4∶I.Ch0Data”)建立了映射关系,如图3-81所示。
图3-81 标签与地址的映射关系
按照上述步骤,建立标签“Actual_Speed”、“Output_Speed”与“Local∶5∶O.Ch0Data”的映射关系。建立完成后,标签编辑窗口如图3-82所示。
图3-82 标签编辑窗口
将程序下载到1756-L6H控制器中如图3-83所示。
图3-83 扫描到控制器
单击“Download”(下载)按钮,下载后显示RSLogix5000界面如图3-84所示。
图3-84 RSLogix5000运行界面
通过PI指令的参数来看一下比例增益和积分增益对输出响应有什么影响。
首先,将比例增益Kp值设为0.5,并调整“Command_Speed”的值(旋转AI0),观察输出值大小,如图3-85所示。
图3-85 观察输出值
可以看出,实际转速值与给定转速值之间有较大的偏差。
再添加积分增益看看它对输出响应有什么影响。
将积分控制算法中参数“Wld”设为1.0,然后选择“OK”,如图3-86所示。
图3-86 将积分参数“Wld”设为1.0
再来监视实际转速值,如图3-87所示。
图3-87 监视实际转速值
由此可以看出,系统中的任何小偏差都可以通过积分增益来校正,使RPM变得平稳,然而在现有系统的基础上有时到不了1000r/min,这是因为ControlLogix DEMO箱上的端口输出值在旋钮右转到底时,可能并不是10V(检查“Local∶0∶I.Data.0”中的值),另外变频器可能对系统产生一些影响,在这个实验里没有考虑在内。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。