资源描述:
P L C 与D O S PLC a n d DCS 自动化技 术与应用2 0l 0年第 2 9卷第 7期 P L C面向对象结构化程序研究与应用 曾海燕 1 1 . 汕头大学 工学院, 广东 汕头 5 1 5 0 6 3 ; 2 . 汕头轻工装备研究院, 广东 汕头 5 1 5 0 6 3 摘 要 本文以P L C多电磁阀控制设计为例, 阐述P LC面向对象结构化设计思想. 同时为形成一种较为固定完整的子功能框架模式, 将状态转移图应用在系统主要子功能模块中。合理的程序结构与良好的编程模式, 可以降低程序开发的难度, 增加程序的可读 性和系统的可维护性。 关键词 P L C程序; 程序结构; 面向对象 ; 结构化; 子功能模块; 状态转移图 中图分类号 T P 3 1 l 文献标识码 B 文章编号 1 0 0 3 7 2 4 1 2 0 1 0 0 7 - 0 0 5 1 0 4 T h e R e s e a r c h a n d A p p l ic a t io n o f Or ig in a l O b j e c t S t r u c t u r e d o n PL C Pr O q r a mmi n q 、一 ,、一 , ZENG Hm- y a n ’ 2 1 . C o l l e g e o f E n g i n e e ri n g , S h a n T o u Un i v e r s i t y , S h a n T o u 5 1 5 0 6 3 C h i n a ; 2 . S h a n t o u I n s ti t u t e f o r Li g h t I n d u s t ri a l E q u i p me n t R e s e a r c h , S h a n t o u 5 1 5 0 6 3 Ch i n a Ab s t r a c t T h e p a p e r d e s c ri b e s t h e o b j e c t o ri e n t e d s t r u c t u r e d d e s i g n p r i n c i p l e o f P L C p r o g r a mmi n g , a n d i t s i mp l e me n t a t i o n w i t h t h e e x a mp l e o f a P L C c o n t r o l s y s t e m f o r mu l t i p l e e l e c t r o ma g n e ti c v a l v e o b j e c t s . Al s o for f o r mi n g a mo r e r e g u l a r a n d c o mp l e t e s u b f u n c t i o na me wo r k mo d e l , t h e s t a t e t r a n s f e r d i a g r a m i s a p p l i e d t o t h e ma i n s u b f u n c t i o n mo d u l e o f s ys t e m. Th e r a t i o n a l p r o g r a m s t ruc t u r e a n d g o o d p r o g r a m p a t t e r n ma y l o we r the d i f f i c u l t y o f p r o g r a m d e v e l o pme n t p r o c e s s , i n c r e a s e the r e a d a b i l i t y o f p r o g r a m a n d t h e ma i n t a i n a b i l i t y o f t h e s y s t e m. K e y w o r d s P L C p r o g r a mmi n g ; s t r u c t u r e o f p r o g r a m; o r i g i n a l o b j e c t ; s t ruc t u r e d ; s u b f u n c t i o n m o d u l e ; s t a t e t r a n s f e r d i a g r a m 1 引言 由于 P L C技术的成熟, P L C已成为工业 自动控制的 主流设备之一 。传统的梯形 图结构设计为线性化顺序 结构, 具体的编程方法主要有经验设计法、逻辑设计法 和状态转移法等几种编程方法 , 这些编程方法都有各 自 的优缺点与适用的应用场合。对于 P LC的简单应用, 线 性化程序结构与任一种具体编程方法的结合都可 以胜 任。但对于复杂系统 , 这种程序结构的缺点就显示出来 了, 程序复杂冗长, 可读性差 , 代码重复利用率低 , 调试 查错困难等。同时, 对于要求多样 的复杂系统 , 单一的 编程方法无法更好的适用于整个系统要求 , 应用多种编 程方法则会使整个程序更为复杂难读。面对这种情况 , 计算机软件领域 中的软件主流设计方法一一 面向对象 收稿 日期 2 o 1 o - o 2 2 2 模块化理论, 正逐步引入工业 PL C控制领域, 应用于 P LC的软件设计结构 中。 本文抛砖引玉 , 以多电磁阀控制设计为例 , 阐述在 应用PL C面向对象的模块化设计过程 中, 设计阶段初期 应如何构思、进行合理的功能模块划分 ; 具体模块功能 设计时, 如何尽量减小经验因素的影响 , 选择合适的编 程方法 , 达到模块一定程度的标准化 , 重点介绍状态转 移 图在功能子模块 中的应用及形成的基本框架模式。 2 面向对象程序结构设计与应用 P L C面向对象程序是属平行层次结构 , 结构设计的 基本思想是 将复杂控制任务按照工艺要求或其它需 要 , 分解为几个相对独立和相对简单的子任务模块 , 再 对 子任务模 块进行编程 。 目前市场上流行 的西门子 S T E P7 软件具备有面向对象模块化编程的软件环境 , 可 自 动化 技 术 与 应 用 2 O l 0 年 第2 9 卷 第7 期 P I ~ C 与D C S pL C a nd DCS 以将 自动化任务分解为能够反映某种过程工艺、功能 或可以反复使用的更小的任务块 FC或 F B , 主程序循 环块 OB 1通过调用这些块来完成整个 自动化任务 [ 1 】 。 下面以某项 目中一个相对独立的子系统一一 P L C多电 磁阀控制系统为例, 介绍这种面向对象的模块化 P LC程 序设计方法 。本例以西门子 S 7 3 0 0为 P LC控制器 , S T E P 7为编程软件。 l 系统 工艺磷凌 系统工艺要求具体为 在 电磁阀任务开始后 , 在每 个扫描周期都检测是否出现故障信号 , 只有在无故障允 许操作位有效且接收到启动允许信号后 , 才可进入电磁 阀就绪状态 , 就绪后可按照 自动允许与否来决定是电磁 阀手动控制还是 自动控制有效。若是自动控制有效 , 则 按事先设计好的时序来输出自动信号控制 电磁 阀。不 管是 自动信号还是手动信号 , 都是控制信号上升沿有 效, 电磁阀启动期间不接受其它启动信号 。 系统 电磁阀具有故障信号监测处理功能 , 当查明有 电磁阀机械、电气故 障时, 不管处于何种状态 , 电磁阀 都立即停止工作, 相应的故障指示灯警示。只有在故障 确认及故障消失后 , 故障指示灯才停止警示 , 此时需要 在无故 障允许操作位有效的前提下再次获得启动允许 信号, 才能重新进入就绪状态接受控制信号。其中每个 电磁阀都配置有各 自的分指示灯 , 此外还有一个总故障 指示灯 , 在故障出现及消失时按设定的逻辑输出。 2 2 面 向聪蓦搜坎 毒 譬赫砖 框 架实现 设计阶段初期应如何合理划分出系统的任务模块。 一 般来说 , 划分任务模块的依据大致有两种 , 一种是按 照工艺要求, 将复杂工艺拆分为多个简单功能子模块; 另 一 种是将可重复调用的代码进行模块化 , 或者说是按面 向的对象的功能进行封装模块化。 根据系统工艺流程的分析, 整个电磁阀P L C工艺可 细分为 ①故障判断确认 、②分指示灯控制、③总指示 灯控制、④电磁阀就绪、⑤电磁阀手动启停控制、⑥电 磁阀自动启停控制、⑦自动信号产生。由于控制对象电 磁阀为多个, 故又可结合按对象可重复代码方式划分 , 很 明显每个电磁阀都可单独调用的模块为①②及⑤⑥。综 合这两种划分方法 , 最终可划分为以下四个功能子模块。 模块一 故障处理子模块, 对应于每个 电磁阀, 功能 包括故障类型判断、保存、故障确定、无故障允许操作 位输出及相应分故障灯的显示。 模块二 电磁阀就绪子模块, 属于汇总式的模块 , 功 能是汇总每个电磁阀产生的故障信息 , 输出总故障指示 灯控制信号 ; 汇总每个 电磁阀的允许操作位并结合外部 输入启动允许信号 , 输出总控制就绪信号。 模块三 电磁阀控制子模块 , 对应于每个 电磁阀, 按 设定的工艺要求, 接收手动及 自动信号对 电磁阀进行控 制输出。 模块四 自动信号生成子模块 , 此模块相对独立, 主 要是按照设定的时序要求输出电磁阀 自动控制信号。 在主扫描程序中将这 四个子功能模块按调用次数 及 次序放 置 即可 。 2 3 子功能模块编程方式选择 功能划分后是功能模块具体编程方法的选择, PL C 的编程方法有很多种, 其中状态转移法 S F C 最为标准严 谨 , 对应的状态转移图是一种通用技术语言 , 可供不同 专业人员之间进行技术交流。采用状态转移法进行编 程 , 不需要太多地依赖于设计人员的经验和技巧 , 有一 定的方法和步骤可遵循, 尽可能地减少编程时的试探性 和随意性, 编制出的程序在调试、修改和阅读方面也很 方便 , 近年来已经得到国际电工协会 I EC 的大力推荐, 被确定为 P L C位居首位的编程语言【 2 _ 3 1 。 为避免不同子模块设计的多样性和随意性 , 尽可能 实现子程序模块的标准化或框架化 , 对于有一定逻辑要 求的模块都统一选择状态转移法编程 , 对于只是简单罗 列要求的子模块则采用经验的线性排列设计即可。在 此本例中的模块一、三及四选用状态转移法, 模块二采 用普通的经验线性排列设计方法 。 在 S T E P 7软件中有两种任务块 FC或 F B , 两者具 体的区别请参阅相关文献[ 4 ] 。由于状态转移法需要定 义状态位 , 为使状态位不受其它子模块操作的干扰 , 需 分配固定的寄存器给定义的状态位。故在 S TE P7 软件 中, 采用状态转移法编程的任务模块需用 F B类型, 并将 其中的状态位定义为S T AT变量 , 形成该功能块私有的 背景数据块。其它的逻辑简单 , 只采用普通编程法 , 且 不需要背景数据块的任务模块则可用 F C类型。 2 4 状态转移法在子功能模块 中的应用 由于篇幅有限, 下面只列出故障处理子模块 FB类 型 的具体设计过程。子模块需要完成任务是 1 子模块调用初始 初始配置操作 ; 2 子模块调用结束 退出前配置操作; 3 子模块调用 判断电磁阀是否有故障产生及相 应的故障类型 , 保存故障类型; 4 子模块调用 由故障的产生、确定、消失等条 件输出允许操作位、分指示灯控制输出、总指示灯标志 位 标志位需要在就绪功能模块 中进行汇总处理后才进 一 步 输 出总指示 灯控 制信 号 。具体 逻辑 要求 为 ①故 障出现还没确认 时 , 分 指示灯 闪烁 , 总 指示灯 亮, [ E O O L P F L P ] [ O f l i c k e r 1 ] ; ② 故障确认后故障消失, 分指示灯灭 , 总指示灯灭, [ E O O L P F L P ][ 1 0 0 】 ; ③故障确认后故障仍存在 , 分指示灯亮, 总指示灯 亮 , [ E O OL P F L P ] [ O 1 1 ] ; ④故障产生后在没有确认前 , 不管是否消失 , 维持 原有指示灯状态不变 。 O B 1 l a l n P r o g r a a e 印 c y c l e 程序段 l 标题 程序段 2 标题 稠岐睡 S r A l t T _ l 子攥块 . - 1卜 一 E 孽E 薹 0 。 飘 豇 。一 S nl R T 1 D l i e1 一 Ic O L P I {1 “ 1 一 l iT EL1 一 EL. 一 AF f l i e r 一 f l i c 1 c 描 图 1 主扫描程序调用 图 l 为主扫描程序 OB 1 对子故障处理子模块的调用 操作对象为阀 1 , 对应的背景数据块为”F BI _ D B1 1 ” , 输 入信号有 用于阀 1 故 障处理 的控制信号 M C 1 , 反馈信 号 MT1 , 限位开关信号 E L 1 , 故障确认应答 AF, 及闪烁信号 f l i c k e r 。输出为阀 1 的无故障允许操作位 E O i , 分指示 灯 O L Pl , 总指示灯标志位F L P1 。 值得注意的是, 子模块的输入开关信号 S TART与调 用使能信号 sTARTEN 的关系。从图 1可以看出, S TA R T E N信号是 由S T A RT信号引申出来的 , S T A RT接 通时, S T A RT _ E N同时接通; S T AR T断开时, S T A RT _ E N 比S T ART慢一个扫描周期断开。根据这两信号的关联特 性及应用的位置 , 可以保证子模块输入开关信号 S TART 自动化技术 与应用2 01 0年第 2 9卷第 7期 接通与断开的首个扫描周期 , 功能块的使能端 E N处于接 通状 态 。 图 2 子功能模块状态转移图 图 2为故障处理子模块的状态转移 图。在此框图 中, 上述子模块的四个具体子任务清楚得到体现。 子任务一 条件 ‘ P ’表示在开关信号 S TA RT的上升 沿, 即S TART接通的第一个扫描周期进行必要的模块初 始化工作, 在这里是初始状态 m0 0置位, 其它状态位复位 ; 子任务二 条件‘ n’表示在开关信号 S T ART的下 降沿 , 即在结束功能块调用前的最后一个扫描周期进行 必要的模块退出准备操作 , 在此为复位所有的状态位。 子任务三 “ 故障判断保存”操作。此操作在 S TART 有效的前提下无条件执行的 , 即在每个调用的扫描周期都 需要判断出故障类别及 F 有故障 信号, 将故障类别信号定 义为 S TAT变量, 可 自动保存在背景数据块中以供使用。 子任务四 具体的功能块逻辑输出。图中mO O 为 “ 初 始无故障”状态位 ; m0 1 为 “ 故障出现还没确认”状态 位 ; m0 2为 “ 故 障确认后故 障消失 ”状 态位 ; m0 3 为 “ 故 障确认 后故 障仍 存在 ”状 态位 。状态 转移 图清 楚明 了 , 满足 上述 逻 辑 要 求 。 一 个完整的功能程序块可分为三个主要组成部分 , 子 程序初始化处理, 子程序逻辑处理, 子程序退出前处理。由 上述功能子模块的设计介绍可以看出, 采用状态转移法, 不 但能够清楚明了的展示功能逻辑要求 , 而且可以形成一种 比较固定的框架模式来实现程序块的三个组成部分。 ; 尊 蠹 j 一 誊 2 经过以上分析讨论 , 使我们对 P L C控制系统的面向 自 动 化 技 术 与 应 用 2 0 1 0 年 第2 9 卷 第7 期 P L O 与D O S PL C a n d DCS 对象结构化编程过程有 了更好的了解 , 同时可以看出, 将状态转移法应用在具体的子功能模块编程中 , 减少了 设计经验对 P L C软件设计的影响, 并且形成一种较为固 定完整的实现框架模式。最终达到在实际应用时 , 可以 根据 P LC程序结构设计思路 , 功能模块的组成及相应状 态图, 为程序的阅读交流、修改优化 , 设备的正常运行 维护等工作提供可靠 的依据。 参考文献 [ 1 】张逸群 , 张晶亮, 王一兵. P LC 编程的面向对象程序设计 方法[ J ] . 煤矿机电, 2 0 0 9 5 6 9 - 7 1 . [ 2 】廖常初. P L C梯形图的顺序控制设计法与顺序功能图 『 J ] . 电工技术杂志, 2 0 0 1 , 1 0 5 1 - 5 3 . [ 3 】廖常初. P LC编程及应用【 M】 . 北京 机械工业出版社, 2 0 0 3. [ 4 】刘锴, 周海等. 深入浅出西门子 S 7 3 O 0 P L C 【 M】 . 北京 2 0 0 4. 作者简介曾海燕 1 9 8 1 一 , 女, 实验师, 硕士, 研究方向 电 气 自动 化 。 上接第 4 6页 首先在接收端缓冲区设定初值为 N ; 如果连续三 次由于缓冲区太小导致到达的期望数据包被确认为丢 失包 , 就令先到达的数据包数 kk 1, 如果 k的增加 达到最大值 , 保持k ‰不变; 如果连续三次期望数据包与当前处理数据包之间 的间隔小于当前缓冲区大小 n, 则缓冲区减小一个单元 , kk-1, 即减小一个数据分组平均长度 , 如果 k达到 最小值就保持k Ⅳm ; 。 4 测试结果与数据 分析 在实验室环境下, 测试 R T C P报文统计丢包率变化 与相应缓冲区大小调整关系 , 同时也反映了在某一时间 段内网络传输包传输质量, 在s n i f f e r P r o软件中做分析。 该实验反映出, 接收端缓冲区选取 6 5 5 3 6 1 3 最为合适。需 要说明的是, 丢包数是在一段时间内 本次实验定为 1 5 S 的 平均丢包 数量 。 表 1 接收端缓冲区滑动控制策略测试结果 当丢包率大于5 %时, 接收端多媒体数据基本是停滞 , 这种具有滑动大小的缓冲区控制算法不仅能及时响应网 络变化, 还能节省接收端的缓冲资源。如何确定缓冲区大 小是对多媒体传输质量起着相当重要的作用 , 本文采用滑 动策略对缓冲区大小采用试探法, 同时如何能够保证在缓 冲区能迅速准确将需要的数据包找出来, 一般都是采用索 引表的方法, 本文没有做详细阐述, 需进一步研究讨论。 5 结束语 5 4 l T e 瞒 o f A l 妇n 绷0 n A p p Ib 敝In s 本文详细阐述了现 目前常用的网络拥塞控制方法 , 即反馈控制与 自适应控制及其改进平稳 自适应算法等 控制策略 , 结合视音频传输中实时性和快速性 , 采用了 添加时间戳和在接收端建立滑动控制的 自适应缓冲区 方法 , 改善了多媒体数据传输质量 , 使传输过橼充分 利用 了带宽又不引起 网络拥塞 , 取得 了很好麒验结 果, 验证 了该方法的可行性和有效性。 参考文献 [ 1 】黄晓武. 实时传输、控制协议 R TP / RTC P 分析[ J 】 . 福 建 电脑 . 2 0 0 3 , 1 l 2 3 - 2 5 . [ 2 ]李太君, 吴泽晖. 流媒体传输协议及其应用开发【 J ] . 计算 机工程与应用. 2 0 0 4 . 3 4 6 - 4 8 . [ 3 】余胜生, 邓家义, 周敬利. 视频实时传输中的速率控制研 究[ J ] . 计算机工程与应用. 2 0 0 2 . 1 1 3 7 - 3 9 . [ 4 ]S C HUL Z RI NNE H, C AS NE R S, F r e d e r i c k Re t a 1 . RT P a t r a n s p o r t p r o t o c o l f o r r e a l - t i me a p p l i c a t i o n s [ S 】 . RFC 1 8 8 9, I n t e r ne t En g i n e e r i n g Ta s k Fo r c e , 1 9 9 6。 8 9 1 O 2 。 [ 5 ]宋振龙, 彭宇行. 一种实时数据流量控制算法[ J 】 . 计算机 工程 . 2 0 0 4 . 5 1 7 -1 8 . [ 6 ]程万翔, 张轶博 , 雷振明. 平稳的R T P自适应算法[ J 】 . 齐 齐哈尔大学学报. 2 0 0 2 , 1 2 3 -2 6 . 【 7 ]RI CHA RD MARQ UE Z, E i t a n Al t ma n, a n d S o l a z v e r S O l e a l v a r e z . I E EE Tr a ns a c t 2 o ns o n Au t o ma t i c c o n t r o l , 2 o o 5, 5 0 1 2 2 0 6 5 - 2 0 6 9 . [ 8 】 P E R KI NS C. RT P Au d i o a n d Vi d e o f o r t h e I n t e me t [ M】 . MA A d d i s o n We s l e y, 2 0 0 3 . 8 6 4 - 8 7 5 . [ 9 】流媒体技术基础 一流媒体传输协议. h t t p / / www. we z u. n e t / b l o ff /d e f a u l t . a s p t a ff RPVP [ 1 0 ]H. S E HUL Z RI NNE, S . C AS NE R, R. F RE DE RI C K, a nd V , J ACOBSON . , Rl r a t r a n s p Or t Pr O t O c 0i f O r r e a l a P P l i e a t i n n s . I n t e me t E n g i n e e r i n g l ’a s k [ C ] . P o r e e , RF C1 8 8 9 , l 9 9 6 2 -7 9. [ 1 1 】董振亚. 频流式传输拥塞控制研究与实现[ D 】 . 陋j 防科 技大学硕士学位论文】 . 2 0 0 3 . 作者简介 万正道, 男 1 9 8 2 一 , 工学硕士, 助理工程师, 研究 方 向检 测技 术 与 自动化 装 置 。
展开阅读全文