在工业自动化领域,存在着一种看似普遍的现象:不到 30 人的小型自动化集成公司,工程师们使用着国产低价的 PLC 替代品,却仍觉得成本压力巨大,甚至为了节省开支,不得不退而求其次,选用一些老旧的、功能有限的 PLC 型号。苦逼的工程师们,一手拿着螺丝刀调试设备,一手对着那界面简陋、操作不便的编程软件敲代码,屏幕上那模糊不清的字体,仿佛在诉说着他们工作环境的无奈。
他们似乎硬件和软件知识都懂一些,但水平仅仅停留在能看懂简单的电气原理图,知道传感器是 NPN 还是 PNP 型,同时只会写一些老掉牙的梯形图,代码风格混乱不堪,对于编程软件弹出的一堆警告视而不见,认为只要没有错误,程序就能正常运行。实际上,在这类以低成本设备、开发简单工业自动化项目为主的公司里,应届毕业生在二线城市普遍只能拿到 4-8k 的月薪,而老员工的薪资天花板也并不高。
这类初级工业自动化编程岗位最大的特点就是软硬件知识混杂,难以区分。因为对于他们来说,同时精通硬件电路设计和复杂的软件算法是几乎不可能的。或许评论区会有人说自己在学校参加比赛时是全栈工程师,既能设计硬件电路,又能编写控制程序。拜托,那不过是调用一些现成的库函数,按照比赛要求简单地组合起来,连 PLC 的底层运行机制都没深入了解过,更别提自己设计和验证过硬件模块(哪怕是简单的继电器控制电路),就真的以为自己精通软硬件了?
然而,大公司或者高薪的工业自动化编程岗位,绝对不是这种刻板印象所能涵盖的。最典型的就是工业自动化设备的原厂。在一款新型 PLC 或者工业控制器设计之前,确定采用哪些核心芯片和模块后,如何进行硬件电路的优化设计,如何编写高效的测试用例来验证功能,一般是由专业的硬件设计团队和测试团队来完成。数字电路和模拟电路的设计与调试,这可不是只学了点大学电路知识,没有实际项目经验的人就能胜任的工作。
然后,在产品投产之前,要进行大量的模拟测试和实际环境测试。使用专业的测试平台,如模拟工业现场环境的测试箱等,你总得找到相关的专业人员来搭建和调试这些测试环境吧?最后,终于轮到工业自动化编程的核心环节了。编写设备的底层驱动程序,开发与上位机进行通信的接口程序,以及编写实现各种复杂工业控制逻辑的业务代码,这就是高级工业自动化编程的范畴。
看完这些,是不是感觉工业自动化编程也不过如此,好像没什么了不起的,凭什么能拿高薪呢?错了!首先,这类工业自动化设备往往采用了先进的多核处理器架构,换言之,这款设备上可能同时运行着不同功能的处理器核心,有的负责实时控制,有的负责数据处理和通信,它们通过高速总线连接在一起,有的运行在裸机环境下(没有操作系统,通过简单的命令行界面进行操作),有的运行在实时操作系统(RTOS)下,有的甚至运行着定制化的 Linux 系统。对于那些对设备平台特性不熟悉的工程师,你给他一个 RTOS 下的驱动程序,可能他几天都无法成功移植到裸机环境中。
而且,在技术实现的深度上也有很大的差异。真的别再认为工业自动化编程没有技术含量了,给你一段在某款特定处理器上实现高速数据采集的代码,麻烦你帮忙移植到另一款不同架构的处理器上,要求保证数据的准确性和采集速度,我只能说 90% 以上的普通程序员根本不知道关键点在哪里。当你发现原处理器没有缓存而新处理器有缓存的时候,问题又来了。如何合理地利用缓存来提高数据处理速度,什么时候该刷新缓存,什么时候该使缓存无效,这些都不是简单地看看文档就能掌握的。
说到底,我们工业自动化编程也要处理高性能计算(HPC)的任务好吗,都说工业控制对实时性要求极高,精确到毫秒甚至微秒级别,你工业自动化编程如果写不好底层驱动和控制算法,设备性能太差一样要被客户投诉啊。
很多人都有一个误区,学完了 Python 和 C# 这种功能强大、语法优美的现代编程语言(丰富的标准库和各种语法特性 / 语法糖),再来看梯形图和结构化文本编程,卧槽怎么有这么原始的编程方式,然而花样多并不意味着好用。以 Python 为例,在工业自动化的实时控制场景中使用 Python 的多线程你是想让系统陷入混乱吗,就算能实现多线程,线程之间的同步和数据共享问题也会让整个系统变得难以维护;大量使用 Python 的第三方库会导致程序体积庞大,你不怕设备的存储空间不够吗;而且 Python 在工业现场的运行效率相对较低,对于对实时性要求极高的工业控制任务来说,根本无法满足需求。
最后,工业自动化编程要读的文档真的又难又复杂好吗?最后落脚点确实是编写控制程序没错,但必须要看懂一个章节几十页甚至上百页的全英文技术手册,才知道要配置哪些参数、如何配置,难点根本不在于这种简单的编程操作好吧。
这就是工业自动化设备原厂的工作内容,我并不觉得我在技术水平上比去互联网大厂的同学低,当然薪水也不比他们低,硕士应届纯月薪年包 35+,基本上也是大厂开发的中等水平薪资了。不能拿初级工业自动化编程岗位去和互联网大厂比啊,你怎么不拿西门子、ABB 这些工业巨头去和小的自动化集成公司比呢?西门子、ABB 的工业自动化编程岗位随便 20k+base 的啊,看你有没有本事去了。再比如华为的工业互联网部门、富士康的工业自动化研发团队等等也都有大量的高级工业自动化编程岗位,这些难道都不是高薪吗?
https://www.tjc1688.com/

他们似乎硬件和软件知识都懂一些,但水平仅仅停留在能看懂简单的电气原理图,知道传感器是 NPN 还是 PNP 型,同时只会写一些老掉牙的梯形图,代码风格混乱不堪,对于编程软件弹出的一堆警告视而不见,认为只要没有错误,程序就能正常运行。实际上,在这类以低成本设备、开发简单工业自动化项目为主的公司里,应届毕业生在二线城市普遍只能拿到 4-8k 的月薪,而老员工的薪资天花板也并不高。
这类初级工业自动化编程岗位最大的特点就是软硬件知识混杂,难以区分。因为对于他们来说,同时精通硬件电路设计和复杂的软件算法是几乎不可能的。或许评论区会有人说自己在学校参加比赛时是全栈工程师,既能设计硬件电路,又能编写控制程序。拜托,那不过是调用一些现成的库函数,按照比赛要求简单地组合起来,连 PLC 的底层运行机制都没深入了解过,更别提自己设计和验证过硬件模块(哪怕是简单的继电器控制电路),就真的以为自己精通软硬件了?
然而,大公司或者高薪的工业自动化编程岗位,绝对不是这种刻板印象所能涵盖的。最典型的就是工业自动化设备的原厂。在一款新型 PLC 或者工业控制器设计之前,确定采用哪些核心芯片和模块后,如何进行硬件电路的优化设计,如何编写高效的测试用例来验证功能,一般是由专业的硬件设计团队和测试团队来完成。数字电路和模拟电路的设计与调试,这可不是只学了点大学电路知识,没有实际项目经验的人就能胜任的工作。
然后,在产品投产之前,要进行大量的模拟测试和实际环境测试。使用专业的测试平台,如模拟工业现场环境的测试箱等,你总得找到相关的专业人员来搭建和调试这些测试环境吧?最后,终于轮到工业自动化编程的核心环节了。编写设备的底层驱动程序,开发与上位机进行通信的接口程序,以及编写实现各种复杂工业控制逻辑的业务代码,这就是高级工业自动化编程的范畴。
看完这些,是不是感觉工业自动化编程也不过如此,好像没什么了不起的,凭什么能拿高薪呢?错了!首先,这类工业自动化设备往往采用了先进的多核处理器架构,换言之,这款设备上可能同时运行着不同功能的处理器核心,有的负责实时控制,有的负责数据处理和通信,它们通过高速总线连接在一起,有的运行在裸机环境下(没有操作系统,通过简单的命令行界面进行操作),有的运行在实时操作系统(RTOS)下,有的甚至运行着定制化的 Linux 系统。对于那些对设备平台特性不熟悉的工程师,你给他一个 RTOS 下的驱动程序,可能他几天都无法成功移植到裸机环境中。
而且,在技术实现的深度上也有很大的差异。真的别再认为工业自动化编程没有技术含量了,给你一段在某款特定处理器上实现高速数据采集的代码,麻烦你帮忙移植到另一款不同架构的处理器上,要求保证数据的准确性和采集速度,我只能说 90% 以上的普通程序员根本不知道关键点在哪里。当你发现原处理器没有缓存而新处理器有缓存的时候,问题又来了。如何合理地利用缓存来提高数据处理速度,什么时候该刷新缓存,什么时候该使缓存无效,这些都不是简单地看看文档就能掌握的。
说到底,我们工业自动化编程也要处理高性能计算(HPC)的任务好吗,都说工业控制对实时性要求极高,精确到毫秒甚至微秒级别,你工业自动化编程如果写不好底层驱动和控制算法,设备性能太差一样要被客户投诉啊。
很多人都有一个误区,学完了 Python 和 C# 这种功能强大、语法优美的现代编程语言(丰富的标准库和各种语法特性 / 语法糖),再来看梯形图和结构化文本编程,卧槽怎么有这么原始的编程方式,然而花样多并不意味着好用。以 Python 为例,在工业自动化的实时控制场景中使用 Python 的多线程你是想让系统陷入混乱吗,就算能实现多线程,线程之间的同步和数据共享问题也会让整个系统变得难以维护;大量使用 Python 的第三方库会导致程序体积庞大,你不怕设备的存储空间不够吗;而且 Python 在工业现场的运行效率相对较低,对于对实时性要求极高的工业控制任务来说,根本无法满足需求。
最后,工业自动化编程要读的文档真的又难又复杂好吗?最后落脚点确实是编写控制程序没错,但必须要看懂一个章节几十页甚至上百页的全英文技术手册,才知道要配置哪些参数、如何配置,难点根本不在于这种简单的编程操作好吧。
这就是工业自动化设备原厂的工作内容,我并不觉得我在技术水平上比去互联网大厂的同学低,当然薪水也不比他们低,硕士应届纯月薪年包 35+,基本上也是大厂开发的中等水平薪资了。不能拿初级工业自动化编程岗位去和互联网大厂比啊,你怎么不拿西门子、ABB 这些工业巨头去和小的自动化集成公司比呢?西门子、ABB 的工业自动化编程岗位随便 20k+base 的啊,看你有没有本事去了。再比如华为的工业互联网部门、富士康的工业自动化研发团队等等也都有大量的高级工业自动化编程岗位,这些难道都不是高薪吗?
https://www.tjc1688.com/
