从发展历史来看,PLC起源于继电器,MCU起源于工业仪表。在一些特定的行业,已经存在很多固定的硬件架构,这也限制了后来设计者的思路。通常环境通常要求两者都能很好的实现功能。至于这家公司为什么选择PLC或者MCU,可能只是因为公司的习惯,以及某种行业传统的影响。至于价格,如果做少量的设备的话很难看出价格优势,而且因为电气控制在总成本中的比重比较小,所以大家也不要过度在意。只要有成功的案例证明PLC和MCU可以完成,那就没有问题,但是如果这个行业不用PLC/MCU,就意味着这个系统的一个缺点可能会在这个行业暴露出来,比如速度,比如安全性。
单片机编程与PLC编程有很大区别,单片机全部程序由用户设计,而PLC的程序包括系统程序(西门子称之为操作系统)和用户程序。操作系统用于组织所有与具体控制任务无关的CPU功能。操作系统的任务包括处理启动过程、刷新输入/输出过程映象、调用用户程序、检测中断事件并调用中断组织块、检测和处理错误、管理内存、处理通信任务等。PLC的很多功能,如扫描工作方式、定时器功能、中断处理等都是由操作系统完成的。画流程图时要考虑这个问题。
PLC开关控制系统的程序用顺序功能图来描述较为简洁,原则上用流程图来描述PLC用户程序也是可以的,但要分清哪些功能是由操作系统完成的,哪些功能是由用户程序实现的。
比如有人问,是否需要用跳转指令来等待某个信号的上升沿,这是单片机编程中的一种思维。PLC的扫描工作方式是在每个扫描周期开始时读取所有的开关输入,根据前后两个扫描周期中同一输入点状态的变化来判断是否有上升沿。因此,没必要用跳转指令来跳回去等待某个输入信号的出现。如果用这种方法来查询信号的状态变化,PLC就没法做别的事了,因为它所有的精力都用来查询了!而且这个查询是在一个扫描周期内进行的,这样会使得扫描周期很长,很容易造成监控定时器(看门狗)超时的错误。
在PLC的用户程序中,只需要一条上升沿检测指令,捕获脉冲信号的上升沿即可。如果需要快速响应,可以采用中断的方式,系统程序在脉冲信号的上升沿时调用用户编写的中断程序。
微控制器的优点和缺点