PLC梯形图编程规范的制定(白银杨鹏).doc_第1页
PLC梯形图编程规范的制定(白银杨鹏).doc_第2页
PLC梯形图编程规范的制定(白银杨鹏).doc_第3页
PLC梯形图编程规范的制定(白银杨鹏).doc_第4页
PLC梯形图编程规范的制定(白银杨鹏).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

正所谓“思维是发散的,但是行为必须是规范的”本文已经发表,在这里免费提供给大家参考,可以以任何形式(包括印刷)随意传播,在转载的过程中请注明作者,不可直接复制进行抄袭引用举例:冶金自动化2015年Vol.35增刊1之585页590页【分类号】TP273;TP311.1 【主办单位】全国冶金自动化信息网、冶金自动化杂志社PLC梯形图编程规范的制定杨鹏(白银有色集团股份有限公司装备与自动化控制研究所,甘肃白银 730900)摘要:在当今的工业控制领域,可编程控制器得到了普遍应用,梯形图是可编程控制器最常用的编程语言,本文分析了梯形图语言的弊端,介绍了制定梯形图编程规范的必要性,通过论述面向对象编程,举例论述了梯形图编程规范的内容,探讨了编程规范与发散思维的辩证关系,实践证明,规程规范有助于改善PLC组态过程中的混乱状况。关键词:可编程控制器;梯形图;编程规范;面向对象程序设计;发散思维The formulation of PLC LAD programming specificationYANG Peng(Institute of equipment and automated control ,Baiyin Nonferrous Metal Group Co.Ltd., Baiyin 730900,China)Abstract:In todays industry control field, PLC have been widely used,LAD is the most popular programming language for PLC. In this paper, the corrupt practice of LAD language is analyzed, the need for LAD programming specification is discussed, the content of LAD programming specification is introduced by object oriented programming, the dialectical relation between LAD programming specification and divergent thinking, through the practice, LAD programming specification can help to avoid confusion while programming.Key Words:PLC; LAD; standard of programming; Object-Oriented Programming; divergent thinking中图分类号:TP311 文献标识码:B1 引言在当今的工业控制领域,可编程控制器(PLC)得到了普遍应用,所以工业控制系统的开发,呈现为“软件化”的特征,即自动化工程师可以通过“编程”的方式实现控制逻辑。针对PLC的编程,最常用的编程语言为梯形图(LAD),梯形图能满足常见的工业控制的需求,容易入门,使用普遍。在控制系统的组态过程中,源代码由基本语句组成,自动工程师可以自由地组合基本语句,实现控制逻辑,PLC厂商追求最大的灵活性,然而过度自由,必然会带来诸多弊端。在生产实践中我们发现,当程序规模较大时,工程师虽然完成了控制系统的功能,但是却对代码的质量没有信心,甚至若干天之后,无法修改自己编写的代码,实现团队合作编程也很困难。所以有必要编写相关的编程规范,以体现编程的专业化和标准化。2 梯形图编程规范综述2.1 梯形图语言的弊端IEC 61131-3是关于PLC开发语言的重要标准(非强制性),目前规定了包括梯形图在内的5种编程语言。梯形图是一种图形化语言,根据“继电器控制”的符号和思想设计而来,造就了梯形图既不像数学体系那样简约、规整、完备,又不贴近人类的自然语言,所以梯形图具很多天然缺陷,例如:可读性很差,复杂逻辑难以编程和分析;能流与逻辑运算存在概念重叠,容易引起混乱;数据结构(例如:数组)支持不足,所以很多算法实现困难,等等。加之,市场上的主流PLC产品,以所谓“扫描周期”的方式工作,即在一个扫描周期内,将所有指令执行完毕之后,再一次性输出,PLC不断重复扫描周期。所以具有某种特征的分支逻辑(在计算机高级语言中常用if关键字来实现)无法实现,增加了编程的难度。下面的代码,是使用类似C语言的计算机高级语言(如:Java、C#)编写的伪代码:bool flag = true;if(flag = true)输出;flag = false; else 输出;flag = true;这段伪代码表示的逻辑可以描述为“自定义变量控制的分支逻辑”,如果使用梯形图语言直接表达这样的逻辑,则在一个扫描周期有输出,下一个扫描周期没有输出,如此反复,解决的办法见图4所示的“单按钮控制”。2.2 梯形图编程规范的内容简单地说,尽可能多地将有益的编程方式进行整理汇编,就形成了“编程规范”,除此之外,为了让编程规范更具有参考价值,还包括了其它内容:建议的编程流程,容易犯的编程错误,不提倡的编程方法,编程陷阱(逻辑分析正确,而实际运行效果不同),仿真差异(仿真的结果与实际运行的结果不同),软件或硬件的bug,甚至某次试验情形也可以写入编程规范,等等。2.3编程规范的使用为了便于翻阅,将同一类型的条款编为一组,例如:将所有框架设计的条款归为一组,将所有有关电机控制的条款归为一组。工程师在编程时,参考规范,符合规范中描述的情景,则严格按照规范进行编程。更重要的是,理解编程规范的内涵,灵活参考。2.4 编程规范“具体条款”的模板编程规范由具体的条款组成。采用表格组织具体条款的内容,这样,增加了查阅的便利性,也可以提醒编写者表述全面,图1所示为编程规范条款的模版。图1 编程规范具体条款的模版参照图1,说明如下:(1)名称【级别】:每条具体的条款都应有一个简洁明了的名称;其中“类别”则可为:必须、提倡、不提倡、禁止等,例如:当“类别”为“必须”时,表示当条件符合时,必须使用。也可填写编程陷阱、仿真差异、硬件能力试验、对比试验等。举例:单按钮控制【必须】。(2)代码举例及说明:这是该条规范的核心内容,在填写时,要求使用业界常用的习惯的表达方式及术语,特别是提倡通过简单案例进行举例说明,这样更受工程师的欢迎。不提倡使用晦涩的教条式的表达方式。(3)适用条件:往往大多数的条款,都有一定的适用条件。如果有些条款的适用条件非常重要时,则需要使用醒目方式(例如:使用加粗的红色字体)进行提醒。(4)错误使用的情形:罗列部分使用不当的情况,从反面理解该条款。(5)目的:使用该条款能达到什么样的效果,也就是目的是什么。可填写:怎么增强了代码的可扩充性;怎么提高了运行效率;怎么减少了误差,等等,建议通过对比的方式说明。(6)链接:链接到其它相关条款。(7)其它:需要说明的其它内容。3梯形图编程规范的制定不同厂商的PLC存在差异性,所以编程规范的制定必须针对具体产品。本文则以西门子S7-1500系列PLC1为例进行论述,采用的开发软件为博图V13。3.1 西门子PLC梯形图编程规范概述西门子PLC很好地实现了IEC 61131-3标准的要件,当然了,在具体实现该标准时,不可避免地会有其自身的理解和特点,例如:定时器是通过独立的硬件模块实现的,所以定时器时钟与主程序扫描时钟不同步,往往会出现“实际运行效果与程序逻辑不一致”的现象。西门子PLC梯形图编程规范大致包括以下内容:(1)规定了如何书写需求分析的文档,如何书写源代码中的注释,如何书写产品说明书,以及变量、参数的命名规则、常用单词的缩写表等。(2)归纳了很多实用的编程小技巧,梯形图可读性很差,所以这部分内容也很重要。限于篇幅有限,不能全面罗列。图2为自定义永真永假常数;图3(a) 是出现在很多教科书中的电机控制的 “启、保、停电路”,但是不提倡使用该代码,提倡使用图3(b)所示的程序,该程序可读性强,易于扩展,其中,Strt表示启动按钮,Clse表示停止按钮,M表示电机;图4为“单按钮控制”的程序,按钮(btn表示)按一下,灯(L表示)亮了,再按一下,灯灭了,tmp为辅助的中间变量,按钮不同于开关,按钮按下之后会弹起。图2自定义永真永假常数图3启、保、停电路图4 单按钮控制(3)如何定义和使用FC(译为“功能”),FC类似于计算机高级语言中“函数”的概念,是模块化程序设计的重要概念之一。在定义FC时,要求其完成的功能明确单一,参数的意义也要明确单一。在规范中,也定义了一些我单位常用的FC。(4)如何定义和使用FB(译为“功能块”),详见3.2。在规范中,也定义了一些我单位常用的FB,例如:我单位某产品的电磁阀需要“占空比可调的周期性方波”控制2,必须使用规范中规定的FB。(5)如何进行初始化,在PLC加电工作之后,第一扫描周期将执行OB100中的代码,根据实际情况,考虑周全,确保PLC的初始化合理。(6)如何进行错误处理及操作日志。当PLC出现软硬件错误时,PLC会跳转到特定的组织块(OB)并试图执行其中的代码。例如:出现程序错误,会试图执行OB121中的程序;出现CUP硬件故障,会试图执行OB84(高档型号的PLC支持)中的程序。错误处理,除了报警、记录之外,还要做出最后努力,试图让被控对象处于安全状态。为了便于排错,至少要记录最后一次操作的相关信息。(7)输入输出模拟量的处理。(8)常见问题的处理,例如:大数问题(数值过大会造成溢出),除零问题(包括接近零的数作为除数),恶意输入(也许无意为之,例如:将时间输入为负数),定时器周期与扫描周期不同步的规避办法,等等。(9)有关PID控制3和变频器控制的规范。在大多数情况下,必须实现“带死区的PID控制”,以抑制执行机构的频繁动作,造成执行机构的损坏。(10)解耦原则及举例,为了降低开发风险和运行风险,尽量使控制系统各部分相对独立,则要进行解耦。(11)其它内容:推荐的开发流程、代码简化技巧、编程陷阱、硬件测试标准代码、最小控制系统(满足项目的基本的要求,在调试和紧急情况下使用)的特征、我单位常用的标准代码、我单位内部使用的术语解释,等等。(12)禁止常闭输出、禁止软校正,“软校正”指的是,一次仪表的误差,通过在PLC上编程进行消除,容易引起极大隐患。3.2 梯形图编程规范举例实现面向对象编程3.2.1 面向对象思想人类认识世界时,总是具有这样朴素的思维习惯:世界由一个个独立的事物(对象)组成,事物与外界存在可识别的界限,事物与其它事物之间必然存在关联(或关系)。正是根据这个观点,出现了“面向对象思想”,面向对象思想符合人类思维习惯,简单易懂,尤其在编程领域,涌现了很多面向对象语言。大多数面向对象语言认为,对象至少应该具备属性和行为等特征4。同一个事物,在不同的软件系统中,具有不同的属性和行为。产生对象,必须定义“类”,“类”是一类相似事物的模板。在工业控制这个特定领域,很容易识别出对象,将独立的设备(或部件)抽象成对象即可。3.2.2 使用FB实现面向对象编程FB具有明显的面向对象特征,并且符合IEC 61131-3标准,译为“功能块”。PLC厂商也推荐使用FB编程,所以FB在编程体系中扮演着重要的角色,属于核心概念之一。参考图1所示的编程规范条款的模版,填写有关FB的规范条款,由于篇幅有限,简略叙述如下:(1)名称【级别】:FB编程及面向对象编程方法【必须】(2)代码举例及说明:使用FB编程,需要采用面向对象思维方式。巧妙的是,在定义FB时,没有提出额外的语法,仅仅从语法的角度来说,定义和调用FB的语法,与FC(类似于计算机高级语言中的“函数”概念)一样,只是在调用FB时,会根据参数生成了所谓的背景数据,当多次调用FB时,会生成不同的背景数据。假设控制某电机,根据设定的参数,电机可进行启停,正反旋转,调节转速操作。针对该电机定义FB,此处为FB10。FB10内部由梯形图基本语句组成,图5所示为调用FB10的情形,图6所示为调用FB10时自动生成的背景数据。图5 FB10的调用图6背景数据DB10参照图5和图6,FB10参数的意义为:Strt表示启停按钮,Rate表示转速,Direction表示旋转方向,Forward表示顺时钟输出,Backward表示逆时钟输出,About用于描述电机(如编号等),About在FB内部的梯形图中不使用,但是上位机(一般为触摸屏或PC)可以访问。(3)适用条件:在工厂级、车间级等大规模控制系统中,为了更好的组织代码,必须使用FB编程;容易识别出对象时,必须使用FB编程;在代码量很大时,必须使用FB编程;应该说,在绝大多数情况下,FB都能使用。(4)错误使用的情形:略。(5)目的:实现面向对象编程,更好地组织代码。(6)链接:略。(7)其它:FB具有明显的面向对象特征,但是FB不具有“继承”等特征,也没有专门的属性和行为的语法,而是通过背景数据来体现属性,通过输出来体现行为,然而FB可以满足工业控制领域的需求。4 编程规范与发散思维梯形图 (包括其它编程语言)追求最大的灵活性,以适应各种控制需求,编程规范却在限制编程过程中的各种行为,诚然,设计控制系统需要发散思维,然而编程规范并不会妨碍发散思维,阻碍创新,在使用过程中,有以下观点和注意事项:(1)发散思维体现在多个方面,算法设计属于发散思维的主要方面,克服语法的局限性,实现算法,也属于发散思维的内容。(2)规范中绝大多数的规定,只是起到了“引导、提醒”的作用,与是否“妨碍发散思维”根本没有关系,例如:变量命名规则、错误处理,初始化处理等。(3)任何控制需求,必须通过编程语言的固有语法来实现,所以必然受编程语言的语法的约束,进而无法逾越语言的设计初衷,有些规定,只是顺应了编程语言的设计初衷,没有妨碍发散思维,即使妨碍了发散思维,也不是这些规定所为,而是编程语言所为。例如:必须使用FB实现面向对象编程,以及有关FC的规定,更多的时候,这样的语法服务于程序的框架设计,没有限制算法设计(算法设计属于发散思维的主要方面)。当然了,提倡对编程语言进行批判,并提出改进意见,提交IEC组织,事实上,对“编程语言”进行标准化,是一个颇受争议的行为,梯形图是少数得到重要组织标准化的编程语言之一。(4)开发一套控制系统,需要做很多工作,组态编程只是最后一步工作,更多的发散思维体现在前期。(5)在使用编程规范时,需要强调的是:思维是灵活的,行为是规范的。(6)任何知识都必须要有自己的理解,必须对编程规范有自己

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论