学PLC,是要有一定的二次电路基础,否则就无从谈起,然后需要从实践中来,边做边学,第三就是要有程序设计的理念和思路,这是大的学习思路,从实际操作上讲,可以分下面这么几步。
1.作为预备性的课程,需要具备二次(控制)电路原理知识,包括继电器控制电路的基本原理,常见的控制回路识图、画图的能力,有实际接线和调试的经验。这方面不是单纯可以靠看书掌握的,但是能找一本比如低压电器控制回路之类的书籍边看边实践。打好基础,掌握继电器、计数器、定时器这些基本概念。因为PLC从最初的设计理念上就是要替代和简化继电器线路的。
2.作为实物投资,个人建议买一个入门的PLC用来练手,这个成本我个人认为是值得付出的,有了实物在理解和练习上都要直观很多。从性价比和上手的难易程度看,西门子的小型PLC在工业市场始终占据着不可替代的地位。在当前的实际下,S7-200 smart或者S7-1200上手,这两者之中更推荐S7-1200,一方面因为和更高级的S7-1500都采用同样的TIA平台,另一方面TIA平台也是西门子软件大平台的发展方向(不过安装TIA要有心理准备,它可以让任意配置的电脑慢的惨不忍睹)。S7-200虽然应用广泛,但毕竟是落在时代背后一大截了。
3.基础篇,流行的教材中以廖常初的最为流行和通顺,正好他也是主要教西门子系列的(不确定是不是有1200系列的教材,我猜应该是有的。至少他的200和300系列的书都不错)。要了解PLC的基本结构,但是不要在这方面太过执着,适可而止的了解,或者说是基本了解、一知半解即可。在以后的应用中有足够时间可以深入了解;深入了解LAD梯形图的画法,对基本概念比如线圈、节点、计数器、定时器、移位、比较、计算、上升沿下降沿等等,务必要熟练掌握;对于其他类型的编程语言,如果有可能,能学习了解一下,比如STL或者FBD,这些并不是华而不实的炫技,而是一方面能加深对PLC的理解,第二能方便快速实现某些功能,第三能够很好的与高级文本语言相辅相成互相促进。
4.学习方法上,如果能找到一个肯用实际项目带你的师傅是的,因为市面上关于PLC的教材基本上都是只教基本使用,完全没有涉及实际项目案例的。如果有机会(这个可能性很小)阅读一些优秀的程序,对自己编程习惯的提高和编程理念的提升都是很有帮助的。如果没有,那么就需要尽可能从教材中有限的案例比如跑马灯、红绿灯、流水线这些实验性质的案例中得到实践,自己动手接接线、写程序和调试,能自力更生把这些功能调试出来,再结合一些传感器,实现模拟量输入输出的功能,基本上基础就算打好了。
5.更高一些的使用技巧包括程序的组织和功能的实现两部分,程序组织方面,要试着理解FB、FC、DB这些块的功能,了解系统OB的含义和用法,尝试着把程序按照块来组织,通过调用减少重复工作,提高复用性,使程序更清晰可读,这是提高编程水平,组织大型程序的基础。功能实现方面,学习和了解一些常用的编程模式很有必要,比如顺序转换的编程结构,PID调节、步进电机控制等一些功能的原理、实现方法以及系统内置的工艺模块的用法,有可能的话尝试自己不用系统块写一个PID调节或者运动控制的功能,这些都是从熟手到高手的分水岭。我认识的很多工程师,都卡在这个关节到了技术瓶颈。这个瓶颈的形成有很多原因,平时项目用不到太多高级功能是一部分原因,但我个人认为主要还在于单纯从PLC角度学习的话,到一定程度上技术天花板的形成主要是看法和理念的限制,既然说到了PLC的学习,那么对这一个分水岭的突破也谈一下理解和看法。
6.越过分水岭。如果说PLC入门一端的基础是继电器组成的硬件回路,那么其通往高手之路的另外一端则与软件工程息息相关。虽然PLC是从继电器回路抽象出来的,但随着抽象完成,他也就成了一个软件的工程,而工程师们所做的PLC编程,本质上也就是软件设计的一种,从根本上,依然离不开软件工程的指导。只是从事PLC程序设计的大部分是工程师,并不具备专业的软件工程训练,因此无法从认知上的到提高。FC、FB、DB这些块要实现的,也是软件工程中非常重要的逻辑和数据分离,模型与实例独立的思想,而被封装起来的工艺块,很多也已经是基于面向对象的思考方式编写出来的。因此,掌握软件工程的基本思路和方法,如果有可能,去学习一门高级语言,而不是纠缠在各种组态软件、触摸屏的软件使用和所谓的脚本编写上。这些软件是面向工程师设计的,但其对于个人认识和水平的提高意义及其有限。因此,掌握一门高级语言才是根本。我个人倾向于Python,因为人生苦短,需要Python这样高效率的语言,但是从上手难易程度和见效快的方面,还是推荐学习C#入手。
7.其他补充的技术和知识。除了软件工程,如果真的要想成为PLC高手,我想再没有比自己设计一款PLC更有挑战性的了。这包括:集成电路的设计和嵌入式系统软件设计,需要电子电路的基础和电路板设计的能力,需要编写一套可运行的嵌入式系统,同时需要一个PC端的编译器,把梯形图转换成PLC端嵌入式处理器可以理解的语言。这里面涉及到的学科和内容,我想都是一个自动化工程师在技术方面最全面的体现,能够做到这一步,我想就可以称得上是PLC专家了。