直播课堂
HOME
直播课堂
正文内容
plc编程实训结论 经验|听前辈聊PLC编程
发布时间 : 2024-10-07
作者 : 小编
访问数量 : 23
扫码分享至微信

经验|听前辈聊PLC编程

一千个人就有一千个学习方法,别人的方法或许不适合自己,但是绝对值得我们借鉴。

来源:知乎

作者:Patrick Zhang

PLC并不难学, PLC编程语言符合IEC 61131标准。其中比较主流的语言是模块化的编程语言,也即IEC 61131-3语言。

由于所有的PLC生产厂家都必须遵循IEC 61131标准,因此深入学习某一款PLC后,其它的PLC大体上是类似的。

1、模块化编程方式

学校PLC课本上讲解时一般都用梯形图。这是很落后的一种编程方式。走上工作岗位后,务必改用模块化编程方式。之所以要摒弃梯形图的编程方法,是因为梯形图有很多局限。

举一个最简单的例子:当三个开关量在梯形图上构成三角形时,这个梯形图是无法执行的,必须用三角-星转换为星形结构才行。

这种问题在模块化编程语言中根本就不会出现。由于梯形图的局限性,纯梯形图程序中也开始配套模块图了。

现在梯形图应该还是主流的PLC编程语言,模块化编程虽然是趋势可学习时从梯形图入门仍然是比较推荐的方法。

下图是我为北京地铁的双路电源自动投退系统编写的程序局部:

此程序用模块化的编程语言IEC 61131-3写成。可见模块化的PLC程序有点类似集成电路的形式,甚至连PID测控都有相应的模块。

我们再来看看同一个程序的通信管理部分:

这里有通信接口初始化程序,有MODBUS-RTU的主站定义程序,有MODBUS-RTU的从站数据采集和交换的循环程序。

可见,模块化的PLC编程语言与梯形图编程语言有天壤之别。由于PLC编程语言都支持软件层面的程序调试,所以仿真没有太大的问题。

2、 怎么学习PLC

除了要有编程环境外,就需要有工程范例。

其实工程范例很容易获得,我们可以找一本描述电动机控制的书籍,把其中控制电动机的方式,当然是用继电器和接触器构成的,把这些控制方式编写成PLC控制方式。

几个范例编完,基本上就明白了。范例编完后,给自己增加难度。

例如设想有四台电机,分别作为中央空调的冷水机组、热水机组、冷却塔电机,再配上末端空调装置的风机,就构成了完整的中央空调系统。

中央空调采用热焓控制方式,并采用PID调节。试着用PLC作为中央控制系统,来编写一个程序。

这个范例完成后,最后再学习PLC的通信技术。

特别关注PLC模块化编程语言中的MODBUS-RTU模块,理解它的内容和要领。

然后编写一个数据采集和转发系统。数据来源为上一个例子中所有电动机的外围开关量、温度量、焓值、电流电压参量、电机运行状态等等。

把这些参量编写成通信协议,也即数据点表,然后发送给计算机上的ACCESS数据库。

利用ACCESS的VBA,编写若干控制界面,然后实现软件上的信息交换和控制。

这些都完成后,就可以毕业了。

从此可以胜任任何PLC的编程工作。

三、PLC的应用十分广泛

在工业环境下,PLC几乎无所不能。

为什么?

第一、 是PLC的高可靠性:因为它的程序是顺序执行的,因此不会进入死循环,几乎不会死机。

PLC不会死机,这一点十分重要。

我们原先采用工控机来作为测控和配电系统的通信管理机。

结果发现,工控机的硬盘在高温下会出现故障、工控机的电源一旦风机停转,电源很快就因为过热而停机(死机),造成通信阻断。

工控机通过各种卡件,来实现数据采集和控制功能,这些卡件故障率很高。

工控机实现硬件冗余很困难,而PLC的CPU硬件冗余十分便利。

在测控工程中将通信管理机换成PLC后,上述这些问题一劳永逸地完美解决。

第二、 是PLC具有很高的EMC(电磁兼容)水平,也即抗干扰能力。

所谓EMC指的是电器元件在运行时,抵御环境电磁干扰的能力,以及自身对环境产生电磁干扰的程度。

IEC和国家标准对电器元件和控制柜都提出了强制性EMC试验要求。

高档PLC一般需要通过2级到3级EMC群脉冲试验,以及接地电流冲击试验。

我测试过,一块多功能电力仪表的电路板,只因为电源滤波电容焊的略微高一些,整块电路板就在接地电流冲击试验中被击毁。

可见EMC测试对于电子仪表来说十分残酷,通过试验十分不易。

一句话:凡单片机能做的事,PLC一定能做 ;反过来,PLC能做的事,单片机不一定能做 ,甚至连边都沾不上。

对比:一般的家用电器要通过一级EMC试验都有点困难。

由于PLC应用是如此之广,因此一位PLC的资深优秀编程者,也一定是一位工业系统的多面手。

他熟悉各种工业条件下的元器件和传感器性能参数,熟悉各种工业条件下的测控原理和自动控制原理,明确机械原理和各种工业工艺过程,明确强电磁环境下的如何选配元器件及开关电器。当然,此人对于PLC的模块也应当十分熟悉。

总之,优秀的PLC编程者,一定同时也是技术上的佼佼者。

学习伊始,不要总想着赚钱,要沉下心来学会真本事。

天下之大,何处无芳草?何愁无处供职?

结论:关键还是在于自己的编程本领和技术水平。

来源:知乎

作者:rhythm magic

实名反对最@patrick zhang老师的答案,题主提出想学习西门子PLC,而且表示想用模拟的方式。

那么从本人经验来看,西门子PLC主要应用点还是在于梯形图、STL以及SCL。

zhang老师用的FBD,尤其是第一张图片上的内容使用梯形图完全可以做到,从Setp7 v4.0到5.5以及TIA均可实现。

而Modbus通讯也完全可以使用模块来做,FBD这种方式我认为很少用到,不信可以去西门子官方BBS上考证。

那么说了这么多,介绍一下三种不同语言的区别。

1、梯形图

对于初学者是入门学习的不二选择,并且西门子自带的库内容非常丰富,基本涵盖了初级所需一切功能。

对于单纯逻辑关系或者多一些功能的处理完全没有问题。但如果是偏电子类的人,可以考虑直接使用西门子一直以来的精华:STL。

2、STL

需要注意的是,step7 v4.0和5.x系列不管用什么语言编程,在PLC内部编译的时候,都是转化为STL的。

STL强大的地方,在于不仅可以随意处理各种逻辑关系,而且在运算以及指针等复杂的功能上,也能完成梯形图无法做到的地方。

比如当梯形图模块的PID算法需要自定义时,或者自编译冒泡法等复杂运算,可谓得STL者得天下。

3、SCL

从几年前开始,西门子最让人诟病的软件全家桶,开始让西门子痛定思痛,着手准备一个大平台,目的是将旗下大部分工控软件整合到一个统一平台中。

TIA(博途)问世了,软件的最大亮点在于,将以前step7 v5.5上收费的SCL语言包整合进来。

这是一种类似C语言的编程语言,在运算上的强大甚至超过STL,编程风格与STL类似,不赘述。

三种语言我认为学习的顺序就是以上介绍的顺序,还有就是题主担心的硬件问题,西门子有自己的模拟软件可以下载,下载学习最好从西门子200开始,软件为step7 v4.0。

还有如果学习PLC那么HMI是你必学的东西,西门子HMI的软件为wincc flexible,软件自带模拟。

适合自己的才是最好的,听取前辈的经验,总结自己的学习方法。

从一份用户调查看PLC编程语言和编程平台的现状和趋势

2019年PLCopen国际组织和美国的automation.com网站联合进行了PLC用户编程偏好的调查。总数为200个响应者绝大部分来自北美和欧洲。调查的结果反映了PLC编程的趋势,以及用户对PLC编程软件供应商的一些想法和意见。这些对我国的自动化领域的发展,特别是以PLC为主要手段开发工业控制系统的工程师们也有一定的参考价值。

一、用户喜欢用哪些编程语言?

图1是用户喜欢用哪些编程语言的调查结果。用得最多的是结构化文本语言,其次是梯形图,再次是功能块图,第四是顺序功能图,其它编程语言位居最后,在其它编程语言中用的最多的是C/C++语言。

从用户这些语言的偏好看,可以得出以下结论:

(1)各种编程语言运用的差距并不大,没有特别多的,即使居第一的结构化文本也不过比居于第五的其它语言多得有限。

(2)明显可见,用户对于面向对象的语言如结构化文本语言和C/C++语言更为青睐。这反映了在智能制造和工业互联网的应用中面向对象的编程语言更能满足用户编程的需求。

(3)许多PLC的编程环境支持用C/C++语言编写功能块。

图1 用户采用PLC编程语言的调查结果

为什么这次调查没有列出指令表(IL)语言呢?

这是因为在2012年更新的IEC 61131-3 V.3编程语言国际标准规范中,虽然还保留了IL语言,但已经有提议将将它从5种编程语言中剔除。随着时间的推移,使用这种类似汇编语言的IL对PLC编程的人越来越少,几乎失去了存在的价值。

这里顺便指出,结构化文本语言ST在国内的普及程度很差。有一个原因是某些在国内应用相当广泛的小型PLC不支持ST编程,影响了它的推广使用。面向对象的编程OOP正在随着智能制造和工业互联网的需求快速地发展,而IEC 61131-3规范的5种编程语言中ST是最容易实现OOP的。因此,这一倾向值得重视。如果我们国家继续沿着按某些自动化公司的PLC产品机型进行工科教育,那么在PLC的开发和应用方向上将永远步少数几个工业发达国家的后尘,很难有翻身的机会。

二、编程的熟练程度

从调查的结果看,熟练掌握梯形图语言和结构化文本语言的比例较高,熟练掌握功能图语言次之,熟练掌握顺序功能图语言的比例较低。而不了解顺序功能图语言的比例最高。

看起来结构化程度很高、而且最适宜表达顺序工艺,工艺与编程对应得最好(也即程序的可读性最好)的顺序功能图语言,在欧美普及程度不算高。这也令人有所不解。

源于法国的这种PLC编程语言获得了一些专业组织青睐,譬如美国OMAC推的PackML就重点选择了SFC作为包装行业的编程语言,符合顺序控制工艺的机械加工和批处理加工的比比皆是,为什么SFC的使用者不多呢?一种可能性是被调查的样本还不够多,或者说被调查的细分行业还不够全。

图2 掌握编程语言的熟练程度

三、对PLC编程软件平台的要求

调查从软件的可靠性、软件的易用性、不同供应商软件平台所编制的应用软件的移植性、I/O配置软件和不同供应商的PLC控制器之间的通信等5个方面征询意见。

结果不出所料,认为软件可靠性好和很好的占大多数,认为软件的易用性中等和好的占大多数,认为应用程序移植性差、较差和中等的占大多数,认为I/O配置软件中等和好的占大多数,认为不同供应商PLC控制器间的通信差和中等的占大多数。

这些调查结果实事求是地反映了当前PLC编程软件和平台的现状,表明不同软件和平台开发出来的应用软件的移植性远远达不到最终用户的要求,这也是单纯基于IEC 61131-3的开发软件和平台难以基本解决的问题,更遑论彻底解决的问题。

看来要解决这一问题需要另辟蹊径,譬如说美国开放流程自动化系列标准OPAS正在开发以IEC 61499为依托的应用程序的移植性,已经取得了实验室的验证,进一步需要进行工业实践的验证。

图3 用户对软件平台的评价

四、流程控制采用PLC呈现增长趋势

这次调查有一个出乎所料的结果就是,PLC在流程控制领域中的应用呈现增长趋势,超过73%的被调查者反映他们采用PLC进行流程控制,而采用DCS在流程控制中的只占27%左右(见图4)。当然,规模巨大的流程控制(如I/O点接近10万点或超过10万点,非DCS系统莫属,在这方面PLC系统还有很长的路要走。

PLC在流程控制中的应用超过DCS,估计原因有几个方面:

一是 PLC的性价比远超DCS,在PLC能满足流程控制的系统要求的时候,选择PLC的投入要显著的少,维护成本也随之下降。

二是 PLC的性能有较大的提升,在一定的成程度上可以替代DCS的功能。

三是 调查样本有可能不够全,参与调查的以流程控制为主的企业不够多。

图4 PLC在流程控制中的应用超过DCS

五、调查中许多用户的想法和留言

编程软件和编程平台的用户在调查中通过额外的留言反映了他们的想法和意见,他们希望PLC的供应商在其编程软件方面能更好地满足用户的需要。下面按有关的题目分门别类的阐述。

应用软件的移植性问题

有用户认为,采用PLCopen的XML规范来解决多个软件供应商的移植性问题,看来不太可能真正付诸实现,或者总是难以适当地正常地运行。 最好是供应商现在能够为编程环境提供开放的脚本语言的接口,在这样的环境下代码转换和自动操作比较容易进行。

关于编程平台的相互交叉兼容性的问题,有用户认为应该引起重视。但另一种意见则认为,一般的PLC供应商和开发商都难以与他们的竞争对手合作,试想将一根以太网网线从罗克韦尔的ControlLogix PLC上接到西门子的S7-400的以太网口,想象得到如果能够真能通信起来,这岂不是滑天下之大稽吗。显然用户对移植性的问题是不抱太大的希望的。不过,希望已经开发的代码能够实现更多的交叉移植性,一直是用户希望解决的事情,但至少到目前为止,这还是没有很好的解决方案。

OPC UA

有用户认为,完全接受OPC UA的支持这种可能性实属异想天开,真正实现的可以说是凤毛麟角。也有用户提出,应该能够定义自己的信息模型和采用其它的标准信息模型(如PackML和其它)。

有一个用户提出很好的建议,PLCopen的IEC 61131-3的OPC UA信息模型应该完全发挥结构化文本语言ST面向对象编程(OOP)的性能。这样用OPC UA通信应该实现起来就简单了,只要一个接口便可以在OPC UA网络中点开一个实例,接着按程序中的一个对象(功能块FB)那样进行处理。这样最终得到一个面向通信的架构和面向对象的编程。不过我们仍然需要状态机进行方法的调用。为什么不这样做呢?

可靠性

有用户认为,现在有些PLC编程平台的集成开发环境IDE往往并不完善,或者有时会出现操作系统蓝屏。显然,可靠性问题出现在现代的集成开发环境内,每个供应商都太忙于将他们的编程环境集成到一个工具中,同时还实现新的喜好性能,而花在提高可靠性方面的投入不够。希望编程平台的开发商要认识到,可靠性和可用性问题常常造成最终用户昂贵的时间损失。

编程特性

关于编程平台的改善,调查中用户提出了改进的意见。如在用ST键入能时自动完成标签命名的全部;能给出有意义的出错信息;文档能易于存取和能搜索;软件开发者应该对客户负责,给予技术支持;在梯形图编程的框架下允许嵌入复杂的编程;能够实现由顺序功能图语言自动自动生成代码;能在编程平台系统中开放像C/Java的编程语言;文本文件的编译采用C语言类型的编程工具的方法,具有版本管理、归档、管理、实用程序库,以及转换为另一种编译程序/另一种版本/另一种语言的能力。还有用户提出,采用现代的编程方法和技术,软件供应商应该有更好的源代码控制(Git)、单元测试等的知识和集成能力。所谓Git是一种在软件开发期间跟踪源代码变化的分布式版本控制系统,专门用来协调编程人员之间的工作,但也可以用来跟踪任意组合的文件的变化。

PLCopen和OPC UA的协同

工业4.0和数字化转型推动着先进的物联网IoT方法,这就是语义信息模型。工业自动化工业已经在支持建立开放的语义模型,这就是为什么PLCopen和OPC基金会建立联合工作组来满足这一需求。其结果包括IEC 61131-3的OPC UA信息模型标准,以及PLCopen和OPC UA合作开发的IEC 61131-3的OPC UA客户端功能块规范和OPC UA服务端功能块规范。现在还只有很少的编程平台能够提供按规范开发的OPC UA的功能块。

六、后记

自从在国内活跃多年的德国KW公司被菲尼克斯收购后,因发展目标调整的关系,从2019年中开始不再发展基于IEC 61131-3的编程平台的客户。于是在国际和国内IEC 61131-3编程平台市场中3S的CodeSys一枝独秀,随之涨价之风盛吹。

国内经过多年的发展,虽然没有真正具有市场竞争力的有关软件产品出现,但毕竟一些DCS和PLC的公司(如浙江中控、、和利时、杭州优稳)都拥有自用的编程平台环境。杭州电子科技大学计算机学院的严义、邬惠峰团队的CASE平台历经十多年的锤炼和提升,在IEC 61131-3的编程平台上增加了PLCopen运动控制规范的功能。与此同时,近年在北京和上海都出现了专门以开发IEC 61131-3的编程平台为目标的公司,规模尽管不大,但由于创业者凭着许多年在这个领域内摸爬滚打的积累的技术,发展的还是有声有色。我们期待在此工业软件方向上会出现商品化产业化的突破。

注:本文由作者为《工控百家谈》独家撰稿,如需转载请与我们联系。作者简介彭瑜,教授级高工,上海工业自动化仪表研究院技术顾问,PLCopen中国组织名誉主席,工信部智能制造标准化体系建设工作组专家,国家智能制造标准化协调推进组专家咨询组专家。

相关问答

PLC控制系统有没有历史趋势显示?

1.答案是有。PLC控制系统,这种系统一般常见的都是由PLC和触摸屏组成。PLC很少自带界面,只提供数据采集,采集的数据实时保存在寄存器里。至于这些数据是以...

2022湖南对口招生考试电子电工类专业考试基本要求及考试大纲...

电子电工类专业综合知识考试基本要求及考试大纲一、考试基本要求(一)基本知识和基本技能的考试要求1.掌握电工技术和电子技术专业的基础知识、基...

台达EH2PLC电池没电了,程序会掉吗?

因本厂的设备多次出现电池失电程序丢失现象。经过实验,EH2也有不同版本,有些版本会掉程序。当载完程序后,停电并拨掉电池,等10分钟,然后通电,显示出错,此...

步科plc怎么和电脑通讯?

明确结论:步科PLC可以通过RS232/RS485/USB等接口与电脑通讯。解释原因:步科PLC内部具有串口或USB接口,可以通过这些接口与计算机进行通讯。通讯方式可以是Mod...

PLC和单片机的区别是什么?

[最佳回答]单片机是一种芯片,在一定场合,配合外围电路,可以用来设计所需要的各种功能,大都用汇编语言、C语言等来开发嵌入式软件,可应用于各种领域。PLC是一...

三菱PLC编程,伺服电机正反转?

三菱PLC编程中,可以使用以下步骤实现伺服电机的正反转:1.首先,需要设置PLC的输入端口和输出端口。例如,可以将PLC的X1口作为控制伺服电机正反转的输入端口...

工业软件开发的难度有多大?

做研发类人员使用工业软件的。目前正在制作低代码嵌入式系统开发平台。是一种“芯片版PLC”集成开发环境。可视梯形图语言编程。平台带有工业互联网软件。目...

零基础该如何学习编程?

作为零基础想要自学编程的人一定要读完我写的这几个观点,希望大家少走弯路。我在前面回答也讲过我刚刚开始基础编程自学的是易语言,可能我在这里学大家学的很l...

中国的数控行业现在到底怎么样了?前景如何?

——以上数据来源于前瞻产业研究院《中国数控机床行业市场需求预测与投资战略规划分析报告》,同时前瞻产业研究院还提供产业大数据、产业规划、产业申报、产业园...

想学习工业机器人编程如何开始?

涉及的学科很多,集成应用(机器人编程和生产工艺)、机器人研发、电子电气、软件、机械、减速机、传感器等等,任何一点突破都可以改变整个行业,所以怎样算学会...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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