文献标识码:A
DOI:10.16157/j.issn.0258-7998.2017.02.010
中文引用格式:司萧俊,王宜怀,白聪. 基于K60的GCPLC系统的设计与实现[J].电子技术应用,2017,43(2):47-50.
英文引用格式:Si Xiaojun,Wang Yihuai,Bai Cong. Design and implementation of GCPLC based on K60[J].Application of Electronic Technique,2017,43(2):47-50.
0 引言
传统可编程逻辑控制器(Programmable Logic Controller,PLC)从提出至今已经发展四十多年,形成了全世界每年300亿美元以上的巨大市场,涉及自动控制、机械、装备、医疗电子等诸多应用领域,为一线基层技术人员利用嵌入式计算机生产实践提供了基础技术平台。但也存在CPU选择受限、硬件耦合性差、变量设置简单、梯形图编程功能深度不够、二次编程困难、构件组合灵活性差、开发环境受限、新构件融入难度大等问题。虽然经过多年改进与发展,从不同角度改进了技术,但由于技术架构未变,本质问题无法根本解决。
本文基于多任务操作系统MQX、嵌入式ARM处理器、CAN总线等技术,设计了一套包含图形构件化编程软件及基于恩智浦K60微处理器的图形构件化可编程逻辑控制器(Graphic Component Programmable Logic Controller,GCPLC)硬件的完整系统,并对整个系统进行简要介绍,重点阐述了图形构件化的软件开发环境。
1 GCPLC的体系总体设计与工作原理
GCPLC的系统结构框图如图1所示。
图1中的上半部分是GCPLC的软件开发环境部分,主要完成图形化编程、C语言文件的生成、程序编译等功能,并且负责向硬件部分烧写程序以及实现实时监控。下半部分的GCPLC硬件部分为整个系统的核心,负责执行程序。硬件部分带有多路普通/高速的GPIO接口、高速PWM以及差分输入输出接口、CAN总线接口、485信号接口和232接口,可以实现普通PLC具备的功能。
GCPLC系统将开发环节和运行环节分开操作。在开发阶段,使用图形构件化编程软件编写程序,并同时将嵌入式实时操作系统MQX融入其中;在执行阶段,硬件部分执行程序,有序对各个任务进行调度,并且通过串口与PC通信,从而将硬件部分的信息传递给软件部分,以实现实时监控。
2 GCPLC系统硬件设计
GCPLC硬件的主要应用目标是工业控制,而可靠性和抗干扰能力是衡量工业控制中电气设备性能的关键指标,因此在设计内部电路时,采用了抗干扰技术,其中包括光耦隔离电路、场效应管隔离电路等。选用的硬件是具有极高隔离性能的元件,其中包括高速光耦6N137、场效应管LR120N等。下面着重介绍高速GPIO输入电路和高速PWM差分输出电路。
2.1 高速GPIO输入电路
为了能够满足工业控制中对GPIO输入的实时性和高效率需求,为GPPLC硬件设计了带有电气隔离特性的高速GPIO输入电路,如图2所示。
该电路使用6N137单通道高速光耦合器进行输入输出,并在输出端对输出进行滤波后输出给K60核心板。该电路具有温度、电流和电压的补偿功能,具有高输入输出隔离及抗干扰能力强的特性,电路典型的输入速率为10 MB/s。
2.2 高速PWM差分输出电路
电机驱动是一种很常见的工业控制方式,机械臂的运作、机器人的行走都离不开电机驱动。为了提高PWM的输出效率,设计了具有差分能力的高速PWM电路,如图3所示。
图3是PWM的输出部分,在其他部分利用SGM4717双掷模拟开关芯片,切换PWM的差分和普通输出模式。在正常情况下,该PWM的输出速率可达到100 KB/s以上,可以在工业控制中对电机进行稳定的驱动和控制。
3 GCPLC图形化开发环境设计
在GCPLC系统中,PC可以为用户提供一个良好的软件开发调试环境,因此运行在计算机控制系统上的图形化开发环境需要重点进行开发。GCPLC软件开发环境是为了给GCPLC系统提供一个直观、方便、可拖动、高效的程序开发平台。该平台主要支持图形化的拖动、C语言的生成、程序编译、程序写入、实时监控等功能。
该平台采用PC作为基本编程工具,应用Visual Studio 2012作为开发环境,编程语言舍弃了传统PLC采用的梯形图编程方式,选用了全新的图标拖动及连接的编程语言,使得程序的二次开发变得更加容易,程序结构也变得更加清晰,并且添加了复制、剪切、删除、粘贴、右键菜单等人性化的快捷操作。在烧写程序之前,需要对程序进行编译,由编译器负责检查用户编写的程序,并且将错误反馈给用户。若编译程序无误,则可以将用户程序写入GCPLC硬件板。该开发平台主要由以下模块组成:
(1)图标控件模块。包含了编写程序需要的所有控件,控件分为执行控件、传感器控件、通信控件、流程控件、任务控件5个大类。每个大类下又包含了若干个具体的子控件。
(2)控件连接及属性设置模块。该模块是进行控件拖拉和连线的模块,也是整个开发环境的关键。在编写程序时可以从上述的图标控件模块中选择自己需要的控件,选出控件后可以放置在此模块上。每个控件的顶部和底部都有一块三角形区域,当选定了若干个控件后,将这些控件的三角形区域连线,则可以组成一段程序。
(3)代码更新显示模块。当连接好控件连接模块中的控件后,该模块便会自动生成相应的代码。使用者只需要简单的C语言基础,便可以更好地理解这整段程序实现的功能。
3.1 图标控件模块
为了方便二次开发,在设计开发平台时决定放弃传统PLC的使用的梯形图编程方法,转而设计了开发者门槛更低、更加容易理解的图标形式的控件,一段完整的程序要能够稳定、成功地运行,则需要C语言执行所需要的基本流程,基于程序执行的基本流程,将图标控件模块划分为之前所阐述的5个大类。
执行控件主要包括一些需要执行的操作,例如开关中断、设置延时、设置IO输入/输出等;传感器控件包含GCPLC需要的传感器,例如超声波传感器、AD传感器等;通信控件包含与硬件核心板通信相关的控件,例如I2C、SPI、UART等;流程控件则是与程序执行相关,所以包含IF判断、条件循环、计数循环之类的控件;任务控件则是为了程序的多任务协调执行而设置的,所以每当用户添加一个任务,任务控件中也会生成相应的控件。
为了使开发平台自身更具有拓展性,设计了一套从Access数据库读取控件名称和控件图片等相关属性的算法,当需要增加某种控件时,只需要设置好该控件的相应属性,存入数据库即可。而对于每一个用户程序,其中的任务控件也是各有不同的,因此实现任务控件的动态存取也十分重要。而在设计控件时,为了实现程序的通用性,设计了图标控件Icon类,其关键代码如下:
public LinkIconType IconType;//控件的类型
public string ModuleName;//控件名字
public int IconArrNum;//控件在控件数组中的下标
public int IconDbNum;//控件在数据库中的序号
public PictureBox IconPicBox;//控件的图片
public PictureBox MoveToIconPicBox;//鼠标移动到控件上时显示的图片
public int IconLeftDotNum; //控件图标的左侧的Dotsize个数
public int IconTopDotNum; //控件图标的上侧的Dotsize个数
3.2 控件连接及属性设置模块
控件连接及属性设置模块是进行控件拖拉、连线、程序顺序设计的模块,也是整个开发平台的核心所在,若干个控件通过不同的顺序连接,将会生成截然不同的程序。
在这个界面中,可以通过双击每个控件以编辑该控件的属性。例如,当点击PWM初始化控件时,便会跳出“PWM初始化”属性窗口,如图4所示。
该窗口用于设置GCPLC硬件上的PWM波的输出频率,只需要在文本框中输入想要的频率,点击确定后就可以成功配置PWM的输出频率。使用者在编程时可以很容易掌握。其他的控件也具各自的属性窗口。
当从图标控件模块拖出控件时,每个控件之间都是各自独立的,即使设置好控件的属性,这些控件仍然不具备实际功能,只有通过每个控件顶部和底部的三角形区域将需要的控件连接起来时,这些控件才会真正起作用,在开发环境中新建一个项目文件后会自动生成一个Main图标控件,这个控件是不可编辑的,表示为每个程序的开始。
为了能适应程序较小或者较大的情况,设计了可缩放的编程界面,当需要编写程序量较大的程序时,可以缩小界面以便于查看完整的程序结构。另外,开发环境吸取了PLC编程中梯形图多行编写的优点,设计了多行显示的程序结构。同时,当控件图标过多超过当前显示页面时,设计一套实时刷新的算法,提升了软件执行效率。
当GCPLC系统需要执行多任务程序时,为了使得各个任务之间的划分更加清晰,为主任务程序和每个子任务都开辟了单独的窗口,用户每添加一个任务,都会在主任务窗体中生成一个子任务控件图标,双击任务控件图标后可以编辑相应的任务属性,如任务名称、任务栈大小、任务优先级等。
3.3 代码更新显示模块
在控件连接及属性设置模块将各个图标按照自己预想的顺序连线完成后,如果没有任何可以参照修改的功能,很有可能使得最后烧写的程序无法正常运行,而且仅仅是图标连接也会使得开发者感觉很疑惑。为了解决这些问题,设计了代码显示区域。该区域显示的代码与控件连接模块的连线方式是一一对应的,如图5所示。
4 GCPLC整体运行实验
在本次实验中,对GCPLC系统进行了一次整体上电自检实验测试。首先在GCPLC软件开发环境中编写好上电自检的程序,这个上电自检程序将打开GCPLC硬件系统中的所有GPIO、PWM、差分输入/输出、CAN总线、485、232和数码管功能,并且将模块初始化信息通过串口反馈出来。上电后的串口反馈信息如图6所示。
5 结论
GCPLC系统将嵌入式系统、软件开发系统融合在一起,形成一个开放式的体系结构,相比传统的PLC具有更高的灵活性和可扩展性,从而使得计算机控制系统不再受传统PLC硬件的限制,提高了可靠性和可操作性。本系统具有良好的通信能力,能够完成比较复杂的多任务控制功能,可以满足和实现当前和今后工业自动化领域控制系统开放性和柔性的要求,为工业自动化向更高层次的集成提供了可靠的计数保障,具有广阔的应用前景。
参考文献
[1] 严奎.嵌入式PLC编程软件开发[J].工业控制计算机,2012,25(10):67-68,70.
[2] 张嵩,术守喜,丁广乾.基于ARM的嵌入式PLC的设计[J].自动化与仪器仪表,2008(3):9-10,23.
[3] 廖常初.PLC编程及应用(第4版)[M].北京:机械工业出版社,2014.
[4] TROELSEN A.C#与.NET 4高级程序设计[M].北京:人民邮电出版社,2011.
[5] 王宜怀.嵌入式系统原理与实践:ARM Cortex-M4 Kinetis微控制器[M].北京:电子工业出版社,2012.
[6] 吴玉香,周东霞,林锦赟.嵌入式软PLC系统的研究和实现[J].计算机工程,2009(10).
[7] 谢春杰.嵌入式软PLC的研究与设计[D].南京:南京理工大学,2014.
[8] 郭建勋.嵌入式软PLC开发系统的设计[D].广州:华南理工大学,2010.
[9] PRATUMSUWAN P,PONGAEN W.An embedded PLC development for teaching in mechatronics education[J].Industrial Electronics & Applications,IEEE,2011(6):1477-1481.
[10] 艾春丽,刘荣鹏,张凤登.基于软PLC的多任务并行控制系统的实时性研究[J].计算机应用,2007,27(12):272-274.
作者信息:
司萧俊,王宜怀,白 聪
(苏州大学 计算机科学与技术学院,江苏 苏州215000)