0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何写出高质量PLC程序?

jf_bq60R2Xt 来源:数控狂人 作者:数控狂人 2022-11-14 15:40 次阅读

一、PLC程序的设计要求

一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释、精良的架构、良好的可扩展性、完备的报警保护系统、运行前的模拟系统。

01 简单性

使PLC程序尽可能简单。简单的含义就是尽可能地使用标准化的程序框架,尽可能使用简单的指令。

要想程序简单,从大的方面讲,要优化程序结构,用流程控制指令简化程序,从小的方面讲还要用功能强的指令取代功能单一的指令,以及注意指令的安排顺序等。

02 可读性

要求所设计的程序可读性要好。这不仅便于程序设计者加深对程序的理解,便于调试,而且,还要便于别人读懂你的程序,便于使用者维护。必要时,也可使程序推广。

要使程序可读性好,所设计的程序就要尽可能清晰。要注意层次,实现模块化,以致于用面向对象的方法进行设计。要多用一些标准的设计。

如遇特殊情况下采用语言编程,多数情况下请使用梯形图编程,方便阅读。

再就是I/O分配要有规律性,便于记忆与理解。必要时,还要做一些注释工作。内部器件的使用也要讲规律性,不要随便地拿来就用。

可读性在程序设计开始时就要注意。这不易完全做到。因为在程序调试的过程中,指令的增减,内部器件的使用变化,可能使原较清晰的程序,变得有些乱。所以在设计时就对调试增减留有一定的余地,然后调试完毕后再做一下整理,这样所设计的程序具有更高的质量。

程序的注释,起码应该有以下几个方面:

A、系统注释:整套程序的版权公司和此套程序用途;

B、程序块注释:此程序块的主要用途和作者;

C、段注释:此段代码的用途;

D、变量注释:重要性无需多言,包含I/O注释、中间变量注释。

b9567e22-633e-11ed-8abf-dac502259ad0.png

而至于保密性的考虑,我觉得应该在程序的加密算法或者块的加密上考虑,而不应该用减少注释这种小聪明来实现。

03 正确性

PLC的程序一定要正确,并要经过实际工作验证,证明其能够正确工作。这是对PLC程序的最根本的要求,若这一点做不到,其它的再好也没有用。

要使程序正确,一定要准确地使用指令,正确地使用内部器件。准确de地使用指令与准确理解指令相联系,为此对指令含义和使用条件一定要弄清楚。必要时,可编些小程序对一些不清楚的指令作些测试。

同一指令,由于PLC的出厂批次不同或是PLC的系列型号的不同,一些指令细节有可能不一样,应仔细查阅编程手册。

内部器件正确使用也是重要的。如有的PLC有掉电保护,有的PLC没有。一定要做到该掉电保护的一定要用掉电保护的器件,反之则不能用。

总之,要准确地使用指令,正确使用内部器件,使所编的程序能正确动作,这是对PLC程序最根本的要求。

举个简单的例子,西门子的上升沿和下降沿需要使用带存储功能的变量作为中间变量,比如M点或者DB点,如果使用FC的temp变量就会出问题的。

04 可靠性

程序不仅要正确,还要可靠。可靠反映着PLC程序的稳定性,这也是对PLC程序的基本要求。

有的PLC程序,在正常的工作条件下或合法操作时能正确工作,而出现非正常工作条件(如临时停电,又很快再通电)或进行非法操作(如一些按钮不按顺序按,或同时按若干按钮)后,程序就不能正常工作了。这种程序,就不大可靠,或说不稳定,就是不好的程序。

好的PLC程序对非正常工作条件出现,能予以识别,并能使其与正常条件衔接,可使程序适应于多种情况。好的PLC程序对非法操作能予以拒绝,且不留下“痕迹”。只接受合法操作。

联锁是拒绝非法操作常用的手段,继电电路常用这个方法,PLC也可继承这个方法。

05 易改性

要使程序易改,也就是要便于修改。PLC的特点之一就是方便,可灵活地适用于各种情况。其办法就是靠修改或重新设计程序。

重新设计程序用于改变PLC工艺的用途要求的情况,不仅程序重编,而且I/O也要重新分配。多数情况下不需要重编程序,做一些修改就可以了。这就要求程序具有易性,便于修改。

易改也就是弹性,要求只要做很少的改动,即可达到改变参数或修改动作的目的。

06 扩展性

许多程序可能在进现场之前都已经编好,但是到了现场,可能还需要添加另外的程序,为了避免打乱整套系统的结构,需要在每个功能区预留一定的空间作为备用。

硬件上留出足够的余量,软件在编写的时候把手动,自动,半自动考虑好,位置留出来。

07 完备报警系统

PLC系统往往用于工业环境中,每一次的事故都会造成或大或小的损失,为了做到事故预处理或者在事故中将损失降到最小,必须重视PLC的报警和保护,在此将其摘出来作为系统的一个重要组成部分。

08 程序模拟

为了保证现场的调试进度或者给客户展示,往往在进现场之前,要对自己的程序进行全自动的模拟。为此需要在程序中加入模拟程序部分,模拟程序部分在正常现场运行之后断开。为了使程序具备模拟功能,需要做以下工作:

(1)将实际的PLC的I/O点转换为PLC的中间变量或者数据块变量;

(2)根据工艺要求编写各个设备的模拟程序;

在设计PLC程序的过程中,能够满足以上几个方面的要求的就能称得上是一个好程序了。

二、PLC程序的设计规范

1、选择合适的PLC型号及I/O点数,有特殊功能需求时选择特殊功能模块。

2、熟悉所选择的PLC编程指令及编译软件。

3、进行软元件规划,包括内部继电器、保持继电器、数据寄存器定时器、计数器等。

4、进行程序规划,一般以故障提取、故障处理、手动处理、自动处理、输出处理这样的顺序进行编程。比较大型的工程或设备按功能单元分段、分块进行处理,如一条自动化生产线中有提升机、移行、顶起旋转装置等,则应按上述单元分段分块编程。

5、在分段分块编写的程序前应加上简短的段注释,说明此段程序的功能,如有必要可以注明相应的工艺流程。分块或分段的程序在总体程序的位置顺序应基本上按工艺流程顺序排列,便于程序的可读性。

6、在程序设计之前,应对设备进行抽象,对如停止、急停、过载、超限、超时、安全光幕、碰停、门开关等共用因子进行提取,放在启动回路或启动主控、连锁回路,作为整个程序结构的大前提,在此基础下,再将程序分为自动、手动两大功能区。

7、将程序结构手动功能区共用因子,如手动、危及设备人身安全等因数因子进行提取,放在手动主控、连锁回路,对手动控制进行保护、屏蔽、报警。

8、将程序结构自动功能区共用因子,如自动、超限、超时等因数因子进行提取,放在自动主控、连锁回路,对自动控制下设备进行保护、屏蔽、报警。一个总的原则就是,在确保安全的前提下,严格限制设备的进,宽松限制设备的出。

9、程序设计时应设计程序总复位功能,便于使用者在设备出现故障情况下,可以方便尽快恢复设备正常工作。总复位应充分考虑在复位过程中设备和人员的安全。

10、自动模式切换到手动模式时,程序应清除自动模式下的输出和中间状态。特别是在自动模式使用SET指令时,必须在手动模式用RESET指令予以清除。

11、严禁在编制程序中使用双输出,即同一条输出语句或同一个输出线圈在程序中出现2次及以上。在不同模式条件下的对同一输出点的输出使用中间继电器进行中转,最后集中到一起并列到输出点。

12、使用触摸屏时,对触摸屏和PLC公用的控制区和状态区,不得做其他功能方面的编程使用。

13、对PLC的特殊模块,在使用之前,应先查明其控制区和状态区是否占用工作字,若占用,不得将这些工作字做其他方面的编程。

14、PLC的输入、输出、中间继电器、定时器、计数器、数据寄存器等都要加中文注释。输入、输出还要有元器件名称位号。对应的输入点,一般情况下默认为外围开关连接的是NO触点,对于需要接NC触点的须在注释中标明。所有注释应当清晰明了,不易产生误解,尽量少使用泛指。

15、工程调试完成后,系统必须保留最终软件程序,保存的文件名应包含项目编号/作者/日期信息/版本号等。

16、关于程序加密:对于加密程序的密码必须有专门的文件予以保存,并注明相应的用户名+密码+权限,分发给至少两个人以上了解密码,防止密码丢失带来无法打开程序的情况。

三、PLC程序的编程建议

1、PLC和上位机(或触摸屏)组成监控系统时,在画面上很多时候需要有“手动”、“自动”等控制模式(一般都是多个只能一个时)。在程序里面可以用“MOV”指令。如:当选择“手动”就将常数1 MOV到一个寄存器VB10里面,当选择“自动”就将2 MOV到同一寄存器VB10。只要判断寄存器的数据是多少,就知道系统是哪种控制方式。这样的思路好处是容易理解,不需要互锁之类的麻烦程序。

2、程序有模拟量控制时,如果读取的模拟量基本上没误差,可以采取时间滤波的方式,延时一段时间。如果读取的数据误差很大,就需要采取其它的滤波方式,如算平均值等。可以查阅相关的资料

3、在程序调试过程中(特别是设备改造时,你的程序是加入到原来设备的程序中时),当程序语句中出现条件满足,而输出线圈不接通时,可以检查你的这段程序是否是在这样的语句之间,如JUMPgo to等语句。还有一种可能就是在中断程序之后,条件满足而没输出不接通,一般都是这段的程序不被扫描。

4、在顺序控制程序时,即一个动作完成后,进入到下一个动作,等类似的顺序控制,采用+10+10控制模式,本人觉得很方便。其思路是:预置一个寄存器,在初始化时值为0,当系统启动后,对它+10,此时寄存器为10,寄存器等于10时可以做第一个动作;第一个动作完成后,再对寄存器+10,此时寄存器等于20,可以做第二个动作,第二个动作完成后又+10,此时寄存器等于30,这样只要判断寄存器里面数据为多少,就知道要完成那个动作。当需要跳跃动作时,可以不再+10,可以加+20+30....,看实际的需要而定。

为什么加10而不是加1,因为加10之后,如果插入一段,只要在这10个空余的地方随便选择一个位置就可以了。

5、在设计程序的时候,当出现工艺上的故障(非控制系统控制),最好将故障现象保持,并有灯光声音报警。直到操作工复位,以便让其知道系统出现了故障。不然停机了,别人还认为你的程序出问题了,一般在设计一个新系统时是要注意到这些。

6、对于经常调用的子程序,可以做成子模块,频繁调用。

7、由于生产机械在工作循环中的各工步运动在执行时需要一定的时间,且这些时间都有一定的限度,因此可以以这些时间为参考,在要检测的工步动作开始的同时,起动一个定时器,定时器的时间设定值比正常情况下该动作要持续的时间长20%~30%,而定时器的输出信号可以用于报警或自动停机装置。当生产机械某工步动作的时间超过规定时间,达到对应的定时器预置时间,还未转入下一工步动作时定时器发出故障信号,该信号停止正常工作循环程序,起动报警或停机程序,这就是我们常说的超节拍保护。

8、一些安全用检测开关(如急停按钮、安全光幕、极限开关等)实用常闭(NC)输入。

9、为安全、节能考虑,尽量将输出设计成需要动作时才动作,一旦到位就停止输出,而不要设计成平时一直输出,需要停止时才让输出断开。

10、执行元件的动作原则应当是宁可不动,也不要乱动!

11、单台设备控制:单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。

12、单台设备(泵、风机及其它大型设备)运行满24小时必须进行轮换,且必须有运行时间累计,如果由上位机设定启/停顺序除外,操作人员自行设定。

四、PLC程序的命名通用规则

1、驼峰命令法(CamelCase)

也称骆驼式命名法,就是当变量名或函数名由一个或多个单词连接在一起构成唯一标识符时,作为逻辑断点的单词的首字母都采用大写,例如:“myName”,这样的变量名或函数名看上去就像骆驼峰一样此起彼伏,故得名。驼峰命名法又分为小驼峰法和大驼峰法。(1)小驼峰法:第一个单词首字母小写,其余单词首字母大写。变量一般使用小驼峰法命名。例如:“myName”。(2)大驼峰法:又称帕斯卡命名法,即所有单词首字母大写。函数、类,一般使用大驼峰法命名。例如:“MyName”。

2、匈牙利命名法(Hungarian)

开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写。基本原则:变量名=属性+类型+对象描述。例如:Int iMyAge; “i”是“int”类型的缩写;char cMyName[10]; “c”是“char”类型的缩写;float fManHeight; “f”是“float”类型的缩写。

3、帕斯卡命名法(PascalCase)

即前面所述大驼峰命名法。每个单词的第一个字母都大写。例如:“MyName”。

4、下划线命名法(UnderScoreCase)

变量名或函数名的每个逻辑断点都有一个下划线来标记。例如:“my_name”。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    4990

    文章

    12646

    浏览量

    456825
  • 电气
    +关注

    关注

    18

    文章

    1103

    浏览量

    52367

原文标题:如何写出高质量PLC程序?这4大要点电气工程师必知!

文章出处:【微信号:数控狂人,微信公众号:数控狂人】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    北斗芯片产业的高质量发展之路

    高质量发展是全面建设社会主义现代化国家的首要任务”,二十大报告中对高质量发展有着明确的论断和要求。在2023年的全国两会中还指出,加快实现高水平科技自立自强,是推动高质量发展的必由之路。中国卫星
    的头像 发表于 03-15 14:03 201次阅读
    北斗芯片产业的<b class='flag-5'>高质量</b>发展之路

    富捷电子被授予“高质量发展突出贡献奖”

    在近日举行的马鞍山新区高质量发展表彰大会上,富捷电子在推动地区经济发展中的卓越贡献,被授予“高质量发展突出贡献奖”。
    的头像 发表于 02-23 15:16 398次阅读

    稳中创新•产业升级•高质量发展 | 联诚发高质量发展工作推进会议召开

    2月21日下午,联诚发LCF以“稳中创新•产业升级•高质量发展”为主题的企业高质量发展工作推进大会在联诚发深圳总部隆重召开。擂起奋进催征的战鼓,争分夺秒抢抓宝贵春光,明确企业重点目标任务,全力以赴
    的头像 发表于 02-22 11:33 264次阅读
    稳中创新•产业升级•<b class='flag-5'>高质量</b>发展 | 联诚发<b class='flag-5'>高质量</b>发展工作推进会议召开

    捷易科技出席广东省韶关市高质量发展大会

    ABSTRACT摘要2月19日,2024年韶关市高质量发展招商大会在韶关举行,来自政府、科技、企业各界专家代表共同探讨韶关高质量发展。捷易科技总经理韩运恒出席大会。JAEALOT2024年2月19
    的头像 发表于 02-22 08:25 243次阅读
    捷易科技出席广东省韶关市<b class='flag-5'>高质量</b>发展大会

    如何写出好的代码?高质量代码的三要素

    脍炙人口的诗"春有百花秋有月,夏有凉风冬有雪",意境唯美,简明易懂。好的代码也是让人陶醉的,那么如何写出好的代码?
    的头像 发表于 01-05 11:29 837次阅读
    <b class='flag-5'>如何写出</b>好的代码?<b class='flag-5'>高质量</b>代码的三要素

    如何高质量完成修复真空泵轴磨损问题

    电子发烧友网站提供《如何高质量完成修复真空泵轴磨损问题.docx》资料免费下载
    发表于 01-03 17:15 0次下载

    双目测宽仪高质量生产利器 测宽仪价格

    :500Hz; 电源电压:AC 220±15% V,50Hz; KX02-SY1000型双目测宽仪是高质量高精度的可应用于热轧、冷轧板材的在线检测设备,热轧时利用其自发光即可检测,冷轧时,则需要安装光源进行补
    发表于 12-04 17:10

    卓越领航!广和通获评“2023高质量发展领军企业”

    广和通要闻 11月28日,以“协同新发展、引领新示范”为主题的第四届高质量发展高峰论坛暨2023高质量发展领军企业、领军人物颁奖盛典顺利举办。大会揭晓了“2023高质量发展领军企业、领军人物”榜单
    的头像 发表于 11-29 18:00 303次阅读
    卓越领航!广和通获评“2023<b class='flag-5'>高质量</b>发展领军企业”

    如何写出高效优美的C语言代码

    电子发烧友网站提供《如何写出高效优美的C语言代码.pdf》资料免费下载
    发表于 11-18 10:55 0次下载
    <b class='flag-5'>如何写出</b>高效优美的C语言代码

    高质量LTE网络改变传统天线技术

    电子发烧友网站提供《高质量LTE网络改变传统天线技术.pdf》资料免费下载
    发表于 11-10 15:25 0次下载
    <b class='flag-5'>高质量</b>LTE网络改变传统天线技术

    用C语言如何写出单片机延时程序,且延时时间如何计算的?

    用C语言,如何写出单片机延时程序,且延时时间如何计算的?
    发表于 10-18 08:19

    高质量C、C++编程指南

    林锐-高质量C、C++编程指南电子档
    发表于 10-07 07:14

    如何写出高效的嵌入式C语言程序

    作为嵌入式工程师,怎么写出效率高、思路清晰的C语言程序呢?
    发表于 08-18 10:42 203次阅读

    何为高质量的代码?如何写出高质量代码?

    懂得“数据结构与算法” 写出高效的代码,懂得“设计模式”写出高质量的代码。
    发表于 08-02 09:44 546次阅读
    何为<b class='flag-5'>高质量</b>的代码?<b class='flag-5'>如何写出</b><b class='flag-5'>高质量</b>代码?

    新发展格局下 磁元件企业如何实现高质量发展

    高质量发展浪潮下,磁性元器件行业面临转型问题,如何实现产业高质量发展?华东磁元件峰会搭建行业沟通桥梁,将为磁元件行业实现高质量发展提供一份具有参考意义的“答案”。 高质量发展的奋进号
    的头像 发表于 07-11 11:50 466次阅读
    新发展格局下 磁元件企业如何实现<b class='flag-5'>高质量</b>发展