虚拟PLC编程技能训练系统分析及教学应用
摘要:对当前plc教学中存在的问题进行了分析,在此基础上引入了虚拟现实技术的教学思想,设计了虚拟plc编程技能训练系统,对学生的plc编程技能进行训练,让学生按照实际的控制要求进行仿真运行和调试,以利于更好地理解与掌握plc
关键词:plc;虚拟现实技术;converse3d
中图分类号:tp319文献标识码:a文章编号:1672-78002012012-0109-02
1虚拟plc介绍
虚拟现实技术是人们通过计算机对复杂数据进行可视化、操作以及实时交互的环境。它通过给用户同时提供实时感知交互手段,最大限度地方便用户的操作,给用户一种真实的效果。根据虚拟现实技术所应用的对象不同,虚拟现实技术可以表现为不同的形式,例如将某种概念或构思可视化和可操作化,实现逼真的现场效果等。
虚拟plc就是根据虚拟现实技术对概念的可视化和可操作性特点设计的,是具有传统硬件plc
点的软件控制系统。它综合了计算机技术和plc的开关量控制、模拟量控制、数学运算、数值处理、网络通信等功能,提供强大的指令集、快速而准确的扫描周期、可靠的开放式操作结构。所以,虚拟plc提供了与传统硬件plc同样的功能,同时又提供了基于pc控制系统的各种优点。
考虑到plc的直观控制效果,系统中还用到了三维可视化仿真技术。所谓三维可视化仿真就是用三维建模软件创建各种典型的工业控制对象的三维模型,并导入到具有独立功能的虚拟现实系统中,成为三维虚拟控制对象。用户利用虚拟plc的可视化编程环境编辑控制程序,然后解释、运行,根据虚拟plc的运行结果控制三维虚拟控制对象运动,从而在没有任何外部硬件电路的情况下,使用一台计算机就可以实现plc三维可视化仿真控制。本系统主要是采用3ds max建立控制对象模型,导入converse3d中来控制三维虚拟对象运动。
2软件系统总体框架设计
本文是利用visual c++开发平台,研究和开发的虚拟plc仿真软件。通过对系统的功能进行分析,结合plc梯形图的编译原理,设计了如图1所示的plc编程技能训练系统的逻辑架构。
上述逻辑架构不仅仅揭示了本软件基本的使用逻辑,更在深层次展示了plc模块实现的技术路线。用户首先根据梯形图工具条的元器件画出梯形图以及指令表菜单绘制出指令表,经过编译器进行编译,也可以调用已存在的梯形图文件以及指令表文件,经过加载器加载后再通过编译器进行编译。最后再在交互区通过开关控制按钮控制系统的逻辑输出,调用场景模型文件,显示控制模型的相应运动过程。
3梯形图编辑
plc程序可看作由专用的编程语言(梯形图、语句表等)所编写的源程序,它不能直接被计算机执行而必须翻译成机器语言。通常在计算机上翻译执行用某种高级语言编写的源程序时,通常有两种方式:一是编译执行方式,二是解释执行方式。计算机对plc程序的识别是模拟plc程序编译执行的关键。本系统中plc的执行过程就是根据解释方式实现的。
解释方式就是按照源程序中语句的动态顺序,直接地逐句进行分析解释,并立即执行,而不形成目标程序。
由于梯形图的编辑是一个动态的过程,程序的行数,每行的元素个数都是未知的。为表达这种动态过程,可采用两个结构体数组解决。
struct ladder//梯形图数据结构
{
char m_kind[16]//类型
char m_name[16]//名字
unsigned short m_code[16]//元件代号
unsigned short m_para[16]//参数
char m_branch[16]//是否分支
} lad[1002]
struct instruction//指令表数据结构
{
char order
//0=nop1=ld2=ldi3=and
//4=ani5=or6=ori7=anb
//8=orb9=out10=set11=rst//12=mps13=mrd14=mpp15=end
char name
//0=x1=y2=m3=t4=c
unsigned short code//元件代号
unsigned short para//参数
} instruct[1002]
系统中选取plc编程常用的元器件以及常用的指令来提高虚拟plc编程训练的通用性,例如常用的元器件有:常开触点、常闭触点、线圈等;常用的功能指令有:“ld”读、“and”与、“or”或、“ldi”读非、“ani”与非、“ori”或非、“out”输出、“t”定时、“c”计数、“end”结束等。
系统是在主流plc软件的特点上总结出来的一个通用模板,集成了十种通用的梯形图指令,基本上实现了一个“软plc”的功能特点。  在设计工具条之后,会对每个工具条按钮添加相应的消息函数,再根据工具条的符号特征以及鼠标光标的位置,在消息相应函数中填充相应的数据结构。
梯形图绘制完成后,在进行编译时,会执行编译按钮的消息响应函数,也就是将把lad[1002]数组转换成instruct[1002]数组的过程。
4系统实现
虚拟plc编程技能训练系统主要是通过分割窗口来实现界面的,把主窗口进行了三态分割,又为每个静态窗口建立对应的视图。其中,csingleview主要负责交互区响应,cplcview 建立并维护梯形图、指令表结构数组以及一切与之有关的变量和操作,cconview 负责调用场景和动画操作,这些视图之间是通过主窗口指针来进行通信的。菜单、工具条响应函数全部加载在csingledoc类中。
系统界面如图2所示。
用户在tasks panel窗口中从任务列表下方选择所需要的任务,即选择加载场景模型,三维场景仿真区中就会显示对应的场景模型,同时任务详细列表中也会列出该模型的实验指导说明以及控制要求。
三维场景仿真区的实现得益于编程启蒙是学什么的converse3d开发平台,在工程中插入插件后就可以自由使用converse3d自带的api函数,加载场景和控制动画都很方便。
plc梯形图编辑区可以看到它包括工具栏和编辑窗口两个部分。可将已有的plc代码导入编辑区,也可通过工具栏上的图标新建一个梯形图。选择菜单栏的编译、在线(写入plc)功能完成plc梯形图的编译及下载,通过则启动仿真程序。