直播课堂
HOME
直播课堂
正文内容
plc编程不灵活 千万别这样干了——PLC编程四大陋习
发布时间 : 2025-06-25
作者 : 小编
访问数量 : 23
扫码分享至微信

千万别这样干了——PLC编程四大陋习

此图片来源:Rother Machine

作者 | Jon Breen

有时为了解决眼前问题,可能需要对可编程逻辑控制器(PLC)进行编程,但从长期来讲这可能会带来问题,在原程序员不在的情况下更是如此。

生产停滞让客户每小时损失10万美元,他们已经打电话给可编程逻辑控制器(PLC)程序员,以尽快解决问题。在查看最近的航班后,程序员启动了一个虚拟专用网络(VPN)。一个小时后,程序员看到了一个“全新”的程序(对他们来说是新的),数千行梯形图逻辑没有标记描述,命名规则不清晰,代码已经复制粘贴了上百次 ,而这一切都在一个庞大的例程中。这可能会导致该程序员弄不清楚,原来的编程人员究竟想做什么。

一般来说,PLC程序员倾向于用自己熟悉的方法编写代码以便立即解决当前的问题。人们很容易忽略未来必须维护这些代码的“可怜虫”。如果不注意,屏幕前被骂的可能就是我们。以下四个建议可以帮助你避免成为抱怨对象。

01

不要复制和粘贴重复的逻辑

比方说,有两个线圈需要依次激活。一个用来打开第一个梯级,也许是一个定时器,然后是另一个梯级,用于开启下一个。除了将标签名称从“CoilOne”更改为“CoilTwo”之外,梯级内容都是相同的。我们都用使用这样的代码,因为事情总是这样的,但那是只有几个梯级的情况。但如果你有50个线圈,看看会发生什么事情?在你开始敲击Ctrl+V之前,可以先仔细思考一下。

寻找重用代码的机会。回路是个好帮手。AOI、子例程,甚至是基本数组都可以加快开发时间,使代码更简洁,并让未来的维护更容易。如果遇到逻辑变更?您不必粘贴50个修复程序,只需对子例程进行更改,一个小时既可完成。客户想把 50 个线圈改成 100 个?如果做得对,您通常只需将 "Coil_Count "或其他类似的标签从 50 改为 100 即可。

02

切忌使用难以辨认的标签名称,

且不加任何标注

“tmrdelay”–“Timer”和“delay”是多余的。该延时的功能是什么?是用它来点灯,还是等待一段安全时间后再放下重压机?

很显然,“AB_XGI:I.Data[1]”是一个用于某些连接设备的数据结构,但在主例程中如果这样引用,代码就不清晰。“fireRobotMove”,这是指哪个机器人?哪一个动作?我需要灭火器吗?这些标签名称本身并不是无用的,但如果没有情境信息,它们就没有多大意义。

应当使用描述性标签名称。名称应该说明标签的用途。此外,还应注意格式。即使是“tmrDelay”或“tmr_delay”也许会更好。没有人需要去猜测如何分割这个词。

在标签和梯级中添加说明。一个简单的缓冲区例程或别名,可以将“AB_XGI:I.Data[1]”转换为更有用的东西,如“partX-Pos”。“tmrdelay”可以变成“tmrDriverReady”。更好的做法,是在标签或横档上添加描述,解释它的用途。

应当使用合适的拼写。有没有试过搜索所有处理位置数据的标签,看看其中是否有一个名为“poision”的标签?

03

不要忽略程序结构

没有人愿意看到一个名为“Main”的例程有200个梯级,它涵盖了从输入/输出(I/O)到工艺流程的所有内容。

使用例程和用户自定义的数据类型(UDT)(或“结构”,具体取决于制造商)来保持代码组织有序。只需将代码分解为几个名为“Camera”、“InputBuffer”和“Faults”的例程,就会使代码更具可读性。不需要筛选50级不相关的逻辑——如果你需要Camera逻辑,请直接搜索Camera例程。

UDT非常有用。它们允许您对数据进行分组和命名,即使是在数组中也是如此。例如,如果你的视觉系统返回了很多位置数据,你可以创建一个带有“X”、“Y”和“Z”标签的“位置”UDT,来保持代码组织有序。带子标签的“point1”远远优于“point1X”、“point1Y”和“point1Z”。更容易重命名、交叉引用和填充到数组中,并进行迭代。

“通过使用数据结构、一致的命名规则和描述性注释,可以为PLC编可维护且灵活的代码。”

04

不要过于乐观

“这个项目只需要几个月的时间。客户确切地知道他们想要什么。除了我,没有人会看到这个”。或最容易出现的想法:“我会记得为什么这么做。”

▲图:通常,PLC 编程人员都倾向于为自己编写代码以获得即时解决方案,但这可能会带来长期问题。

记住墨菲定律:“任何可能出错的事情都会出错。”这一点实际上是为了强调所有其它事情的必要性。积极的态度很少是坏事,但如果没有任何问题,我们可能就没有工作了。可扩展、可读和可维护的代码是墨菲定律的致命对头。

为迎接未知的未来,我们能做的最好的事情就是注意上述PLC编程该做的事情。通过使用数据结构、一致的命名规则和描述性注释,有助于编写易于维护和灵活的代码。这样,未来每个人都可以更轻松读懂程序。

当您的客户需要添加新的按钮时,他们会向您表示感谢。你的同事会感谢你有一个易于遵循的结构。但根据我的经验,受益最多的人可能是你自己。因为说实话,当我抱怨代码时,发现50%都是我自己编写的代码。

不要只是能运行就好。花点时间把事情做好。现在越聪明地工作,以后的维护就更轻松。

关键概念:

■ PLC程序员倾向于编写代码解决眼前问题,而不是制定长期解决方案,这对那些后来介入工作的人来说可能是个灾难。

■ PLC编程要避免的一些事情,包括复制/粘贴重复的逻辑和使用不带标签的无法识别的标签名称等。

思考一下:

您是否允许或禁止未来的PLC编程人员处理您的代码?

你的PLC受到干扰了?面对干扰,我们要对症下药!

可编程控制器PLC具有编程简单、通用性好、功能强、易于扩展等优点。PLC控制系统的可靠性直接影响到企业的安全生产和经济运行,系统的抗干扰能力是关系到整个系统可靠运行的关键。PLC中采用了高集成度的微电子器件,可靠性高,但由于使用时工业生产现场的工作环境恶劣,如大功率用电设备的起动或停止引起电网电压的波动形成低频干扰和电磁辐射等恶劣电磁环境,大大降低了PLC控制系统的可靠性。为了确保控制系统稳定工作,提高可靠性,必须对系统采取一定的抗干扰方法和措施。

1 影响PLC控制系统稳定的干扰类型

1.1 空间的辐射干扰

空间的辐射电磁场(EMI)主要由电力网络、电气设备、雷电、高频感应加热设备、大型整流设备等产生,通常称为辐射干扰,其分布极为复杂。其影响主要通过两条途径:一是对PLC通讯网络的辐射,由通讯线路的感应引入干扰;二是直接对PLC内部的辐射,由电路感应产生干扰。若此时PLC置于其辐射场内,其信号、数据线和电源线即可充当天线接受辐射干扰。此种干扰与现场设备布置及设备所产生的电磁场的大小,特别是与频率有关。

1.2 传导干扰

(1)来自电源的干扰

在工业现场中,开关操作浪涌、大型电力设备的起停、交直流传动装置引起的谐波、电网短路暂态冲击等均能在电网中形成脉冲干扰。PLC的正常供电电源均由电网供电,因而会直接影响到PLC的正常工作。由于电网覆盖范围广,它将受到所有空间的电磁干扰而产生持续的高频谐波干扰。特别在断开电网中的感性负载时产生的瞬时电压峰值是额定值的几十倍,其脉冲功率足以损坏PLC半导体器件,并且含有大量的谐波可以通过半导体线路中的分布电容、绝缘电阻等侵入逻辑电路,引起误动作。

(2)来自信号传输线上的干扰

除了传输有效的信息外,PLC系统连接的各类信号传输线总会有外部干扰信号的侵入。此干扰主要有2种途径:① 通过变送器供电电源或共用信号仪表的供电电源串人的电网干扰;② 信号线上的外部感应干扰,其中静电放电、脉冲电场及切换电压为主要干扰来源。由信号线引入的干扰会引起I/O信号工作异常和测量精度大大降低,严重时将引起元器件损伤。若系统隔离性能较差,还将导致信号间互相干扰,引起共地系统总线回流,造成逻辑数据变化、误动作甚至死机。

1.3 地电位的分布干扰

PLC控制系统的地线包括系统地、屏蔽地、交流地和保护地等。地电位的分布干扰主要是各个接地点的电位分布不均,不同接地点间存在地电位差,从而引起了地环路电流,该电流可能在地线上产生不等电位分布,影响PLC内逻辑电路和模拟电路的正常工作。由于PLC工作的逻辑电压干扰容限较低,逻辑地电位的分布干扰容易影响PLC的逻辑运算和数据存贮,造成数据混乱、程序跑飞或死机。模拟地电位的分布将导致测量精度下降,引起对信号测控的严重失真和误动作。

1.4 PLC系统内部产生的干扰

产生这种干扰的主要原因是系统内部元器件及电路间的相互电磁辐射。如逻辑电路相互辐射及其对模拟电路的影响;模拟地与逻辑地的相互影响及元器件间的相互不匹配使用等。

2 提高抗干扰能力的硬件措施

硬件抗干扰技术是系统设计时应首选的措施,它能有效抑制干扰源,阻断干扰传输通道。

2.1 供电电源

电源波动造成的电压畸变或毛刺,将对PLC及I/O模块产生不良影响。据统计分析,PLC系统的干扰中有70%是从电源耦合进来的。为了抑制干扰,保持电压稳定,常采用以下几种抗干扰方法:

(1)使用隔离变压器衰减从电源进线的高频干扰信号,输入、输出线应用双绞线以抑制共模干扰。其屏蔽层接地方式不同,对干扰抑制的效果也不一样,一般做法是将初、次级屏蔽层均接地。

(2)用低通滤波器抑制高次谐波。低通滤波器的内部电容上电感组合方式不同,其高次谐波的抑制效果也有一定区别。另外其电源输入、输出线应分隔开,屏蔽层应可靠接地。一般是在电源系统中既使用滤波器又使用隔离变压器,但要注意先将滤波器接人电源再接隔离变压器。

图1 隔离变压器供电系统

2.2 接地

良好的接地是保证PLC可靠工作的重要条件之一,可以避免偶然发生的电压冲击危害。接地线与机器的接地端相联,基本单元必须接地,如果选用扩展单元,其接地点与基本单元接地点接在一起。为了抑制附加在电源及输入、输出端的干扰,应给PLC接以专用地线,接地线与动力设备(如电动机)的接地点应分开,若达不到此要求,则可与其它设备公共接地,严禁与其它设备串联接地,具体接地方式如图2。接地电阻要小于5Ω,接地线要粗,面积要大于2平方毫米,而且接地点最好靠近PLC装置,其间的距离要小于50米,接地线应避开强电回路,若无法避开时,应垂直相交,缩短平行走线的长度。

图2 PLC系统接地方式

2.3 输入/输出部分

2.3.1 输入信号的抗干扰

输入信号的输入线之间的差模干扰可以利用输入模块滤波来减小干扰,而输入线与大地间的共模干扰可通过控制器的接地来抑制。在输入端有感性负载时,为了防止电路信号突变而产生感应电势的影响,可采用硬件的可靠性容错和容差设计技术,对于交流输入信号,可在负载两端并联电容C和电阻R,对于直流输入信号,可并接续流二极管D。一般负载容量在10VA以下时,应选C为0.1μF,R为120 ,当负载容量在10VA以上时,应选C为0.47μF,R为47 。具体电路如图3所示.

图3 输入信号的抗干扰设计

2.3.2 输出电路的抗干扰

对于PLC系统为开关量输出,可有继电器输出、晶体管输出、晶闸管输出三种形式。具体选择要根据负载要求来决定。若负载超过了PLC的输出能力,应外接继电器或接触器,才可正常工作。

PLC输出端子若接有感性负载,输出信号由OFF变为ON或从ON变为OFF时都会有某些电量的突变而可能产生干扰,故应采取相应的保护措施,以保护PLC的输出触点,对于直流负载,通常是在线圈两端并联续流二极管D,二极管应尽可能靠近负载,二极管可为1A的管子。对于交流负载,应在线圈两端并联RC吸收电路,根据负载容量,电容可取0.1-0.47 μF,电阻可取47-120 ,且RC尽可能靠近负载。如图4所示。

图4 PLC 输出触点的保护

2.4 外部配线的抗干扰设计

外部配线之间存在着互感和分布电容,进行信号传送时会产生窜扰。为了防止或减少外部配线的干扰,交流输入、输出信号与直流输入、输出信号应分别使用各自的电缆。集成电路或晶体管设备的输入、输出信号线要使用屏蔽电缆,屏蔽电缆在输入、输出侧要悬空,而要在控制器侧要接地。配线时在30米以下的短距离,直流和交流输入、输出信号线最好不要使用同一电缆,如果要走同一配线管时,输入信号要使用屏蔽电缆。如图5所示。30-300米距离的配线时,直流和交流输出、输入信号线要分别使用各自电缆,并且输入信号线一定要用屏蔽线。对于300米以上长距离配线时,则可用中间继电器转换信号,或使用远程I/O通道。对于控制器的接地线要与电源线或动力线分开,输入、输出信号线要与高电压、大电流的动力线分开配线。

图 5 屏蔽电缆处理法

3 软件抗干扰设计

尽管硬件抗干扰可滤除大部分干扰信号,但因干扰信号产生的原因很复杂。且具有很大的随机性,很难保证系统完全不受干扰。因此往往在硬件抗干扰措施的基础上.采取软件抗干扰技术加以补充,作为硬件措施的辅助手段。软件抗干扰方法没计简单、修改灵活、耗费资源少,在PLC测控系统中同样获得了广泛的应用。对于PLC测控装置,其数据输入、输出、存储等系统属于弱电系统,如果工作环境中存在干扰,就有可能使数据受干扰而破坏,从而造成数据误差、控制状态失灵、程序状态和某些器件的工作状态被改变,严重时会使系统程序破坏。因此,数据抗干扰同样十分重要。

3.1 指令重复执行

指令重复执行就是根据需要使作用相同的指令重复执行多次,一般适用于开关量或数字量输入,输出的抗干扰。在采集某些开关量或数字量时,可重复采集多次,直到连续两次或两次以上的采集结果完全相同时才视为有效。若多次采集后,信号总是变化不定,可停止采集,发出报警信号。在满足实时性要求的前提 ,如果在各次采集数守信号之间插入一段延时,数据的可靠性会更高。如果在系统实时性要求不是很高的情况下,其指令重复周期尽可能长些。

3.2 数字滤波

在某些信号的采集过程中,由于存在随机干扰而可能使被测信号的随机误差加大。针对这种情况,可以采用数字滤波技术。该方法具有可靠性高和稳定性好的特点,广泛应用于工业计算机测控系统中。此外,数字滤波的常用方法还有:程序判断滤波法、中值滤波法、算术平均滤波法、递推平均滤波法等。

4 结语

随着PLC应用范围的逐渐扩大,加之系统恶劣的工作环境,它所要克服的干扰就会越来越多,因此研究PLC系统的抗干扰问题就变得越来越重要。只有对工作环境作全面的分析,确定干扰性质,并采取相应的抗干扰措施,才能保证系统长期稳定地工作。

相关问答

plc编程能取代哪些电器件?

PLC编程(可编程逻辑控制器)通常用于自动化控制系统。它可以取代传统的电气和电子元件,例如继电器、时序器、计数器等。以下是PLC编程可以取代的一些电器件:1...

plc编程中pto指令讲解?

在PLC编程中,PTO(PulseTrainOutput)指令用于生成脉冲输出信号。它可以控制伺服驱动器、步进电机等设备的运动。PTO指令通常包括输出通道、脉冲频率、脉冲宽...

PLC好学吗?

PLC(可编程逻辑控制器)是一种常用于工业自动化领域的控制设备,它具有编程灵活、可靠性高等特点。对于是否容易学习,这个问题的答案可能因个人的学习能力和背...

天车plc控制系统详解?

天车的PLC控制系统是指用可编程逻辑控制器(PLC)来实现天车的自动控制系统。PLC是一种先进的工业控制设备,能够对各种运动控制、传感器信号采集、数据处理等功...

Plc会过时吗?

不会PLC它是为工业设备而生的。PLC是工业设备机器的核心,你没有心脏、核心、大脑,你设备是跑不起来的。所以它怎么会被淘汰?不可能!就相当于你一个人,人工...

plc初始化程序如何编写三种方法?

PLC的初始化程序主要是指PLC在上电启动时运行的程序。下面介绍三种常用的PLC初始化程序编写方法:1.使用自定义函数块可以在PLC编程软件中新建一个自定义函...

松下plc与电脑通讯必须用编程线吗?

不一定需要使用编程线来实现松下PLC与电脑的通讯。虽然编程线是最常见和直接的方式,但还有其他的通讯方式可供选择。通过使用网络通讯协议,如以太网或串行通信...

单片机编程和PLC编程有什么区别?

一、区别:1、PLC是建立在单片机之上的产品,单片机是一种可编程的集成芯片。2、plc就是由单片机加上外围电路做成的,单片机开发式底层开发,程序编写用汇编...

plc的特点有系列化什么等八个?

plc只有6个特点,1使用灵活,通用性强;2可靠性高,抗干扰能力强;3接口简单维护方便4体积5编程简单容易掌握;6设计施工调试周期短plc只有6个特点,1使用灵活,通...

西门子plc自锁怎么编程?

西门子PLC可实现自锁,编程方法如下:可以实现自锁功能。在PLC编程中,通过使用一个内存位来记忆当前的状态,当执行某项操作时需要对该内存位进行标记,如果重复...

 7m女教师狩  安定亚 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部