自己动手做一个PLC 软PLC

软PLC组件

软件环境

  • PLC程序IDE,方便开发人员编写和调试程序的人机界面,支持多种语言的开发。可选的开源项目:
  • PLCEdit:完全按照IEC61131标准开发,所有五种语言均支持,使用Python开发,故可以做到跨平台。
  • Beremiz:一套完整的开源PLC解决方案,不过放在这里主要是因为它不但使用了上面说的PLCEdit,同时还对其进行了增强,使得其增加了重要的在线调试功能。
  • SoapBox Snap:使用C#+WPF开发的,仅支持梯形图一种语言,不过却已经支持了在线调试功能,含模拟器。
  • 我的解决方案:我使用了Node.js+HTML5开发,仅支持梯形图一种语言,不支持在线调试,使用HTML5方案最大的优势有两点,一是适应未来发展需要,二是类似于家用路由器一样,可以将网页嵌入到设备中,故只要一台能浏览HTML5网页的浏览器便可以配置PLC。

按照工业控制领域常用的IEC61131-3标准来看,工业控制领域程序语言被分为了两大类五种语言,两大类是指图形化编程和代码编程,图形化编程中有Ladder(梯形图),FBD(Function Block Diagram,功能块图)和SFC(Sequential Function Chart,序列功能表),而代码编程有IL(Instruction List,指令集)和ST(Structured Text,结构化文本),具体内容我就不展开了,有需要自行百度百科或维基百科。

  • HMI设计器,Human-machine interface,即人机界面,主要用来显示控制过程中的实时数据,并设置一些按键方便操作员快速控制系统。可选方案:
  • Beremiz:使用SVG技术开发,样式可扩展性强,但是逻辑扩展性弱。
  • 我的解决方案:使用HTML5技术开发,不但有丰富的开源编辑器可供选用,而且用户可以自行嵌入JS逻辑。
  • 编译器,顾名思义,就是将在IDE环境中编写好的程序转换成可以直接运行在单片机上的二进制序列。可选的开源项目:
  • mat:最全面的开源编译器,输入符合其标准的定义文件,并可以支持IL和ST两种文本语言。使用纯C开发,大量使用了宏定义,导致我看代码看得挺吃力的。
  • Avrian-Jump:一个非常初级的梯形图编辑器,并可以将该梯形图转译成ATMega168的二进制程序,使用js开发,直接在网页上操作。
  • 我的解决方案:我的初版解决方案是使用C#语言通过正则表达式识别代码并转成可供执行的Python代码。后来将正则表达式的方式改为Coco/R,即专门的编译器生成器。
  • 其他必要的类库或驱动,通常情况主要就是IO的驱动,以及通信的协议栈,当然还不能缺少基本的供开发人员调用的类库。很多时候都是内嵌在编译器中,或者提供足够的灵活性让用户自行开发。

 

我的解决方案:使用虚拟机运行Linux模拟,以及使用RaspberryPi这类支持运行Linux和Python的环境。

 

你可能感兴趣的:(linux)