6ES7223-1PL22-0XA8产品型号
6ES7223-1PL22-0XA8产品型号
1 引言
本系统是一套10层模拟电梯控制系统,可以实现实际电梯的基本功能。初为了实现电梯的楼层检测、换速及平层停车的控制,是通过在井道内每一楼层装设上下换速、平层挡光板并在轿厢上安装光电传感器的方式[1]来实现的。实验表明,这种方法由于挡光板和光电传感器的安装位置、相对距离等有误差,使电梯运行时常发生机械故障,并且由于挡光板有一定的宽度,造成平层精度不高。改用脉冲计数的方式不仅能实现对电梯的速度控制,还能在不增加任何硬件的情况下对电梯实现位移闭环控制,同时提高了电梯平层精度。本文将以Rockwell的CompactLogix L31控制器和PowerFlex 70变频器为例,介绍利用PLC、变频器及脉冲计数电路进行位移控制的电梯控制系统,分析影响电梯平层精度的因素并提出改进措施。
2 电梯控制系统介绍
2.1 电梯控制系统硬件组成及软件实现
本系统采用集选控制方式,由电力拖动系统和电气控制系统两部分组成。电力拖动系统主要包括电梯垂直方向主拖动电路和轿厢开关门电路,其中电梯垂直方向主拖动电路由变频器控制的三相异步电动机作为拖动动力源,轿厢开关门电路则采用易于控制的直流电动机作为拖动动力源;电气控制系统由众多呼叫按钮、指示灯、LED 7段数码管和光电编码盘、脉冲计数电路、变频器以及控制部分的核心器件PLC等组成。PLC集信号采集、信号输出和逻辑控制于一体,与电梯电力拖动系统一起实现了电梯控制的所有功能。电梯控制系统硬件结构框图见图1。
图1 电梯控制系统硬件结构框图
电梯的软件设计由若干个功能模块组成,每个功能模块由相应子程序实现,再由主程序分别调用子程序。主要包括以下几个子程序:楼层检测、指示灯显示、手动/自动开关门控制、轿厢内外呼梯记录、呼梯优先级判断、变频器控制、电梯运行控制。其中关键部分包括两点:一是对多个呼梯信号进行优先级判断,根据顺向近优先响应、逆向远优先响应的原则实现电梯正确响应呼梯;二是准确进行楼层检测,动态判断电梯所在楼层、换速及平层位置(由于篇幅限制,具体程序不再给出)。
2.2 电梯控制系统脉冲选层控制原理
2.2.1 利用脉冲计数实现电梯位移控制
将一增量式光电编码盘[2]与电机同轴安装,电梯上下运行时,码盘以与电机同样的角速度转动,产生A ,B 两路相位相差90°的脉冲,通过判断A ,B 的超前滞后关系确定电梯运行方向。每个脉冲对应井道中电梯所走的平均距离l 及电梯每层对应的平均脉冲数N 计算如下:
式中:D为限速器绳轮直径,为28.5mm;P为码盘旋转一周对应的脉冲值,为1200p(p为脉冲单位);L为电梯平均每层距离,为160mm。将D , P , L 分别代入式(1)、式(2)中,可计算得l≈0.0746 mm/p,N≈2145p。
电梯全程的每一个位置对应一个脉冲计数值,10层全部脉冲值(包括顶层和底层的平层位置到上下限位开关之间的距离所对应的脉冲值)约为20149p,根据电梯各个位置对应的位移和每个脉冲对应井道中电梯所走的平均距离l可以计算出相应的脉冲数,通过比较判断所记录的脉冲数就可实现电梯的位移闭环控制。由l的值可以看出,采用脉冲计数方式实现电梯的位移控制可以得到很高的控制精度。
2.2.2 脉冲计数的两种实现方式
通过计算输入脉冲数检测电梯轿厢位置,可以有2种计数方式:计数方式和相对计数方式。计数指采用坐标累计所有楼层脉冲数,每一层都对应唯一的脉冲数,这样会占用较多的存储空间。相对计数方式指采用相对坐标进行计数,每次从平层点开始计数到下一平层点,然后计数器复位,每一层均从该层层高对应脉冲值开始加/减计数。采取这种方式可以节省存储空间,但是可能出现乱层现象,需要在每一层的平层处增加传感器等硬件发出复位信号或通过编制程序以避免乱层现象发生。由于电梯加工精度不高,每一楼层对应脉冲数可能不同,综合考虑后本套模拟电梯控制系统采用了计数方式。
3 系统实现位移控制的分析
3.1 CompactLogix系列控制器的工作方式及编程环境
本系统是由1个CPU模块、1个电源模块、3个数字量输入模块、4个数字量输出模块和1个PowerFlex 70变频器构成的电梯控制系统。其中PLC采用CompactLogix L31控制器,它属于CompactLogix系列,是Rockwell目前主推的Logix控制平台[3,4]中的一款中型PLC。其具体工作方式[4~6]分析如下。
(1) 控制器采用具有优先级的实时多任务操作系统,支持8个可组态任务。其中有一个连续性任务,其他为周期性任务或事件性任务(优先级为1~15,数字小的优先级高),每个任务又包括若干程序以实现逻辑控制。
(2) Logix系统中设备之间通过“连接(connection)”或者“非连接的信息交换(unconnected message)”两种方式进行数据通讯。CompactLogix系统使用“连接”传送I/O数据,对于本地I/O模块,控制器都会和每个模块分别建立一个直接连接,即控制器与I/O模块之间建立一种实时数据传送链路。
(3) 系统本地框架中的数字量输入模块采取多信道广播数据(循环数据交换)的工作方式。由RPI(requested packet interval)指定模块多信道广播(multicast)其数据的速率,如果在RPI时间帧内没有改变状态COS(change of state)发生,模块就按RPI指定的速率来多信道广播数据,否则将改变后的状态按RPI发送。对于系统本地框架中的数字量输出模块,控制器会分别按RPI和在任务执行结束时将数据发送到相应模块。RPI设定值范围为1~750ms,但它会受系统本地框架中扩展I/O模块数量的影响,一般情况下,1~4个模块RPI快为1.0 ms,5~16个模块RPI快为1.5ms,17~30个模块RPI快为2.0ms。
(4) 控制器使用一个优先级为7的任务专门用来处理I/O数据。这个周期性任务按RPI执行,只有优先级高于7的任务方可中断处理I/O数据。即I/O的更新同逻辑的执行过程异步进行,这便于应用系统尽可能收到更新信息。CompactLogix系列控制器的编程环境采用RSLogix 5000[7]。
3.2 控制系统的通讯方式及软件组态
CompactLogix L31控制器通过RS232串行口、采用DF1全双工通讯协议实现控制器与PC 的点对点通讯。连接好硬件线路后,利用RSLinx软件来对链接工作站和控制器的网络组态通讯驱动程序,实现控制器与PC的通讯。可以通过RSLinx的自动组态功能实现控制器型号、波特率、校验、停止位、错误检测等的自动组态。本系统中对于CompactLogix L31控制器所带的两个RS232串行口,采用其中的完全隔离端口(通道0),如果采用控制器的非隔离端口(通道1),需要在控制器与终端设备之间安装隔离器[5,6]。
3.3 变频器的组态及PLC控制
通过变频器的LCD HIM(液晶显示人机接口)进行相关参数的组态,变频器的组态包括:组态变频器的输入电压,设置电动机的额定数据(额定电压、额定电流、额定转速、额定功率等)及加/减速的斜坡时间,优化电机转矩,设置变频器的大/小频率及七组预置频率值,设置变频器的方向模式等。
变频器的PLC控制是通过PLC的输出模块控制变频器的数字IO端子块实现的。PLC的数字量输出模块与变频器的数字IO端子块的接线如图2所示。图2中,PLC数字量输出模块1769-OB16的电源端+VDC接24V直流电源的正极、DC COM端接24V直流电源的负极并与PowerFlex 70变频器数字I/O端子块的8号接线端(数字输入公共端)短接。PLC数字量输出模块的OUT0~OUT5输出接线端分别与变频器数字I/O端子块的1#~6#接线端连接,实现PLC对变频器的控制。图2中,变频器数字I/O端子块1#~6#接线端对应的参数名称和组态信息如表1所示。PLC数字量输出模块的OUT3、OUT4、OUT5(与变频器数字I/O端子块的4、5、6接线端相对应)输出状态的不同组合对应七组预置频率中的不同值,对应关系如表2所示。这样PLC可以根据轿厢当前楼层与要达到的楼层间的距离向变频器发送不同的频率命令。
图2 PLC数字量输出模块与变频器数字IO端子块间的接线图
表1 与变频器数字I/O端子号对应的参数信息
表2 PLC OUT3、OUT4、OUT5选通与预设频率间的对应关系
3.4 脉冲计数的实现
由于传统PLC的I/O控制采取集中输入、集中输出的方式,所以对于宽度小于扫描周期的脉冲信号必须采用高速计数器来实现脉冲计数,否则可能会丢失大量的脉冲信号。对于CompactLogix控制器,可通过扩展高速计数模块(1769 HSC)实现脉冲计数。考虑到CompactLogix控制器本身的I/O更新和逻辑执行是异步进行的特点,本系统中自行设计了一块计数电路板,从而代替高速计数模块来解决高速脉冲计数的问题。
计数电路板的计数模式为环计数模式(一般高速计数模块的计数模式[2]有两种:线性计数模式和环计数模式),计数范围为0~+65535,双向计数。脉冲计数电路板以4片74LS193芯片(高速计数芯片)为主要元件,还包括电平转换电路、计数器复位电路等其它辅助电路。设计过程中为提高抗干扰能力,对于输入信号采用了差分电路;同时为提高电路的响应速度,电平转换电路中的光耦采用了高速光耦。将脉冲计数电路板的输出信号引入PLC的一块扩展输入模块,通过直接读取此模块的输入状态得到对应的脉冲数,由PLC控制计数电路清零复位。脉冲计数电路结构图见图3。
图3 脉冲计数电路结构图
采用这种方式取代高速计数模块,虽然硬件设计增加了系统的开发时间,且计数精度没有高速计数模块高,但实验表明电梯仍然可以实现较高的平层精度,取得了良好的实验效果,并且节省了购买高速计数模块的昂贵费用。
4 实验结果分析及改进
4.1 实验结果分析
针对本10层电梯控制系统,分别编写简单控制程序(只实现计数和停车功能)和复杂控制程序(实现了电梯的所有基本功能)并进行多次实验,表3给出了部分实验数据。其中任务与程序的大扫描时间可通过读取程序运行过程中的相关参数得到;记录从发出停车指令到实际停车所需脉冲数并对多组数据求平均值,可得到电梯停车所需脉冲平均值;电梯快速运行时码盘发出脉冲的周期可通过如下方式求得:编制简短的延时程序,记录延时时间及脉冲变化值并求得脉冲的周期,对多组实验数据求取平均值。以电梯平层停车所需时间(可由电梯平层停车所需脉冲数乘以脉冲的周期折算得到)为例,通过比较得出,影响电梯平层精度的因素除减速机齿轮啮合间隙等机械因素外主要有以下4点:
(1) 脉冲计数电路的精度限制造成计数累计误差较大;
(2) 电梯轿厢有惯性且变频器响应有延时,故电梯平层停车需要一定延时时间(t1);
(3) 虽然负责计数的输入模块各输入口的状态是按RPI不断刷新,但是程序中对应脉冲值只有在控制器扫描时才被刷新(刷新的大延时时间为控制器的大扫描时间),当程序较复杂扫描时间大于脉冲宽度时,程序中读取的脉冲数值就不是一个连续变化的数,即扫描间隔会造成一定的死区时间(t2);
(4) 从发出停车指令到输出端口状态的刷新存在一定的延时时间(t3)。
表3 电梯控制系统实验数据
实验数据分析如下。
当程序较简单,扫描时间较短时,可以通过判断单个脉冲值实现楼层检测、换速及平层停车,即平层误差可在±1个脉冲的当量范围,平层精度较高。根据表3所列数据,电梯停车所需时间为t=t1+t2+t3=t1=34×1.828=62.152ms,其中t2= 0,t3=0,可见电梯停车时间仅为克服电梯惯性和变频器响应所需时间(t1)。但是为了使电梯控制系统可实现的功能更为完善,往往逻辑程序较复杂扫描时间较长,此时t2,t3不为零,必须通过一个范围来判断脉冲值以实现位移控制。电梯停车所需时间为t=t1+t2+t3=62.152+(37-34)×1.828=67.636ms。例如,需将2300≤Local:7:I.Data ≤2310作为楼层检测、换速或者平层停车的判断条件,其中Local:7:I.Data表示位于第7槽的数字量输入模块对应的状态即输入脉冲值。
4.2 改进措施
为减小累计误差,可待电梯运行到底层时,通过硬件方式将计数器清零复位;由于t1为一固定值,故可通过软件程序避免由t1带来的平层误差。实验表明,采取以上措施并考虑减速机齿轮啮合间隙等机械因素的影响后,电梯平层精度可达±1mm。为了进一步提高电梯位移控制的精度,实现平稳、快速、准确平层停车,必须尽可能减小t2和t3,本系统采用了以下优化软件程序的改进措施。
(1)程序中适当增加读取扩展输入模块输入状态(Local:7:I.Data)的指令,从而尽量增加控制器对脉冲值的扫描频率,减小刷新延时时间。
(2) 选取较小的RPI如1.5ms。
(3) 采用中断的方式增加扫描频率。例如,控制程序在连续性任务中实现而将判断输入脉冲值(Local:7:I.Data)的指令放到一个周期性任务中,选择较小的周期如1.5ms。考虑到负责处理I/O数据的周期性任务的优先级为7,此处周期性任务的优先级选择1~6。
实验表明,采用改进的方式后电梯可以实现良好的运行效果,平层精度小于±0.5mm。
5 结束语
采用光电编码盘脉冲计数的方式取代井道中安装换速挡光板的传统方式,实现对电梯的位移闭环控制,不仅提高了平层精度,而且软件编程灵活,便于实现全数字化控制。多层电梯平层精度的提高,除了要保证机械装置的精度较高外,关键在于选择合适的控制器以及对控制算法的改进,虽然采用自行设计的计数电路板代替高速计数模块使脉冲计数的精度有些影响,但由于CompactLogix系列控制器采用新的工作方式,电梯仍可实现较高的平层精度。以后可以尝试采用带工业以太网口的控制器(如CompactLogix L32E),通过以太网代替串行通讯或者通过现场总线实现控制器与工作站的通讯,从而实现上位机对电梯的监控或对多台电梯的qunkong,这也将成为继续提高我国电梯控制水平的发展方向。
程序中any的个字表示数据类型为字节,第2个字表示字节数为12,第3个字表示不是db,第
4个字表示i区。因为起始地址(idrivebaseinaddress)是字节地址(图中用16个b表示),需要将它左移3位,相当于乘以8(一个字节8位),作为间接寻址的指针的基础,再用od指令叠加上指针高字节的地址区信息16#81。
any用的是i区,不是pi区。
假设i区的起始地址(idrivebaseinaddress)为x,sfc20的输入参数(any)的实际地址为p#ix.0 byte 12。
当然也可以在调用sfc20时直接写p#ix.0 byte 12,不过老外这种模板的优点是通用,灵活。但是要看懂程序的门槛比较高。
如图所示,pid向导会生成一个存储区说是用来装参数的,pid指令在用的时候tbl也是用来指定参数表的首地址的。我就想问,pid指令的tbl是需要重新分配存储区呢还是直接用向导生成的,如果是后者,应该从生成的存储区的哪个字节开始?
答:
1、指令中tbl 是回路表的起始地址,loop 是回路编号。如图为vb0开始。
2、pid指令的tbl向导生成的。
pid指令(功能块)使用了一个120个字节的v区参数表来进行控制回路的运算工作;除此之外,pid向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击“suggest address”,则向导将自动为你设定当前程序中没有用过的v区地址。 自动分配的地址只是在执行pid向导时编译检测到空闲地址。向导将自动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致pid控制不执行。
用西门子编程时,可以用到功能块fb和功能fc(fb、fc都是组织块)资料上说fb与fc都可以作为用户编写的子程序,但是我不明白这两个组织块之间到底有什么区别阿?在应用上到底有什么不同之处吗?
fb--功能块,带背景数据块
fc--功能,相当于函数
他们之间的主要区别是:
fc使用的是共享数据块
fb使用的是背景数据块
举个例子,如果你要对3个参数相同的电机进行控制,那么只需要使用fb编程外加3个背景数据块就可以了,但是,如果你使用fc,那么你需要不断的修改共享数据块,否则会导致数据丢失。fb确保了3个电机的参数互不干扰。
fb,fc本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。他们的大区别是,fb与db配合使用,db中保存着fb使用的数据,即使fb退出后也会一直保留。fc就没有一个的数据块来存放数据,只在运行期间会被分配一个临时的数据区。在实际编程中,是使用fb还是fc,要看实际的需要决定。fb的好处楼上以讲得很好了。
fb与fc没有太大的差别,fb带有背景数据块,而fc没有。所以fb带上不同的数据块,就可以带上不同的参数值。这样就可以用同一fb和不同的背景数据块,被多个对象调用。
fc和fb像c中的函数,只不过fb可以生成静态变量,在下次函数调用时数据可以保留,而fc的变量只在调用期内有效,下次调用又重新更换。
s7-300plc中的fb和fc的分别?fb带有自己的背景db而fc没有自己的背景db,用fc 和fb 有什么分别呢,他们都能实现控制功能,到底该用fb还是该用fc,什么时候用fb什么时候用fc?
fc和fb像c中的函数,只不过fb可以生成静态变量,在下次函数调用时数据可以保留,而fc的变量只在调用期内有效,下次调用又重新更换。 每次调用fc的i/o区域必须要自己每次手动输入,而fb就不要,省去不少麻烦,如果在上位机控制直接输入db控制地址就可!fc与fb的区别。
rlo上升沿检测指令 -(p)- 的作用是不是会受程序扫描时间影响?
(1)我在fc块里面用到-(p)- ,发现程序比较长的时候就出现下图中情况,根本不能用来检测上升沿;
(2)当我把ob1其他的程序都删掉时,只调用这个fc块时,就可以检测上升沿,不会有问题。
(3)另一个是我尝试-(p)-指令要是不在fc块,直接在ob1中,也是不会有问题。
答:
p线圈(上升沿检测指令)上面的地址用来保存上一扫描周期的rlo的值,不能使用fb、fc的临时局部变量。改为全局变量或fb的静态变量就可以了。
因为调用程序时同一级fb、fc的临时变量公用同一片地址区,前面调用的块的临时变量被后面调用的块的临时变量覆盖,所以上升沿检测指令不能正常运行。
在ob1中只调用一个fc,公用的地址区变成该fc独用,所以没有问题。
ob1的临时变量的地址区是ob1单独使用的,所以程序放在ob1里也没有问题。