陈婵娟 李 龙
(陕西科技大学机电工程学院,陕西西安 710021)
软PLC技术是一种基于IPC或EPC的将PLC的控制功能封装在软件内的控制技术[1],也就是通过软件来实现标准硬件PLC的基本功能[2]。它不但具有传统PLC的PID调节、离散控制和I/O控制功能,而且具有微型计算机的高速数据处理和网络功能。由于国际编程标准IEC61131-3的制定和推广应用,软PLC技术已经成为一项新兴的技术[3]。
软PLC由开发系统和运行系统两部分组成,其中编辑模块是开发系统的重点也是软PLC其它功能实现的前提,根据IEC61131-3的标准,可选用的编程语言有:梯形图(LD),指令表(IL),结构文本(ST),功能模块(FB)和顺序功能图(SFC)[4]。本开发系统主要包括梯形图编辑模块和指令表编辑模块。指令表语言与微机汇编语言中的指令具有相似的特点,可以方便地用于程序的编译,所以除了已开发的梯形图编辑模块,指令表编辑模块的开发也具有很大的实用意义。
本指令表编辑模块是建立在Visual C++的MFC库支持多文档应用程序之上,该编辑模块的核心是指令表编辑器的开发,方法在应用程序里插入一个对话框资源[5],同时构建一个基于对话框的类去实现。编辑器的调用则是通过在菜单项“指令表”里添加“编程”这一子项,然后给该项添加菜单命令消息WM_COMMAND、构建消息处理函数来实现的。同时为了使用户使用更加快捷和方便,本开发系统也在工具栏里加入了调用编程器工具“IL”。指令表编辑模块运行原理框图如图1所示。
本开发系统指令表编辑器是通过在应用程序之上添加一个对话框资源去实现的,该对话框包过4个Static Text控件,3个Edit Box控件,5个Button控件和1个List Control控件,其中3个Edit Box控件对List Control控件实现的预览进行输入3项内容分别为:步数、指令和操作数;5个Button控件分别实现提交、插入、删除、清空和输出;同时也通过添加语句:LVS_EX_GRIDLINES,为列表视图控件添加了网格线的风格等[4]。指令表的编辑器最终编辑界面如图2所示。
根据指令表语言的格式结构,本指令表编辑器通过列表视图控件来实现“步数”、“指令”和“操作数”,其中通过3个Edit Box控件去获取用户编程的信息,当用户输入完该步骤的数据后,通过为“提交”按钮将所要编辑的程序提交到列表视图控件上。同时,编辑器给各个控件均设置一定限制从而更有效地帮助程序员去编辑程序。指令表编辑器的编辑原理如图3所示。
本开发系统是基于VC的多文档应用程序通过静态分割首先将窗口切分为2行1列,最后再将第一行切分成1行4列,取第1行第3列为梯形图编辑区域,第1行第4列为指令表显示区域,采用添加一个列表视图控件去显示指令表程序,其中列表视图控件的显示通过多视图的实现方法实现,即通过采用创建窗格视图Createview()函数去实现[6]。本开发系统实现列表视图控件相关语句如下:
其中CILView为自己插入的基于CListview类的新的类资源,该类的主要函数有重载CILView类的OnInitialUpdate()函数和OnUpdate()函数,实现指令表程序显示区域的初始化和更新[6],而指令表编辑器里程序的导出同样也是通过为“输出”按钮添加的BN_CLICKED消息响应函数void CEDITILDLG::OnOK()来实现的。指令表程序最终输出界面如图4所示。
软PLC相对于传统PLC来说,它更灵活,可以根据用户自己的需求开发出相应的产品,并且价格低廉。指令表编辑模块是软PLC开发系统不可或缺的部分,该模块的开发对于整个开发系统的完整性具有重要意义。其优点是方便快捷地编辑模式,良好的人机对话界面以及各个控件之间的逻辑限制关系能够有效地帮助用户进行程序的编辑。指令表编辑模块的开发对于以后的仿真等模块的开发具有很大的意义,为后续的软PLC开发工作打下了良好的基础。
[1]陈凤兰,孙竹梅.软PLC技术的发展趋势与应用前景[J].电力学报,2006(2):88-90.
[2]黄延延,林跃,于海斌.软PLC技术研究及实现[J].计算机工程,2004,30(1):15-17.
[3]陈婵娟,高帅,王杰.软PLC开发系统梯形图编辑模块的实现[J].组合机床与自动化加工技术,2010(10):5-6.
[4]Open-PLC programming using IECll31-3[OL].http://www.engineeringtalk.com.
[5]郭清宇,王海龙,王国胜,等.Visual C++[M].北京:清华大学出版社,2009.
[6]候俊杰.深入浅出 MFC[M].2版.武汉:华中科技大学出版社,2001.