现如今,PLC工程师只会梯形图的时代一去不复返了,伴随着工业自动化越来越“软化”的大趋势,而面向对象的编程方式已经引入了IEC61131-3,甚至像C、C++等高级语言,都需要用到。如此看来,PLC工程师俨然和程序员一个架势了,但实际上这二者差别很大,下面就来比较一下。
PLC工程师VS程序员
编程环境的不同
PLC工程师:编程通常是在专门针对 PLC 硬件的编程软件环境中进行。这些软件由 PLC 制造商提供,例如西门子的 STEP 7、三菱的 GX Works 等。编程环境是封闭的,主要围绕特定品牌和型号的 PLC 设备进行配置和开发。其编程界面设计侧重于工业自动化流程的实现,对于硬件资源(如输入输出点、定时器、计数器等)的操作非常直观,通过简单的图形化编程(如梯形图)或指令表形式来完成编程任务。这种编程环境与工业现场设备紧密相连,编程的目的是直接控制机械设备、生产线等工业设施的运行。
程序员:使用的编程环境多种多样,包括通用的集成开发环境(IDE),如 Visual Studio(用于 C#、C++ 等多种语言开发)、Eclipse(主要用于 Java 开发)等。这些环境是为了开发通用的软件应用程序而设计的,涵盖了从桌面应用到网络应用、移动应用等广泛领域。编程平台支持多种编程语言和框架,程序员可以根据项目需求选择合适的技术栈。编程工作更侧重于数据处理、算法设计、用户界面开发等,与具体的硬件设备(除了开发硬件相关软件的情况)并无直接关联,其运行环境主要是操作系统平台,如 Windows、Linux、macOS 等。
PLC工程师VS程序员
编程语言的不同
PLC工程师:常见的 PLC 编程语言有梯形图(Ladder Diagram)、指令表(Instruction List)、功能块图(Function Block Diagram)、顺序功能图(Sequential Function Chart)等。梯形图编程方式类似电气控制原理图,通过触点、线圈等图形符号表示逻辑关系,非常直观,易于电气工程师理解和掌握。指令表则是一种类似于汇编语言的指令形式,功能块图则是将程序以功能块的形式进行组织。这些 PLC 编程语言的特点是简洁明了地表达工业控制逻辑,每条指令或图形符号都与 PLC 的硬件操作和工业控制过程紧密相关,例如控制电机的启动停止、阀门的开闭等。
程序员:使用的编程语言更为广泛,如高级编程语言中的 C、C++、Java、Python、JavaScript 等。这些语言具有丰富的语法结构和强大的功能,用于开发各种类型的软件。C 和 C++ 语言在系统级编程、游戏开发等领域应用广泛,它们对内存管理有较高的控制权;Java 以其跨平台特性在企业级应用开发中占据重要地位;Python 以简洁易读的语法在数据科学、人工智能等领域备受青睐;JavaScript 则主要用于网页前端开发和后端的 Node.js 应用。这些编程语言注重数据类型、面向对象编程、函数式编程等概念,以实现复杂的软件功能,和 PLC 编程语言所针对的工业控制逻辑有很大不同。
PLC工程师VS程序员
编程目标与应用领域的不同
PLC工程师:聚焦于工业自动化领域,负责系统设计、安装调试和维护,展现对电气自动化和PLC控制的专业技能,主要目标是实现工业自动化生产过程的控制。这包括对生产线上的机械部件(如传送带、机器人手臂、加工机床等)的精确控制,以确保生产流程按照预定的顺序和条件进行。例如,在汽车制造生产线中,PLC 编程用于协调各个工位的操作,如焊接机器人的焊接时间、喷漆设备的启动停止、零部件的组装顺序等。PLC 编程还需要考虑到工业环境中的各种特殊情况,如传感器故障检测、紧急停车程序、设备的安全联锁等,以保障生产的可靠性和安全性。
程序员:程序员侧重于软件开发与代码编写,专注于编写程序和开发应用,编程目标则因应用领域而异。在软件开发领域,可能是开发办公软件(如 Microsoft Word、Excel 等)来满足用户的文档处理和数据管理需求;开发社交网络平台(如 Facebook、微信等)实现用户之间的信息交流和社交互动;开发游戏(如《王者荣耀》《使命召唤》等)为玩家提供娱乐体验;或者开发数据分析软件(如 Tableau、Python 的数据分析库等)帮助企业分析数据。程序员关注的是如何满足用户在不同场景下的功能需求、用户体验、数据存储与处理效率等,应用领域广泛且与工业自动化控制领域交集仅是一小部分。
PLC工程师VS程序员
编程思维方式的不同
PLC工程师:编程思维主要是基于工业控制逻辑和顺序。工程师需要根据生产工艺的要求,将整个生产过程分解为一系列的步骤和条件判断。例如,在饮料灌装生产线中,PLC 编程要考虑瓶子的输送、灌装头的动作、液位检测、瓶盖安装等步骤的先后顺序和触发条件。这种思维方式强调的是对物理设备的实时控制和状态监测,以确保设备稳定、准确地运行,减少停机时间和故障。
程序员:编程思维更加多样化。在开发大型软件系统时,需要考虑软件的架构设计,如采用分层架构、微服务架构等,以保证软件的可扩展性、可维护性和性能。在算法开发方面,要运用数据结构和算法知识来优化程序的运行效率,例如在搜索算法、排序算法中的设计思路。对于面向对象编程,要关注对象之间的关系、封装、继承和多态等特性。程序员的思维更侧重于软件的整体架构、数据处理逻辑和用户交互设计,与工业控制的顺序逻辑思维有明显差异。
PLC工程师VS程序员
工资薪酬的不同
PLC工程师:薪资上下限差异相对较小,起薪比程序员低,上限趋于稳定,且受到多种因素影响。在一些工业发达地区或行业需求旺盛的地区,初入行业的 PLC 工程师薪资可能在5000 元 / 月左右。随着工作经验的增加,特别是能够熟练掌握多种 PLC 品牌编程、能够独立承担复杂工业自动化项目的工程师,薪资可以达到 20000 元 / 月左右。在一些大型的自动化设备制造企业或对工业自动化依赖程度高的行业(如汽车制造、化工等),资深 PLC 工程师的薪资上限也比较可观,而且可能还有项目奖金等额外收入,主要是因为他们的工作直接关系到生产设备的稳定运行和生产效率,但很难有高额的薪资和福利。
程序员:薪资上下限差异相对较大,起薪比PLC工程师高,上限差别较大。对于刚入行的程序员,在一些二三线城市,工资可能在 6000 元 / 月左右,但在一线城市,如北京、上海、深圳等地,可能会达到 10000 元 / 月以上。随着技术水平的提升和经验的积累,程序员的薪资增长潜力较大。例如,从事热门技术领域(如人工智能、大数据等)的资深程序员,月薪超过 20000 元甚至更高都很正常。一些大型互联网公司或金融科技公司为了吸引优秀的程序员人才,会提供高额的薪资和福利。总体而言,程序员的薪资水平在某些高薪领域有较大优势,但行业竞争也更为激烈,平均薪资受地域、技术领域、公司规模和行业等因素影响较大。
最后,其实不难看出,PLC工程师很少懂高级语言编程,而程序员很少懂工业控制编程,这其实是一个真空地带,但是对于智能工厂系统集成、工业物联网(IIoT)、机器人控制系统开发和自动化设备软件开发等领域,就需要二者更好的融合,换句话说,既懂工业控制又懂高级语言编程的工程师钱途将是一片光明。