首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 嵌入式系统硬件平台的软件PLC实现方法
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
嵌入式系统硬件平台的软件PLC实现方法
发短消息
加为好友
yuchengze
当前离线
UID
1062083
帖子
5837
精华
0
积分
2921
阅读权限
70
在线时间
222 小时
注册时间
2016-6-30
最后登录
2018-9-9
金牌会员
UID
1062083
性别
男
1
#
打印
字体大小:
t
T
yuchengze
发表于 2016-8-23 12:21
|
只看该作者
嵌入式系统硬件平台的软件PLC实现方法
嵌入式
,
可靠性
,
显示屏
,
软件
,
硬件
1 嵌入式软PLC的总体结构 嵌入式软PLC与嵌入式系统共享一个CPU,PLC和嵌入式系统之间没有多余的导线连接,增加了系统的可靠性,易于实现许多高级功能。PLC中的信息也能通过嵌入式系统的显示屏显示,通过嵌入式系统的编辑键可方便地对PLC进行编辑操作。
1.1 嵌入式软PLC的硬件结构
外部输入的开关量经过光电隔离后连接到FPGA的I/O口,通过FPGA地址译码,FPGA通过数据地址总线与CPU相连。这样CPU就可以通过数据地址总线获得和设置输入量的工作状态,硬件原理框图如图1所示。
1.2 嵌入式软PLC的软件结构
嵌入式软PLC程序包括两类:一类是编辑状态,实现PLC程序的输入和编译功能;另一类是面向生产过程的应用程序。系统软件结构由4部分组成,分别是编辑模块、编译模块、执行模块和监控模块。软件PLC系统模块间的数据流程如图2所示。
2 系统关键组成部分的设计与实现
2.1 梯形图编辑器
Qt/Embedded是著名的Qt库开发商Trolltech推出的面向嵌入式系统的Qt版本。Qt/Embedded具有可移植性强和支持跨平台开发等优点。本系统采用Qt编写界面,梯形图编辑器的界面如图3所示。
2.1.1 梯形图的数据结构设计
梯形图编辑具有方便、逻辑直观的特点,梯形图编辑器借助于梯形图的内部数据结构来实现显示、插入、删除、代码转化等功能。
PLC语言中,各种元素包括单个节点(如常开触点、常闭触点等)和逻辑块(如与逻辑块、或逻辑块),它们都含有相同的操作,如插入、删除、绘图等。可以把组成梯级的各个逻辑块看成组成梯级的各个部分,把组成逻辑块的子逻辑块和单个节点看成是组成逻辑块的各个部分,符合“部分一整体”的层次结构。可以采用面向对象的设计思想,使用composite模式递归地创建树状结构。使用组合结构,能够把相同的操作应用在组合和个别的对象上。大多数情况下,可以忽略对象组合和个别对象之间的差别,简化程序代码,增强了软件的可维护性。采用composite模式的类图如图4所示。
图中:LadderElement是一个抽象类,为组合对象的接口。代表梯形图语言的任何一个图形元素,它既可以代表元件又可以代表逻辑块,在适当的情况下可以实现所有类共同的缺省行为,如绘图和代码转换等;LadderCell为所有元件类(如常开触点、常闭触点、输出、置位、复位)的基类;LadderBlock为所有逻辑块(如与逻辑块类、或逻辑块类等)的基类。
图5为一个梯级和它对应的数据结构,OrBlock为或逻辑块类的对象,AndBloek为与逻辑块类的对象,Rung为梯级类的对象。
此外,为了能够方便地进行绘图和编辑,引入了一个空元件类。它的作用是梯形图中的水平连接线,实现方法是继承LadderCell类,重新实现成员函数Draw()来画一条水平的线段。
2.1.2 编辑功能的设计与实现
定义结构体:
将屏幕分割成一定数目的小的区域,并创建含有相同数目的二维数组。当绘制元件时,将元件、元件所在的逻辑块和元件所在的梯级指针保存到数组中,通过光标在屏幕上的坐标可以获得二维数组的下标,从而可以获得光标所在的元件、逻辑块和梯级在内存中与之相对应的对象。
梯形图的编辑通过改变其在内存中的数据结构来实现,在数据结构被改变后,重新绘图。对梯形图的编辑包括:插入元件、插入分支、插入梯级、删除元件和删除梯级等。篇幅所限只作简要介绍。
删除元件:删除LadderBlock中的一个元件Ladder一Cell(A)后,如果LadderBlock中只剩下一个LadderCell(B)时,LadderCell(B)取代LadderBlock的位置,插入到LadderBlock的父LadderBlock中;如果LadderBlock中只剩下一个LadderBlock(B),则将LadderBlock(B)的所有LadderElement插入到LadderBlock的父LadderBlock中。图5中的梯级删除元件X004后梯形图和其数据结构变为图6所示的情况。
插入分支:通过光标在屏幕上两次选择分支的起始和结束位置,这两个位置必须属于同一个AndBlock(A)。起始和结束位置选择后,将两个位置间的LadderElement作为分支构成一个AndBlock(B)并计算出AndBlock(B)所占的列数n,然后新建一个表示插入分支的AndBlock(C),AndBlock(C)中插入n个空元件。建一个OrBlock并将AndBlock(B)和AndBlock(C)插入到0rBlock中。OrBlock即表示插入分支后的或逻辑块。OrBlock取代两次选中之间的元素在它们的父逻辑块中的位置,然后根据修改后的数据结构画图得到插入分支后的梯形图。图7为在M001和X006插入分支前后梯形图的变化。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议