单片机百十块就能搞定的事情为什么要用上千块的PLC来做?假期里看到这个问题,学到了不少知识。
  

  首先,这是一个面粉能不能代替面条,猪肉能不能代替猪肉水饺的伪命题。
  PLC和单片机之间什么关系?

  PLC是集成单片机吗?
  是的
  PLC是否是基于单片机开发出的新设备
  可以这么理解
  两者关系?
  PLC就是用单片机开发的一类产品.
  单片机的使用存在很多局限,首先得学C,学绘制PCB,数电模电,不断的调试,然后呢?你得生产,只生产几套的话需要手工焊接,效率低下。需要生产很多的话需要测试维修设备和人员。从立项到投放市场少则几个月,多则几年。
  我需要用单片机,然后我不想经历几个月甚至几年的开发过程,也不想搞生产维修PCB那些事,我需要快速的做出产品投向市场。
  我这设备只要做一台(如定制的自动化设备)。
  有需求就能赚钱,PLC就这么来了。
  PLC的程序
  在单片机的基础上,简化编程,使用梯形图和简易的命令代替C语言,使用它并不需要学C。PLC语言像python,解释型语言,读取一条命令----解释为一串同功能的C代码执行。
  
  我用仿三菱PLC的代码解释,没错就是无穷无尽的case,每个case解释一条命令,比如当temp5=0x42,就是命令三菱PLC中AND命令的意思,这是三菱PLC编程手册中的解释
  
  执行AND函数,执行后程序指针(类似单片机的PC)自增。
  
  命令的执行方式大多数都是状态机机制,将新的状态写入数组的指定位置,定时读取数据,更新外部电平。
  这是mian循环中的三个函数,分别是刷新输出,刷新输入,解释下一条语言。
  
  刷新输出,就是读取数组中对应输出位置的状态
  
  输入就是将读取的输入状态数据in_x写入数组指定位置。
  
  in_x的更新函数就是输入滤波函数。
  
  以上,就是PLC转换为C的过程。
  梯形图
  梯形图比起英文字母编程,简直爽翻了。直观,简洁。
  
  如梯形图的第10行,当输入端X1=1时,输出Y1=0。
  翻译为PLC指令就是右边的10、11行。PLC编程软件编译为有利于PLC读取,体积更小的文件下载到PLC里面就可以解释一步一步执行了。
  单片机电路与PLC电路的关系。
  PLC存在的意义是拟补单片机的种种不足,如上面说的开发周期长,需要会C,需要懂数电模电,生产等等问题。
  PLC利用梯形图及对C进行封装简化了编程,使可以快速上手。还需要解决单片机最小系统、运行稳定性、带载能力弱、扩展麻烦、及通信麻烦等等等等一系列的问题。
  PLC利用集成开关电源,线性稳压源,复位IC等使接上市电便可可靠工作。
利用光耦隔离输入提高抗干扰能力
利用继电器或者MOS输出提高带载能力
集成通信IC,支持各种通信协议(如RS232/422/485/MODBUS等),使和其他设备互联更方便将不常用模块分离(如ADC,DAC等),按需扩展
严格的质量控制体系,当你选择PLC时,无需担心他的内部电路,按照你的设计接线即可。它将会稳定可靠的执行你的程序。
利用指示灯直观查看输入输出状态。
利用粗大的螺丝固定接线解决单片机过细的管脚不好焊线的问题。
利用厚实的外壳保护内部电路
你要开车去一个地方,你是自己造车呢?还是直接购买一辆。自己造车类似用单片机开发了。
  

  PLC和单片机的应用环境差异

  有些人认为“有些设备动作简单,可以用单片机代替PLC进行自动控制。”
  但是用过单片机的都知道,程序不多改几遍里面绝对有很多bug,哪怕是经过多次修改bug和死机也有可能出现。而PLC按顺序运行,不会出那么多毛病。
  PLC的优势在于稳定性强,你可能觉得iPhone的APP突然闪退一下没啥问题,重新打开一下就行了,实在不行就重启。但工业现场的设备不行,死机一秒有可能是一条人命……
  所以你想用MCU、继电器、光耦做PLC可以,但不经过严格规划设计、调试测试、各种抗扰试验认证的,顶多称为继电器控制器,而不是真正能用于工业现场的PLC。一般的工业现场设备,开发设计完成后,认证测试通过后,就不会再修改,以后的量产都是照着认证测试的那套电路、底层程序来生产,修改任意一行芯片驱动代码都需要重新认证。
  PLC 优势
  一、先从基本说起,稳定性与可靠性,你一块单片机的稳定性和可靠性能比得过IP67类的产品么?懂防护等级么?看过工业恶劣现场么?看过露天野外设备作业么?
  一场大雨过后又湿又潮你敢肯定你那单片机还能行?冬天零下的温度你敢保证它还能运行?我就不信了。
  二、工业里比如说汽车生产线,或者大型的电厂煤炭等领域,动不动上百的I/O有时候上千,你用单片机给我做个看看,而且就PLC这种抗草的货还得弄一套冗余系统,你单片机是能信春哥啊还是自愈能力100%就不死,再不济你也单片机做一套冗余?做得出来我服你,但有一点可以肯定,甲方秒秒钟KO你。
  三、工业领域控制只是一部分,还需要采集、通讯、上位、组态、运动控制与显示等领域,这些东西都需要依靠完整的工业体系与通讯协议去做,比如西门子有成套的东西能够实现这些功能,你单片机是想怎么个做法?动不动各种Modbus、profibus、profinet、OPC等东西是要怎么个一一实现法?
  四、开发周期,各家PLC厂商都在不断完善自己的编程软件,使之能够越来越简单的服务于工程师,而各种程序块也是越来越方便人性化的任意去调用,比如PID模块、运动控制模块等,大大减轻了工程师的开发压力也缩短了开发周期,单片机呢?自己开发的东西难道有信心能够打败西门子工程师的?
  五、外围硬件支持,
  

  这是某组态软件上的东西,单片机如何实现?靠一个人开发?累死了吧,国内动不动在投标的时候都是严重的工期不足了,PLC如何高度集成化模块化的东西很多时候在工期面前都捉襟见肘,单片机开发估计就猴年马月了,更别提去支持HMI、可视化控制系统、市面上上百种的品牌与硬件驱动了,就算你真的做出来了,遇到几十台变频器的时候,你觉得那单片机能扛得住干扰?大型项目的时候,弄了个高压高功率电机,启动的时候整个电网都颤,那单片机各种数值不得像窜天猴儿一样的上窜下跳啊?
  六、距离问题,工业领域有的时候是要跨区域整合与监视的,所用的通讯方式多为以太网(通讯距离长)加中继器,或者直接走民用宽带光纤(有的时候距离要好几公里几十公里),所用的东西到最后很可能是用的微软的IE浏览器(对,你没听错,西门子WINCC WEB),你用单片机给我支持一下试试看?还有就是遇到突发情况下,如果无人值守或者重大事故的时候,需要由PLC的通信模块根据情况发送短信给相关人员(比如领导),单片机能?开发需要多久?
  

  PLC是给电气工程师使用的

  你要明确一点:PLC是给电气工程师用的,单片机是给电子工程师用的。
  电气工程师不是电子工程师,他们的工作不是单单考虑你这个MCU如何驱动继电器来控制机床的。
  甚至有的电气工程师都不会C语言、汇编语言之类的MCU开发语言(你让人家怎么玩?)
  在现场维护系统的是电工,他们根本看不懂单片机的程序,更别提修改和排除故障了,但是PLC可以,它使用的编程语言是梯形图,与电工使用的继电器电路原理图一模一样。
  来源:知乎/刘enming,陈俊直,rhythm magic,中华种子库,马山无影脚
https ://www.zhihu.com/question/35782591
https ://www.zhihu.com/question/36953483