15年前,当我用8031单片机控制PPN折弯机时,觉得汇编语言是多么神奇啊!但干了十几年的围绕用户工艺要求定制各类嵌入板的工作后,感觉仿佛陷入了无边的苦海。用户每提出一个新的小要求,我就得改程序,只要用户有新的需求,这种工作就没有尽头。
12年前,我采用数据采集卡,在IPC上用C语言实现了唐山热河82米辊道窑全计算机控制。做了几十条窑炉计算机控制系统后,我发现走入了系统控制的误区。在IPC上运行实时控制算法,风险太大;用C、VC、组态软件编程的辛苦无人认可。尽管硬盘、键盘、接口花去了大量的售后服务费用,用户最终还是抛弃了工控机系统。
而PLC以其高可靠性,十几年来市场不断扩大,在解决好了逻辑控制的同时,加强过程控制的功能,并增加了大量的扩展专用模块,其应用范围向上挤占DCS的市场,向下覆盖了部分嵌入式单片机应用的市场。PLC的现场总线功能、支持人机界面及易学易用的梯形图语言,让工厂电工都易于接受。
如果PLC能满足用户的工艺要求,谁还愿用需要昂贵的一次开发费用的嵌入板或不稳定的计算机系统呢?幸好是假设,PLC也有的短处。由于控制对象千差万别,工艺要求五花八门,即使有大量的扩展模块供选择,也难以满足特定对象的工艺要求。否则谁还会要工控嵌入板?
今天工厂自动化人员能进行二次开发的软件一是组态,二是梯形图语言。这二者如果能解决的问题还用VB、VC去开发,那一定是在做傻事!借助工具软件开发各类应用系统,既提高了开发速度,降低开发风险,又能节约开发费用。但组态软件只能在PC机(或专用PC)上运行,梯形图语言只在PLC可编程逻辑控制器中运行。制约PLC不能满足用户工艺要求的,不是梯形图语言,而是PLC的硬件不够灵活。
嵌入式PLC软件正是在这种困惑中开始开发的,它以PLC梯形图语言为内核,强化过程控制的运算能力,提供开放式扩展结构,增加网络互连功能。它融合嵌入板的特殊要求,发扬PLC梯形图语言优势,为特定对象控制问题的解决提供了一个通用开发平台。
嵌入式PLC软件是面向单片机嵌入板的软件设计而开发的(当然做标准PLC很容易),解决PLC不好解决的问题(如成本、硬件支持、工艺保密等)。在开发初期,试图在Uclinux、Uxwoek环境下开发,但深入进去发现,要实现片级嵌入(8位单片机),运行Uclinux、COS/D的芯片都大了。最终开发选择了汇编(针对51系列单片机)语言,难的是自己,但为保证应用的稳定性、实时性,值得!
嵌入式PLC软件的扩展能力体现在扩展接口及协议的开放性上。世界上各家的PLC生产商都有现场总线接口,如三菱的CC—Link,西门子的Profibus等。但我选择了CANbus,一是中国的现场总线标准是DeviceNet(CANbus是其底层协议),二是CANbus在中国工控市场上已形成事实标准。
嵌入式PLC软件的网络互连能力体现在嵌入式Web服务器上,其深度裁剪TCP/IP协议(仅运行TCP/IP、ICMPARP),在远程端加载专用浏览器后,即可实现远程监控。
嵌入式PLC软件提供的硬实时体现在用户定制中断系统干预内核任务调度机制,实现高速实时控制系统要求(如步进驱动,可控硅移相触发等)上。
当我写完EASY-V1.00嵌入式PLC软件时,它已具备以下功能:
1、支持三菱、台达等多家人机界面
2、支持梯形图编程(86条指令)
3、支持CANbus互连(多机并联运行或扩展单元连接)
4、支持第三方开发扩展单元的接线