一、总则
适合本公司的水厂、污水厂、加压站、一体化污水处理站及加药设备的程序设计。
二、 PLC程序的基本要求
一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释、精良的架构、良好的可扩展性、完备的报警保护系统、运行前的模拟系统。
比较好的PLC程序是满足系统运行需求外,还需要做到以下的控制点:
1、简短性
使PLC程序尽可能简短。
简短的程序可以节省用户存储区;多数情况下也可节省执行时间,提高对输入的响应速度,还可提高程序的可读性。
程序是否简短,一般用程序的条数,功能块的多少等来衡量。
要想程序简短,从大的方面讲,要优化程序结构,用功能或功能块来完成重复的工作单元,变量用字节或字来代替布尔量等。
2、省时性
程序简短可以节省程序运行时间,但简短与省时并不是充要关系。
采用流程控制可节省CPU时间,流程控制指令按情况确定一些必须执行的指令,作必备部分,其余的可依程序进行,有选择地执行,或作些分时工作的设计,避免最大时间太长等。尽量少用定时器。
3、可读性
要求所设计的程序可读性要好。这不仅便于程序设计者加深对程序的理解,便于调试,而且,还要便于别人读懂你的程序,便于使用者维护。必要时,也可使程序推广。
要使程序可读性好,所设计的程序就要尽可能清晰。要注意层次,实现模块化,以至于用面向对象的方法进行设计。要多用一些标准的设计。
如遇特殊情况下采用语言编程,多数情况下请使用梯形图编程,方便阅读。
I/O分配要有规律性,便于记忆与理解。需要注释。内部器件的使用也要讲规律性,不要随便地拿来就用。
可读性在程序设计开始时就要注意。
程序的注释是保证可读性的必要条件:
A、系统注释:整套程序的版权公司和此套程序用途
B、程序块注释:此程序块的主要用途和作者
C、段注释:此段代码的用途
D、变量注释:重要性无需多言,包含I/O注释、中间变量注释
程序保密性要求,要求每个程序都要设置密码, 统一密码为公司名称拼音的第一个字母(小写)+项目所在年份。
4、正确性
PLC的程序一定要正确,并要经过实际工作验证,证明其能够正确工作。这是对PLC程序的最根本的要求。
要使程序正确,一定要准确的使用指令,正确的使用内部器件。准确的使用指令与准确理解指令相联系,为此对指令含义和使用条件一定要弄清楚。必要时,可编些小程序对一些不清楚的指令作些测试。
同一指令,由于PLC的出厂批次不同或是PLC的系列型号的不同,一些指令细节有可能不一样,应仔细查阅编程手册。
以西门子PLC系列为例:S7-200 SMART 使用时一定要设置掉电保存区,防止短时掉电,原始数据丢失。PLC设置上电运行,否则,再次上电时PLC无法运行。
5、可靠性
程序不仅要正确,还要可靠。可靠反映着PLC程序的稳定性,这也是对PLC程序的基本要求。
有的PLC程序,在正常的工作条件下或合法操作时能正确工作,而出现非正常工作条件(如临时停电,又很快再通电)或进行非法操作(如一些按钮不按顺序按,或同时按若干按钮)后,程序就不能正常工作了。这种程序,就不大可靠,或说不稳定,就是不好的程序。
好的PLC程序对非正常工作条件出现,能予以识别,并能使其与正常条件衔接,可使程序适应于多种情况。好的PLC程序对非法操作能予以拒绝,且不留下“痕迹”。只接受合法操作。
联锁是拒绝非法操作常用的手段,继电电路常用这个方法,PLC也可继承这个方法。
互锁是防止两个指令同时到达时,同时启动。造成设备出现问题。比如电机正反转控制,阀门的开关控制等。
6、易改性
要使程序易改,也就是要便于修改。
PLC的特点之一就是方便,可灵活地适用于各种情况。其办法就是靠修改或重新设计程序。
重新设计程序用于改变PLC工艺的用途要求的情况,不仅程序重编,而且I/O也要重新分配。多数情况下不需要重编程序,作一些修改就可以了。这就要求程序具有易性,便于修改。
易改也就是弹性,要求只要作很少的改动,即可达到改变参数或理改动作的目的。
7、良好的扩展性
许多程序可能在进现场之前都已经编好,但是到了现场,可能还需要添加另外的程序,为了避免打乱整套系统的结构,需要在每个功能区预留一定的空间作为备用。预留的点位需要备注说明。
8、完备的报警保护系统
PLC系统往往用于工业环境中,每一次的事故都会造成或大或小的损失,为了做到事故预处理或者在事故中将损失降到最小,必须重视PLC的报警和保护,在此将其摘出来作为系统的一个重要组成部分。
9、PLC程序模拟系统
为了保证现场的调试进度或者给客户展示,往往在进现场之前,要对自己的程序进行全自动的模拟。为此需要在程序中加入模拟程序部分,模拟程序部分在正常现场运行之后断开。为了使程序具备模拟功能,需要做以下工作:
(1)、将实际的PLC I/O点转换为PLC的中间变量或者数据块变量
(2)、根据工艺要求编写各个设备的模拟程序
三、PLC程序设计规范
3.1 编程前准备
编程人员接到项目后,认真阅读相关的技术文档,主要指项目的
技术协议,合同要求的时间节点及其他特殊要求
技术文档确认后,编程人员认真分析项目总装图图纸,主要确认项目图纸自动化流程方案和技术文档要求是否有不一致的地方。
自动化流程方案确认后,编程人员绘制自动化动作流程图(用Visio软件),流程图绘制完成后,上报电气自控组审查确认,如有不一致的地方,及时修改,直到审查通过。
自动化动作流程图审查后通过,编程人员才能进行编程。
对于常规的一些单机设备,若没有任何技术要求,按照通用技术
方案进行编程。
3.2 硬件组态
按照自控原理图进行硬件组态。
对应有编号可以设置的硬件组态,需要备注编号:如CPU1,DI1,DQ1,AI1,AQ1等。
组态后,配置网络或总线。设置IP地址。
IP地址设计规范:
根据PLC站编号进行:如1#PLC设置IP地址为 192.168.0.10 对应的触摸屏的IP设置为192.168.0.11
没有编号的控制设备,按照PLC最后一个编号以此类推。
3.3 总体要求
1、所有变量(硬件IO地址、中间变量、数据块变量等)需要有中文注释。
2、功能块、功能等需要独立中文注释说明。
3.4 地址变量命名及注释规范
1、I/O符号表变量命名规范:
数字量输入DI命名:设备名(中文拼音首字母缩写大写)+下划线+状态如果本程序有相同的中文命名则将最后一个缩写改为全拼,若还有重复,再将倒数第二个改为全拼,以此类推。
1)设备类
远程Rem,运行反馈Run,故障反馈Fault;
2) 阀门类
开到位Open,关到位close;
数字量输出DQ命名:设备名(中文拼音首字母缩写大写)+下划线+驱动(drv),重复的与DI命名处理相同。
设备类: 设备名+drv
阀门类:
OC_drv 电磁阀驱动
O_drv,C_drv 电动阀开/关
模拟量输入AI命名:若有仪表英文缩写的按照仪表名称+下划线+通道(ch)。没有仪表英文缩写的参考DI的设备名或者按照设计图纸代号命名。
液位LT, 压力PT,流量FT…
示例表1:
1、中间变量区分配与命名注释:
根据项目的大小,估算M区或者V区的Bool、Byte、Word、Dword区的大小分配相应的区域,不能随意使用M区或V区,如M0—M20为Bool区、MB21---MB30为Byte区、MW32---MW36为Word区、VD0---VD100为Dword区。
中间变量主要是用来做操作用或者状态,数据转换,条件转换,扩展变量等功能用。
主要分为以下几方面:
(1)中间变量作为标志用。如信号到达,功能块状态位等。
主要的命名有Sta(状态),Err,Flag,H,L,HH,LL,alarm(AL),Mid等,如果你调用功能块的,用功能块管脚名称。
命名以中文拼音或简单英文为主。
(2)中间变量作为操作设置用。如设备启停,手动,自动,量程设置,时间参数设置,仪表数据显示,时间显示,控制参数设置等。
控制模式(手动,,自动1……) 用整型INT
设备控制模式Control mode (CM)控制模式 INT
CM=0 手动
CM=1 自动
CM=2 自动1
****系统控制模式
Sys_CM 系统控制模式
设备类/电磁阀 bool/INT
启停(bool/STAP)
电动阀:INT
OC_OP (打开2、关闭1、暂停0)/(0=关闭,1=打开)
仪表量程设置命名:参考模拟量输入AI命名,只是将通道(Ch)改为MES(量程)。
仪表数据显示命名:仪表名称+下划线+Dat
时间参数设置及时间显示命名:设备名称(过程名称)拼音缩写+下划线+时间类型(设置时间:STm,运行时间设置RSTm,间隔时间设置GSTm,运行时间显示:RVTm,间隔时间显示GVTm,显示时间VTm,周期时间设置CSTm, 周期时间显示CVTm) 整型
Total_hour(Tot_H)长整型, Tot_M设置
复位(RST)bool
H,m,s
示例表2:
3.5掉电保持的共享数据块DB使用
对于需要掉电保持数据存储区的变量命名,可按M区的使用方法分段分配空间,但没有特殊情况,尽量不要用数组Array[0..n]方法分配,分配数组空间虽然快,但是由于数组变量的名称在这样的DB区内没有实际的意义,不便于程序阅读,要求单独一个个分配变量,变量名称可单独命名,提高程序的可阅读性,这种方法分配时可预留一定类型的备用数据存储区,使用时可再重命名,不用再重新下载DB。
3.6程序段及功能块
每个程序段都需要做中文注释,说明该段程序的功能。
在做功能或功能块时,需要对功能块做注释,变量命名参考前面的命名方法。
3.7程序基本结构
主程序(OB1)或者(main)用来做调用子程序用,特别重要程序才写到主程序中。
第一个功能(FC1)或子程序(SBR1)用来处理模拟量采集功能。
对于单机设备,将手动控制和自动控制分配各自的子程序中或者没有工艺功能单元做成一个子程序。
通讯作为单独的子程序。
报警作为一个单独的子程序。
设备累计运行时间作为一个单独的子程序。
对于厂区控制系统,按照各工艺单元做功能程序。必须要做一个初始化程序,单独的控制功能作为一个功能程序或子程序。
3.8编程技巧与参考
1、单台设备控制时,单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。
2、单台设备(泵、风机及其它大型设备)运行满24小时必须进行轮换,且必须有运行时间累计,如果由上位机设定启/停顺序除外,操作人员自行设定。
3、定期做程序备份,最好以工程名称+系统名称+当天日期。
四、常用的自动化控制功能
1、时间控制:控制方式为时间间隔控制运行,提供的设置参数
有启动时间、停止时间,用此种控制方法的设备如格栅、曝气沉沙、沉淀池,水下推进器、浓缩池等。
2、液位差控制:常用于格栅,监测前后端液位的差值大于一
定数值一定时间后即启动。
3、流量控制:主要是加药设备根据流量来控制计量泵的频率。
4、液位控制;常用于泵房的控制或滤池控制。
5、压力控制:常用送水泵房及加压泵站的控制。
6、时间累计模块以设备的运行信号为依据,功能是提供对设
备累计运行时间(小时)、当前运行时间(分)、当前停止时间(分钟)。
五、常用的自动化控制流程图
1、搅拌机间歇式运行
主要使用的场合有加药装置上的搅拌机以及水处理的预沉池及沉淀池的搅拌机控制。
2、沉淀池及预沉池排泥阀自动化流程图
3、V型滤池气水反冲流程
|