前言:
为了让大家对典型PLC系统有一个全面、系统地了解,本着先易后难的原则,尽量通俗易懂地阐述PLC系统的架构。共分5个章节:1. 学习PLC之前应该掌握的知识。2. ControlLogix系统的基本结构。3. ControlLogix系统的构成与应用。4. PLC软件设计及上位机监控画面设计。4. ControlLogix平台的网络架构。
一、学习PLC之前应该掌握的知识。
1.过程控制对象的类别
A.DI(开关量输入):通常为各类阀门的开关状态、电机的运行停止以及各种可以用0、1状态表示的过程量和报警信息、跳闸状态等等(如:水位、流量、温度、压力、转速等的高低报警)。DI查询的电压等级在系统设计时根据各种不同的控制对象统筹考虑,为了简化DI模块的类型,通常统一为一种电压类型,常见的电压等级有:DC24V,DV110V,AC110V,AC220V。一个典型的开关量输入信号回路如下所示。
对于PLC系统而言,欧美系(AB、施纳德、西门子)外供电方式较为常见,日系(三菱、欧姆龙)内供电方式较为常见,内供电通常为DC24V。两种供电方式各有特点,外供电方式电源的平均负荷较低,但如果电源是接地系统,在信号进入DI模块之前发生接地的话将引起电源回路跳闸。内供电方式电源负荷较高,但同为电源是接地系统时,在现场信号接地时只是信号发生从0到1的变化,不对电源回路构成威胁。在电源为不接地系统时,两种供电方式下信号接地既不影响电源回路也不影响信号状态。在设计系统时应根据控制对象充分考虑,合理选型。
B.DO(开关量输出):通常用来控制阀门的开关、电机的起停,以及各类可以用通断来控制的对象(如报警器、指示灯等等)。一个完整的开关量控制回路如下图所示。
C.AI(模拟量输入):需要用连续的过程量来表示的对象(如:液位、流量、压力、电流、频率、功率等等)。
D.AO(模拟量输出):需要用连续的过程量来控制的对象(如:变频器、调节阀、调节挡板等等)。一个完整的模拟量控制回路如下图所示。
E.特殊类型:热电偶和热电阻(温度测量)、频率输入(通常用于转速测量)、运动控制(伺服)。
2.数制的概念
A.二进制:只有0和1两种状态,逢2进1,数据表示为:0,1,10(产生进位),11,100(产生进位),101……。15用二进制表示为1111,255用二进制表示为11111111,习惯上通常每4位二进制数用逗号分隔,那么255又可表示为(1111,1111),主要是方便直接转为16进制,15的16进制数为F,那么(1111,1111)就可以直接写成FF。
B.八进制:逢8进1,数据表示为00,01,02,03,04,05,06,07,10(产生进位),11,12,13,14,15,16,17……。
C.16进制:逢16进1,数据表示为00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10(产生进位),11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F……。
二、ControlLogix系统的基本结构
1.无论是高速离散控制、复杂过程控制、伺服控制,还是高速传动控制等各种应用,借助单一的ControlLogix平台,只需掌握一种编程软件,就能根据应用要求的不同,选择标准模块,选择标准工业网络/总线得到所需的控制系统,如顺控/安全连锁系统、伺服控制系统、分布式控制系统(DCS)、高速传动控制系统以及数据采集监控系统(SCADA)等。
2.所有的模块都支持热插拔,模块更换无需停电,方便故障处理、系统维护。
3.所有模块都是智能模块,可以通过刷新固件(Firmware)获得最新的功能。
4.ControlLogix系统使用电子键(Electronic Keying)管理系统中的模块,用以防止模块错误插入,有三种选择:
A.Compatible Moudule,兼容方式,主要版本必须符合,次要版本要大于等于。
B.Disable Keying,任意方式,不加保险,任意模块可插入。
C.Exact Match,精确方式,主要版本和次要版本都必须符合。
5.ControlLogix系统采用标签管理内部数据和I/O,不再使用文件表。采用动态内存管理技术,无需用户进行内存分配管理。没有定时器/计数器等使用个数的强行,支持数据类型的自动转换。支持数组、标准数据结构及用户自定义数据结构。使用RsLogix5000作硬件规划时,当模块被添加后,模块标签自动建立,内部数据可以采用结构体模式,所谓结构体就是不同类型的数据集合,属于用户自定义的数据结构,结构体中可以包含支持的各种数据类型(布尔、整形、浮点、计时器、计数器等),阀门、泵、风机等设备可以建立各自的结构体,组织程序时,相同类型的设备只需编程一次,其余的复制此标准结构,替换标签即可,既可方便的实现模块化编程,又大大缩短了程序组织的时间。结构体结构如下图:
结构体成员的名字不超过32个字符,标签不超过40个字符,无论结构体或标签都不能使用中文作为名字。结构体中同类型的数据排在一起以便合理使用内存。建立设备标签时,只需将标签的数据类型选为定义的结构体名称,结构体中的成员都可以用后缀的形式加以访问(如FWAACV01.AutoMode,其中FWAACV01为设备标签,AutoMode为结构体成员)。可见合理地构建结构体可以优化标签建立的过程,方便系统的维护。
6.创新的、最大可用性设计的机架和背板:使用制造者/消费者(Producer/ Consumer)技术的无源多主数据总线;
A.在同一机架中可多处理器并存,实现分布式运算;
B.在同一机架中可配置任意多个通讯模块,实现网络延伸和不同网络间路由;
C.无需处理器干预,现场输入信号(作为Producer tag)可以同时直接送给同一网络上的多个智能设备、处理器及服务器(作为Consumer tags)等,避免了传统的“现场信息先由主站存储再顺序转发”的过程,大大提高了通讯效率;
D.通过ControlNet扩展现场I/O。在所有本地站和现场站中,对于每个输入输出模块都可以根据其实际应用的响应快慢的要求分别设置相应的通讯时间:逢变则报(COS)和按给定周期发送(RPI),保证了工业控制的实时性和确定性。
三、ControlLogix系统的构成与应用
1.在谈系统的构成与应用之前,我们首先要明确你想用PLC为你做什么。让我们用下面列举的模拟量控制回路来一一说明。
从图中我们了解到控制对象至少有如下类型:
A.水箱水位(AI)
B.泵出口流量(AI)
C.调节阀阀位反馈(AI)
D.调节阀阀位控制(AO)
E.调速水泵速度反馈(AI)
F.调速水泵速度控制(AO)
G.调速水泵运行反馈(DI)
H.调速水泵遥控反馈(DI)
I.调速水泵故障反馈(DI)
J.调速水泵紧急停止(DI)
K.调速水泵启动指令(DO)
2.以上所列俗称I/O点表,现在知道了我们要控制的对象,接下来就是制定控制策略。
A.首先我们分析一下需要直接控制的对象:调阀开度、水泵起停、水泵转速。
B.接下来分析一下需要间接控制的对象:水箱水位、泵出口流量。
C.最后系统分析一下控制过程:通过测量液位判断是否在设定值,然后控制进水调阀的开度,维持正常的液位;通过测量流量判断是否在设定值,然后控制水泵的转速,维持正常的流量,从而实现系统的相对平衡。
3.有了控制策略,可以硬件选型和控制回路设计。
A.先作回路设计,调节阀控制简单明了,可以不作回路设计,由于采用变频控制,不需要采用马控(Motor Control Center)控制,所以水泵控制回路需重新设计。图纸如下:
B.接下来可以硬件选型,为了简单说明问题,在这里没有考虑成本,实际工程应用中不会如此奢侈,因为回路设计时DI采用了24VDC等级,所以必须选择相对应的DI模块,硬件配置如下:
1)1756-A7 7槽ControlLogix机架
2)1756-PA72 电源模块
3)1756-L61 处理器模块
4)1756-ENBT 以太网通讯模块
5)1756-IB32 32点DI模块
6)1756-OB32 32点DO模块
7)1756-IF16 16点AI模块(无源信号输入)
8)1756-IF16 16点AI模块(有源信号输入)
9)1756-OF4 4点AO模块
10)24VDC电源
11)保险丝端子16个,端子若干
12)两路有源信号隔离器10个
13)24VDC继电器32个
C.PLC控制柜的设计原则
1)电源进线设计总开关,输出负载设计分路开关,此处需5路,一路供PLC电源,一路供24VDC电源,一路供柜内照明,一路供检修插座,一路供机柜风扇。
2)24VDC输出负载设计分路开关,此处需5路,一路供DI,一路供DO,一路供AI(无源信号输入),一路供AI(有源信号输入),一路供AO信号隔离器。
3)AI信号通常是无源信号,即设备本身没有电压、电流输出,24VDC先经过保险丝端子再到现场,然后回到模块的相应输入点。如AI属于有源信号,则必须使用信号隔离器隔离或者选用通道隔离型AI模块(因为现场设备的地电位和PLC机柜的地电位之间存在微小差异,容易引起噪声干扰导致测量误差)。不同的信号类型(有源、无源)必须配置到不同的模块。保险丝端子和信号隔离器以及相应的端子必须根据选用模块的总点数一次配齐方便系统扩充。
4)AO输出出于系统可靠性考虑,建议增加信号隔离器或者选用通道隔离型AO模块,避免可能的强电窜入模块造成模块受损和不可预知的其它故障。
5)DI输入应考虑查询电压公用,即到现场设备的查询电压只接一路,尽可能在现场设备处跳线,简化回路设计,减少电缆成本。
6)DO输出出于系统可靠性考虑,建议使用继电器隔离,避免可能的强电窜入模块造成模块受损和不可预知的其它故障。
7)将模块插入机架,0槽插入以太网通讯模块,1槽插入控制器模块,2槽、3槽插入AI模块,4槽插入AO模块,5槽插入DI模块,6槽插入DO模块。(模块排列的规则是,从左到右,从弱电到强电)
8)参考各模块手册完成PLC控制柜内配线,配线使用统一色标,线径选用1mm2。
9)以下列举典型AI模块配线图,其它从略。
AI现场设备无源方式
AI现场设备有源方式
D.设计电缆互联图,在此我们规定PLC控制柜编号为FC-P001,X2为AI信号(无源),X3为AI信号(有源),X4为AO信号,X5为DI信号,X6为DO信号;水泵控制盘编号为FFC-P002,X3-34为24VDC+端。
E.电缆接线校对、变频器参数设置、变送器校验、调节阀整定,至此,硬件方面的所有工作已全部完成。
4.PLC软件设计及上位机监控画面设计
A.上位机与PLC控制系统通讯的建立。(Allen-Bradley系列产品使用统一的通讯软件:RSLinx)Rslinx具备通讯网关的功能,当然需要软件授权,没有授权的RSLinx只具备单点通讯的能力,GateWay授权的RSLinx集成了OPC通讯协议,可以很方便的与第三方软件交换数据。因为在硬件选型中选用了以太网通讯模块(1756-ENBT),所以上位机必须具备以太网通讯能力(以太网适配器),用以太网线连接上位机和以太网通讯模块。上位机安装RSLinx软件。拉开所有I/O模块的电源分路开关,PLC上电,Rslinx软件启动后如下图所示:
点击Configure Drivers(驱动组态)按钮,在弹出的对话框中下拉列表里选择Ethernet/IP Driver,然后点击Add New 按钮。
在弹出的对话框里点击OK(名字一般不需要改)。
继续点击确定按钮。
现在已经可以看到以太网驱动已正确运行。
关掉对话框,点击浏览窗口按钮,可以看到模块列表。
B.创建工程项目、模块配置,上位机安装RSLogix5000软件(ControlLogix平台统一的编程软件)打开RSLogix5000软件,单击新建按钮
控制器类型选择1756-L61,版本与控制器模块实际版本一致,框架(机架)尺寸与实际相符,槽位与处理器模块实际位置相符。点击OK按钮。
在1756-Baclplane上单击鼠标右键,选择New Module单击左键
在communications类型中找到1756-ENBT/A模块,点击OK按钮。
选择模块的主要版本与实际模块对应。点击OK按钮。
名字通常是模块类型加上编号,IP地址改为你想要的地址,也可以不改,多个以太网模块和上位机构成通讯网络时必须规划在同一网段。模块管理方式缺省选择为Compatible Keying(兼容方式),即插入模块的主版本号必须相同,次要版本号要≥规定的要求。
无需作其它配置,直接点击OK按钮。继续添加其它模块。
添加1756-IF16模块,通讯格式选择Float Data-Single-Ended Mode-No Alarm(单端输入方式-无报警)
点击Configuration(组态)选项卡,根据现场设备实际类型配置通道,每个模块有16个通道,可以单独配置(建议同一模块的所有通道配置一致)。其余不作改动,点击OK按钮。相同类型的模块可以通过复制、黏贴的方法添加,省略通道配置的过程。
添加1756-OF4模块
填写名称,其它缺省,点击OK按钮。
RPI缺省为12ms,根据现场设备的特点,在不需要快速更新的场合,RPI设置为200ms就可以了。点击Configuration(组态)选项卡,根据现场设备实际类型配置通道,每个模块有4个通道,可以单独配置。
点击Limits选项卡,进行输出钳制配置
其它缺省不用修改,点击OK按钮。添加DI、DO模块,过程从略。
双击Controller Tags
我们可以看到,刚才添加的I/O模块已自动生成了标签,Local:2:I,Local表示本地机架,2表示槽位,I表示输入映像。C表示模块配置数据,O表示输出映像。为模块的相关通道加上规划好的点位说明。
至此,模块配置工作全部完成。
C.设计数据结构(结构体)根据现有工程,我们需要添加4个结构体,一个命名为Analog_In,用来处理AI输入信号,前面在AI模块通道配置的时候,我们已经讲过,通道可以单独配置工程零位、满度,既然可以配置为我们需要的测量范围,那么为什么还要用数据结构来处理AI信号呢?因为对一个大型工程项目而言,需要处理的AI信号多达上百个甚至上千个,在模块的通道中一一配置,费时费力也容易出错,模块通道配置统一可以批量复制,省略了其它同类型模块的配置,也便于今后项目的移植。一个命名为Pump,用来处理水泵相关信号。一个命名为LevelACV,用来处理调节阀相关信号。一个命名为FirstOut,用来处理跳闸首出。
1)在Data Types → User-Defined中右键单击,选择New Data Type。创建一个Analog_In数据结构。
2)在Data Types → User-Defined中右键单击,选择New Data Type。创建一个Pump数据结构。结构体成员如下:
3)在Data Types → User-Defined中右键单击,选择New Data Type。创建一个LevelACV数据结构。结构体成员如下:
4)在Data Types → User-Defined中右键单击,选择New Data Type。创建一个FirstOut数据结构。结构体成员如下:
5)注意结构体中相同类型的成员排列在一起,因为在结构体创建过程中是以行读取,如果按照BOOL,Real,BOOL排列,那么第一个BOOL量占用了32位全字节,第二个Real量占用全字节,第三个BOOL量又占用了全字节,而按照BOOL,BOOL,Real排列,只需占用2个32位全字节。因为处理器是32位的,所以BOOL量尽量排列在一起充分利用32位字节。
D.建立标签库,根据项目,我们需要建立如下标签:(结构体的设计与标签建立依据会在下一节中具体说明)
举例说明:以标签FWAACV01为例。在Controller Tags上单击鼠标右键,选择New Tag,输入标签名、描述,Type选择Base,Scope(范围)选择控制器(FWA)使之成为全局标签,方便访问,如果选择MainProgram则标签只能在MainProgram内访问(程序内部标签),其它控制器和本控制器的其它程序不能访问。Style选择Decimal(十进制),选择数据类型(Data Type)
在弹出的菜单中选择LevelACV,点击OK按钮。
继续点击OK按钮,完成标签建立。其余标签建立过程从略。
双击Controller Tags打开标签列表,展开FWATank001Level,输入以下数据:FWATank001Level.Rmax =100(与AI通道配置的High Engineering值对应), FWATank001Level.Rmin =0(与AI通道配置的Low Engineering值对应), FWATank001Level.Emax =6(水箱最高水位,与变送器量程一致), FWATank001Level.Emin =0(水箱最低水位,与变送器零位一致),完成Analog_In类型的标签FWATank001Level的配置。其余从略。
E.程序设计,讲了这么多,终于讲到了程序设计,请大家仔细阅读,细心体会上面讲过的内容,多问几个为什么,真正把基础的知识搞明白,打好扎实的基础才能在下面的内容中有所收获,因为程序的设计与上面的内容息息相关,既是控制策略的体现,又与回路设计、硬件选型有直接的关联。
1)输入、输出信号的处理:在Task→MainTask→MainProgram下新建4个Routine(程序),分别为:InputAI002,InputAI003,InputDI005,OutputDO006,起名的规则是表明信号类型槽位。
2)双击打开InputAI002,输入以下梯级。
这些梯级的目的是计算斜率、界定后的工程量,在程序调试的时候将模拟数值赋予工程量,在信号小于零位、高于满度时给出坏质量报警。参照上面的梯级完成所有AI信号的程序,可以新建一个临时Routine,起名为Temp,将上面的梯级拷贝到Temp中,用Replace(替换)的方法成批替换标签,然后再拷贝到相应的Routine中。
注意在Find Where 下拉菜单中选择Current Routine,只在当前的程序中替换。
双击打开InputDI005,输入以下梯级。
将标签关联到相应的DI输入。未使用的点参照上图补齐以便将来使用。在系统模拟时用启动记忆模拟设备运行反馈,方便调试。
双击打开Output006,输入以下梯级。
将标签关联到相应的DO输出。未使用的点参照上图补齐以便将来使用。
3)主程序的编制:在Task→MainTask→MainProgram下新建3个Routine(程序),取名为FeedPump,TankLevel,PID。在编制主程序之前,我们首先要确定具体的控制策略
a)变频水泵控制策略:
i.水泵启动允许条件确定
ii.水泵起停逻辑设计
iii.具备启动失败的判断
iv.具备停止失败的判断
v.具备电气跳闸判断
vi.具备跳闸首出功能
vii.流量偏差,速度偏差处理
viii.手、自动逻辑及PID无扰切换逻辑设计
ix.最低转速及停泵信号处理。
b)调节阀控制策略
i.水箱水位报警信号处理(高、低、低低)
ii.水箱水位偏差处理
iii.水位设定值(在高、低报警值之间视为有效设定值)
iv.手、自动逻辑及PID无扰切换逻辑设计
v.水箱水位异常时(高、低)调阀联锁
c)所有设定值可以通过上位机画面修改。
程序清单如下:(程序中使用的指令请参考指令集说明)
有一点在此特别声明:这个符号代表指令XIC(测试闭合),逻辑真值为1,
这个符号代表指令XIO(测试断开),逻辑真值为0。
与传统继电器回路的长开、长闭接点有所不同。
启动指令发出2秒后未收到运行反馈视为启动失败,启动5秒内出现反馈丢失视为启动失败,5秒后反馈丢失视为跳闸。
PID的PV值(Process Variable)必须是0-100之间的值,所以这里选择通道的实际输入值(RFI),再次体现了用数据结构(结构体)处理数据的好处,不用再作标度变换,如果不用数据结构处理数据,而直接在AI通道中配置,那通道的输入值不能直接被PID采用,必须进行标度变换。
PID需要配置参数,点击PID右边的按钮标记,在打开的对话框中 作如下配置。
在Manual Modes中选择Software Manual(软手动)使PID受逻辑控制,KP,KI在实际调试中整定,这里只是给出一个预设值,Control Action(控制作用)选SP-PV(正向作用),即输出增大,过程变量也增大。其余不作详述,可以参考指令集帮助。
因为在一个连续任务中只能有一个主控程序(MainRoutine),所以在MainRoutine中必须增加到其它Routine的跳转指令。
F.将程序下载到模拟器中调试。
1)打开RSLogix Emulate 5000。
在1槽上用鼠标右键单击,选择Creat(创建)
选择Emulator Rslogix Emulate 5000 controler。
版本选择15(与编程软件版本及控制器模块硬件版本一致),点下一步。
直接点完成。
可以看到模拟控制器模块已建立。不要关闭窗口,否则模拟器退出。
2)打开RSLinx配置通讯驱动。
选择Virtual Backplane (SoftLogix58xx)
直接OK
可以看到RSLinx已经和虚拟控制器建立了通讯。
在DDE/OPC菜单选择Topic Configration配置OPC通讯访问名称。
展开虚拟背板,选择虚拟控制器,然后点击左侧列表中的控制器名称(FWA)。将OPC访问名FWA关联到虚拟处理器,点击Apply按钮。
点击是更新。再次打开配置菜单时,点击FWA,右边的状态条应能自动关联到虚拟控制器。
打开RSLogix5000,打开项目FWA,点击Communications菜单选择Who Active。
选择虚拟控制器,然后选择Download(下载)。
提示控制器类型错误,没关系,选择Change Type改变类型。
点击Yes。
点击Download下载程序。
下载完成后可以看到控制器处于遥控程序状态(Rem Prog),控制器没有执行下载的程序,要让程序运行,可以点击控制器旁的下拉标记,将控制器转到程序方式(Run),暂时不用的话可以关闭程序。
G.上位画面设计
1)打开RSView32,新建一个项目,起名为PLCLearn。
2)展开系统,打开标记数据库创建标签库。新建以下文件夹:ACV,AI,Alarm,FirstOut,PID,PUMP,Setpont,在目录ACV下建立子目录FWAACV01,在FirstOut目录下建立子目录FWAP01FirstOut,在PID目录下建立FWAACV01PID和FWAP01PID两个子目录,在PUMP目录下建立FWAP01目录。建立目录的好处是相同类型的对象可以复制整个文件夹,只需将文件夹改名,然后将标签库导出,在Excel中批量修改,然后再倒入(注意倒入标签库的时候先将项目中的标签库删除以免出现错误)。
双击节点,新建一个节点,输入如下信息。
添加FWAP01AI标签(注意标签名字与PLC标签名一致方便管理)。点击地址按钮
展开RSLinx OPC Sever,展开FWA,展开Online,选择FWAP01AI,在右侧的列表中选择FWAP01AI.PV,确定。
注意最大、最小值与PLC标签库一致,输入单位,点击接受按钮创建标签。依次添加以下的标签。
| 标签名 | 描述 | 最小值 | 最大值 | 单位 | PLC标签名 |
| ACV\\FWAACV01\\AutoMode | 调节阀手动方式 | [FWA]FWAACV01.AutoMode | |||
| ACV\\FWAACV01\\AutoModeButton | 调节阀自动方式按钮 | [FWA]FWAACV01.AutoModeButton | |||
| ACV\\FWAACV01\\AutoModePEM | 调节阀自动方式允许 | [FWA]FWAACV01.AutoModePEM | |||
| ACV\\FWAACV01\\Description | |||||
| ACV\\FWAACV01\\LevelDEVHigh | 水箱水位偏差大 | [FWA]FWAACV01.LevelDEVHigh | |||
| ACV\\FWAACV01\\ManualModeButton | 调节阀手动按钮 | [FWA]FWAACV01.ManualModeButton | |||
| ACV\\FWAACV01\\ScaleLevelPV | 调节阀PID界定PV | 0 | 100 | % | [FWA]FWAACV01.ScaleLevelPV |
| ACV\\FWAACV01\\ScaleLevelSP | 调节阀PID界定SP | 0 | 100 | m | [FWA]FWAACV01.ScaleLevelSP |
| AI\\FWAACV01AI | 水位调节阀位置反馈 | 0 | 100 | % | [FWA]FWAACV01AI.PV |
| AI\\FWAP01AI | 水泵转速 | 0 | 50 | Hz | [FWA]FWAP01AI.PV |
| AI\\FWAP01Flow | 水泵出口流量 | 0 | 200 | T/H | [FWA]FWAP01Flow.PV |
| AI\\FWATank001Level | 水箱水位 | 0 | 6 | m | [FWA]FWATank001Level.PV |
| Alarm\\FWATank001LevelHigh | 水箱水位高报警 | [FWA]FWATank001LevelHigh | |||
| Alarm\\FWATank001LevelLow | 水箱水位低报警 | [FWA]FWATank001LevelLow | |||
| Alarm\\FWATank001LevelLowLow | 水箱水位低低报警 | [FWA]FWATank001LevelLowLow | |||
| FirsOut\\FWAP01FirstOut\\AL1 | 水泵运行反馈丢失 | [FWA]FWAP01FirstOut.AL1 | |||
| FirsOut\\FWAP01FirstOut\\AL2 | 水箱低低水位 | [FWA]FWAP01FirstOut.AL2 | |||
| FirsOut\\FWAP01FirstOut\\AL3 | 水泵启动失败 | [FWA]FWAP01FirstOut.AL3 | |||
| FirsOut\\FWAP01FirstOut\\AL4 | 水泵停止失败 | [FWA]FWAP01FirstOut.AL4 | |||
| FirsOut\\FWAP01FirstOut\\AL5 | 水泵变频器故障 | [FWA]FWAP01FirstOut.AL5 | |||
| PID\\FWAACV01PID\\AutoMode | 调节阀自动方式 | [FWA]FWAACV01.AutoMode | |||
| PID\\FWAACV01PID\\AutoModeButton | 调节阀自动方式按钮 | [FWA]FWAACV01.AutoModeButton | |||
| PID\\FWAACV01PID\\AutoModePEM | 调节阀自动方式允许 | [FWA]FWAACV01.AutoModePEM | |||
| PID\\FWAACV01PID\\Description | |||||
| PID\\FWAACV01PID\\ManualModeButton | 调节阀手动方式按钮 | [FWA]FWAACV01.ManualModeButton | |||
| PID\\FWAACV01PID\\PV | 水箱水位PV值 | 0 | 100 | [FWA]FWATank001Level.PV | |
| PID\\FWAACV01PID\\ScaleLevelPV | 调节阀PID界定PV值 | 0 | 100 | % | [FWA]FWAACV01.ScaleLevelPV |
| PID\\FWAACV01PID\\ScaleLevelSP | 水箱水位设定值 | 0 | 100 | m | [FWA]FWAACV01.ScaleLevelSP |
| PID\\FWAACV01PID\\SO | 调节阀PID手动输出 | 0 | 100 | % | [FWA]FWAACV01PID.SO |
| PID\\FWAACV01PID\\SP | 调节阀PID设定值 | 0 | 100 | % | [FWA]FWAACV01PID.SP |
| PID\\FWAP01PID\\AutoMode | 水泵自动方式 | [FWA]FWAP01.AutoMode | |||
| PID\\FWAP01PID\\AutoModeButton | 水泵自动方式按钮 | [FWA]FWAP01.AutoModeButton | |||
| PID\\FWAP01PID\\AutoModePEM | 水泵自动方式允许 | [FWA]FWAP01.AutoModePEM | |||
| PID\\FWAP01PID\\Description | |||||
| PID\\FWAP01PID\\ManualModeButton | 水泵手动方式按钮 | [FWA]FWAP01.ManualModeButton | |||
| PID\\FWAP01PID\\PV | 流量PV值 | 0 | 100 | [FWA]FWAP01Flow.PV | |
| PID\\FWAP01PID\\ScaleFlowPV | 水泵PID界定PV | 0 | 100 | % | [FWA]FWAP01.ScaleFlowPV |
| PID\\FWAP01PID\\ScaleFlowSP | 流量设定值 | 0 | 200 | T/H | [FWA]FWAP01.ScaleFlowSP |
| PID\\FWAP01PID\\SO | 水泵PID手动输出 | 0 | 100 | % | [FWA]FWAP01PID.SO |
| PID\\FWAP01PID\\SP | 水泵PID设定值 | 0 | 100 | % | [FWA]FWAP01PID.SP |
| PUMP\\FWAP01\\AutoMode | 水泵手动方式 | [FWA]FWAP01.AutoMode | |||
| PUMP\\FWAP01\\AutoModeButton | 水泵自动方式按钮 | [FWA]FWAP01.AutoModeButton | |||
| PUMP\\FWAP01\\AutoModePEM | 水泵自动方式允许 | [FWA]FWAP01.AutoModePEM | |||
| PUMP\\FWAP01\\Description | |||||
| PUMP\\FWAP01\\EStop | 水泵紧急停止 | [FWA]FWAP01.EStop | |||
| PUMP\\FWAP01\\FlowDEVHigh | 水泵出口流量偏差大 | [FWA]FWAP01.FlowDEVHigh | |||
| PUMP\\FWAP01\\ManualModeButton | 水泵手动方式按钮 | [FWA]FWAP01.ManualModeButton | |||
| PUMP\\FWAP01\\RemoteMode | 水泵遥控方式 | [FWA]FWAP01.RemoteMode | |||
| PUMP\\FWAP01\\ScaleFlowPV | 水泵PID界定PV | 0 | 100 | % | [FWA]FWAP01.ScaleFlowPV |
| PUMP\\FWAP01\\ScaleFlowSP | 水泵PID界定SP | 0 | 200 | T/H | [FWA]FWAP01.ScaleFlowSP |
| PUMP\\FWAP01\\SpeedDEVHigh | 水泵速度偏差大 | [FWA]FWAP01.SpeedDEVHigh | |||
| PUMP\\FWAP01\\StartButton | 水泵启动按钮 | [FWA]FWAP01.StartButton | |||
| PUMP\\FWAP01\\Started | 水泵启动反馈 | [FWA]FWAP01.Started | |||
| PUMP\\FWAP01\\StartFault | 水泵启动失败 | [FWA]FWAP01.StartFault | |||
| PUMP\\FWAP01\\StartPEM | 水泵启动允许 | [FWA]FWAP01.StartPEM | |||
| PUMP\\FWAP01\\StopButton | 水泵停止按钮 | [FWA]FWAP01.StopButton | |||
| PUMP\\FWAP01\\StopFault | 水泵停止失败 | [FWA]FWAP01.StopFault | |||
| PUMP\\FWAP01\\Trip | 水泵跳闸 | [FWA]FWAP01.Trip | |||
| Setpoint\\FWAP01FlowDEVSP | 流量偏差设定值 | 0 | 100 | T/H | [FWA]FWAP01FlowDEVSP |
| Setpoint\\FWAP01MinSpeedSP | 最小速度设定值 | 0 | 100 | Hz | [FWA]FWAP01MinSpeedSP |
| Setpoint\\FWAP01SpeedDEVSP | 速度偏差设定值 | 0 | 100 | Hz | [FWA]FWAP01SpeedDEVSP |
| Setpoint\\FWATank001LevelDEVSP | 水位偏差设定值 | 0 | 100 | m | [FWA]FWATank001LevelDEVSP |
| Setpoint\\FWATank001LevelHighSP | 高水位设定值 | 0 | 100 | m | [FWA]FWATank001LevelHighSP |
| Setpoint\\FWATank001LevelLowLowSP | 低低水位设定值 | 0 | 100 | m | [FWA]FWATank001LevelLowLowSP |
| Setpoint\\FWATank001LevelLowSP | 低水位设定值 | 0 | 100 | m | [FWA]FWATank001LevelLowSP |
在FWAACV01、FWAACV01PID、FWAP01PID、FWAP01的标签库内还需增加一个字符串类型的标签,起名Description,举例如下:
这个标签用来在操作面板中显示以表明设备身份。完成其它Description标签建立。
3)报警信息处理,在标签库建立时可能大家已经注意到有的标签的警报栏打了钩,表示该标签具备报警功能。配置方法如下。
以调节阀标签ACV\\FWAACV01\\AutoMode为例。
点击警报按钮。
我们需要调节阀跳手动时报警,所以警报类型选择为转换到关,警报标签用来在报警历史纪录里描述该标签的报警信息,可以不填。其它可以使用默认设置。完成其它报警信号设置。
4)警报设置
展开警报,选择警报设置。第一个选项卡可以使用缺省配置,报警记录文件缺省在项目文件夹的ALMLOG子文件夹内。
对报警记录文件周期、时间长度进行配置,根据需要进行相应配置
对不同级别的报警进行相应的配置,用户信息可以使用缺省配置。实际上RSView32报警功能并不能完全满足实际工程的需要,而且配置也不是十分方便,不如在PLC程序设计时统一考虑报警信息的处理。
5)建立参数库,目的:相同类型面板(如泵类、阀门类)只需设计一个,在调用面板时赋予不同的参数就可控制不同的对象,简化画面设计。
双击参数
输入以上参数,#1到#8。
点击文件菜单,选择另存为,在对话框中输入参数名称(与标签文件夹名称相同以方便管理)。
参数同样可以查找、替换来完成同类型不同设备参数的建立。
完成水泵参数配置。完成水位PID参数配置,水泵PID与水位参数大部分相同,可以用查找、替换的方式完成。
6)画面设计
a)PID面板设计,展开图形菜单,选择库,在右侧下拉菜单中选择Face Plates,
打开Face Plates
这里我们选择第一个面板LOOP1,
复制第一个面板。关闭Face Plates窗口。在图形菜单里双击显示,在新创建的窗口中粘贴复制的面板,调整面板及窗口大小以适合需要。在编辑菜单里选择显示设置,进行如下配置(这个例子需要,实际设计中可以灵活配置,RSView32提供了详细的帮助说明)
修改成上图所示,为对象配置动画参数。状态条使用填充,PV下边是数值显示对象,填写参数库中对应参数。完成其它各对象的参数配置。
初次配置可能困难较大,可以使用教材配套的素材,逐步体会。方法如下:
在显示菜单上右键点击,选择将现有组件复制到项目里,
在打开的对话框里找到PID.gfx,打开。可以看到该图形已添加到项目中。
b)新建一个Main窗口。创建如下对象,调节阀直接从库中复制(大部分对象库中已能满足要求)管道用矩形对象,水箱用圆角矩形对象,泵需要自己创建,用一个矩形对象和一个椭圆对象组合而成,画椭圆时按住Ctrl键再用鼠标左键拖动可以画圆。阀位显示和水位显示使用数字显示对象,单位显示使用标签对象,在类型中选择单位。顶部报警条用来显示最新报警信息,使用了两个字符串显示对象,标签为:system\\AlarmMostRecentTagname和system\\AlarmMostRecentTagDesc,两个同为系统内部标签,在项目建立时自动创建。
c)对象动画配置,目的:选择对象时实现我们需要的结果,实现不同类型的状态显示。
例如:我们在点击调节阀图标时要出现PID菜单进行调节。
在调节阀对象上点击鼠标右键,选择动画→触摸。
在对话框中输入如上命令,/P 代表使用参数库关联标签,前面在参数库建立时我们讲到,相同类型的对象(如PID)参数顺序(#1、#2、#3…)关联的标签类型相同,如#1都对应AutoMode,#2都对应AutoModeButton等等,在对PID面板进行配置的时候,我们使用了PID类型的参数顺序来配置,这样就打造了一个标准模版,只要是PID的对象都可以调用这个模版,只需在调用时使用对应的参数即可,大大方便了画面的设计。
泵对象动画的建立,首先明确要求:不在遥控位置没有运行同时不跳闸显示黄色,遥控位置不在运行同时不跳闸显示红色,跳闸显示白色。右键点击泵对象,选择动画→颜色。
输入以上表达式,可以看到,颜色显示采用了加权数值法,0到1之间显示黄色,1到10之间显示绿色,10到100之间显示红色,100以上显示白色。
其它对象动画的创建不作详述,请大家根据提供的例子自己体会。
新建一个画面,起名SP,用来设定各种报警设定值。有如下7个定值需要设定,
图中每一行的第一个对象是标签对象,类型选择描述,长度选择15。
第二个是数字输入对象,参照下图完成配置。
第三个对象同样是标签对象,类型选择单位。
完成后运行时如下图所示
在SP的显示设置中完成以上配置,安全码选择为A。
展开系统→用户帐号,双击,建立如下用户。
将DEFAULT和OPERATOR帐号安全码A的钩去掉,这样,只有以SM身份登陆的帐号才能打开SP画面。
新建一个登陆画面,
完成以上设计,除主菜单外,其余对象都使用了系统内部指令,初次使用建议直接将素材复制到项目中。
d)报警总揽设计,RSVIEW32的报警总揽可以直接调用库中的模版,稍作修改即可。
e)趋势设计,在项目中展开数据记录,双击设置数据记录
输入以上信息,
缺省建立在项目下的子目录。文件管理根据需要配置。
记录触发根据需要配置,在此选择1秒记录一次。
依次添加上述标签(需要记录趋势的标签,可灵活配置)。关闭对话框。
保存时为数据记录文件起名,可以使用默认值。
趋势画面设计,RSVIEW32库中提供了趋势的组件,下图中全部使用标准组件设计。
双击趋势区域,上图中灰色方格区域,进行趋势配置。
进行如上配置,控制标记用来关联趋势画面中增强控件的控制标记。
水平偏移位置指方块可以移动的范围,最大值设置可以在画面上拖动方块到右边最大位置,然后点击应用按钮记录当前位置即可。
添加上述标记,完成趋势配置。
f)系统设置
在Main画面中添加如下按钮
其中,趋势用来调用Trend画面双击按钮,在对话框中作如下配置即可
设定用来调出SP画面,受安全码和用户帐户,只有SM帐号可以调出SP画面。
报警用来调出Alarm画面,返回用来调出Login画面。参数配置从略。
展开系统→启动,在对话框中完成如下配置。首选项根据需要选择,如果不希望项目在运行时被随便关闭,可以禁止控制盒、项目管理器等选项。
完成启动项的配置,初始图形用来选择项目启动后缺省显示的画面。
H.至此,系统设计告一段落,不知大家通过上面的学习有无体会,PLC设计是一个系统工程,一切都以实际出发,围绕对象及工艺设计来进行硬件选型、回路设计,软件编制,缺一不可,这也是我们一再指出扎实的基础是一个系统设计成功的首要条件的原因,希望大家在学习过程中注重积累,循序渐进。早日步入PLC丰富多彩的殿堂。标签中没有用到的字段留着将来扩充时使用,在系统设计时因留有余地,不必一一对应。下一节系统阐述ControlLogix平台的网络架构,适合有基础的人群进一步学习。
四、ControlLogix平台的网络架构
从上图可以看到,Ethernet、ControlNet可以组成上层网络用来连接其它ContrlLogix系统(冗余系统、多控制器系统)、上位机、监控设备、SIS系统等等,ControlNet,DeviceNet,RIO、DH+组成下层网络用来连接远程I/O、智能设备(变频器,伺服,智能变送器,就地分布式智能I/O,智能马达启动器等等),其中ControlNet主要用来连接远程I/O实现实时确定性控制,DeviceNet主要用来连接智能设备、分布I/O构成现场总线控制系统。RIO、DH+用来连接1771-PLC5系统实现向下兼容。
ControlNet使用RSNetWorx for ControlNet对控制网(ControlNet)进行规划、维护,图中黑色连线代表ControlNet网络,01、02、03等代表ControlNet节点号,控制网采用Keeper保存网络参数、管理整个网络(通讯,连接),减轻了控制器模块的负担,通常节点号最低的控制网通讯模块1756-CNB/CNBR最先成为Active Keeper,其它处于InActive状态,当前Keeper失效时,自动转到下一个Keeper。对网络的规划通常在系统设计完毕调试时进行,ControlNet的网络配置,优化已相当智能化,初次配置网络时只需点击NetWork→Upload From Network获取网络信息,
然后再Edits Enable选项前打勾
点击NetWork→Properties(属性),对网络参数作相应修改再选择NetWork→Download To Network即可,注意下载网络配置期间控制器会转入程序方式,在PLC程序设计时要考虑状态切换,程序下装,网络规划对控制对象的影响。如果是冗余系统,备用控制器要切换到程序方式,否则下载网络参数时会出错,下载完成再将备用控制器切换到运行方式。以下提供一个故障处理例程详细说明网络参数配置。
2007-11-16,3#远程机架通讯模块故障,造成3#机架离线,相关设备无法监控,重新上电复位后通讯恢复正常,2007-11-17,3#机架再次因通讯模块故障离线,把冗余CPU模块的通讯模块与3#机架进行了对换,对控制网组态进行了仔细的检查,发现部分远程机架的RPI参数(Requested Packet Interval)配置不合理,在控制网组态中已经把NUT(Network Update Time)配置为8mS,也就是说每个远程机架或I/O模块的RPI参数应高于8mS,机架3#RPI为20mS,4#RPI为256mS,5、6#RPI为20mS,其中位于3#机架的MVI56-MCMR模块RPI为10mS,虽大于8mS,但由于此模块为通讯模块,与CPU间有大量数据交换,此次故障发生在北京雄越公司调试公用区与吸收区通讯后发生,与此存在关联,所以对控制网的参数作了相应的调整,具体为:Max Scheduled Address 由6改为9,Max Unscheduled Address 由6改为10,因为现控制网节点数为6,按照要求,上述地址应比实际使用地址大3-4个节点号;机架3、4#RPI由20mS改为40mS, MVI56-MCMR模块RPI由10mS改为100mS,观察3#机架通讯模块1756-CNBR的负荷率由28%下降为16%,说明参数调整应有成效,从交换到冗余机架的CNBR模块的工作情况看,未再出现故障状况,可以排除硬件出错的可能,模块故障的另一个原因为背板噪声,可能的原因为系统接地不良,公用区PLC系统未按DCS导则中有关接地规范设计施工,各机柜间存在接地电位差,易造成接地噪声干扰,应考虑对策,目前系统运行稳定,但需进一步观察分析,已增加故障监测逻辑,上位已增加报警。
五、后记
到此为止,本教材已系统讲述了ControlLogix平台的设计、调试、维护的方法,如果大家仔细阅读了本教材的每一个章节并完成了程序、画面的设计,编制,通过调试程序体会了系统的运作,那么恭喜你,你已成为PLC大家庭中的一员,具备了基础的系统设计,维护能力,在今后的工作中只要注重积累,勤于思考,就可以逐步融会贯通,教材所举的编程实例还有很大的扩充余地,如:增加泵进、出口门及相关联锁,调节阀PID可以接受泵转速或出口流量的前馈控制,水箱水位采用3测量取中值等等。
还有一点说明,PLC系统大同小异,设计思路殊途同归,掌握一种系统(是真正的掌握,不是浅尝即止),其它也能触类旁通,最后,由于精力所限,教材编写仓促,难免有不到之处,欢迎大家指正,祝大家学习顺利。下载本文