I/O控制范文(精选10篇)
I/O控制 第1篇
关键词:运动控制器,输入输出,VC,数控机床
0 引言
数控机床作为机械制造行业非常重要的生产设备在社会的发展中越来越显示其重要地位,数控机床的应用也显的尤为的重要,我国使用最多的是德国SIMENS系统和日本的FANUCA系统,这2种机床的输入输出控制主要采用的是SIMENS-S7-200系列的PLC或三菱系列PLC来实现。国产的数控机床应用比较多是华中数控系统,华中数控系统是基于DOS的进行开发,采用的C语言来完成输入输出的控制,固高科技有限公司生产的GT系列运动控制器利用VC进行输入输出程序的开发,相对于国外和国产系统在数控机床I/O控制方面显现出了简单易懂的优点。
1 输入输出地址的分配
固高科技公司的GT系列运动控制器具有16位的通用数字量输入和16位的输出口。主机可以通过命令的方式对该输入/输出口进行操作。其中,通用输入的0号断口(EXI0)可以作为探针输入信号,并通过相关命令设置捕获探针输入信号,当有探针输入信号时引起运动控制器捕获所有控制轴以及辅助编码器的实际位置。
1.1 输入通道地址
GT系列运动控制器可以通过命令GT_ExInpt(&Data)读取该输入端口的状态(共定义了16位输入口)。输入口数据Data与控制器CN1接口的通用数字量输入端口EXI0-EXI15位定义对应关系见表1:
1.2 输出通道地址
GT系列运动控制器可以通过命令GT_ExOpt(Data)设定该输出口的状态(共定义了16位输出口)。输出口数据Data与控制器CN2接口的通用数字量输出端口EXO0-EXO15的对应关系为:
其中输出1为高电平,0为低电平,输入1为高电平,0为低电平,通过对于的状态显示口可以观察到输入输出高低电平的显示。输入输出高低电平的定义见图1。
2 对输入输出口编程
2.1 对运动控制器进行打开和复位设置
2.2 输入输出口的编程
根据数控机床编程的要求,定义对于的输入输出后,完成各自地址的分配工作,进行程序的设计和开发,部分参考程序如下:
根据数控机床的功能以此类推,可以根据实际情况将输入和输出一一对应起来,完成数控机床输入输出的各个功能。数控机床除了输入和输出的一一对应指示外,还有可能是一个输入,对应几个输出,比如在伺服报警、变频器报警等方面,这是可以模仿一个输入,几个输出指示,如下:
第5个开关按下,既ex_inp&0x20,输入信号转化二进制为100000,表现在硬件上是第五个开关按下,这时输出ExOpt(0XA),既转化为二进制1010,表现在硬件上是第1,第3个指示灯亮。
完成程序如下:
2.3 程序的调试
通过窗口完成程序的测试功能,程序测试窗口见图3:
3 结束语
利用固高科技公司的GT系列运动控制器,采用高级语言VC对数控机床的输入输出口进行控制,完成了数控机床原有的功能,并且程序简单,对于数控机床输入输出的含义、故障的排查等方面起到一定的便捷作用,同时利用VC语言可以对数控机床在输入输出通道的开发方面有一定的借鉴作用。
参考文献
[1]固高公司.GT2-4002-SV四轴运动控制器用户手册,2008.
[2]陈婵娟.数控机床设计[M].化学工业出版社,2008.
[3]深圳固高科技.GT系列运动控制器编程手册[Z].2003.
[4]赵春红,秦现生,唐虹.基于PC的开放式数控系统研究[J].机械科学与技术,2005.
Python 文件I/O 第2篇
Python提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用file对象做大部分的文件操作。
open函数
你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。
语法:
file bject = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
不同模式打开文件的完全列表:
I/O控制 第3篇
会上第一个令人激动的数字当然要数Android设备的激活量——9亿部(这个数字在2011年和2012年分别仅为1亿和4亿),这绝对是一个令其它平台难以企及的数字;而Android软件的累计下载量更是达到惊人的480亿次!这无疑是一个庞大的生态圈,仍然充满了创新的机遇。
为了进一步优化Android开发生态,Google已向开发者开放了更多的Google线上平台服务。而Android应用开发所面临的设备碎片化问题,一直为人所诟病。此次新推出的Android Studio则提供了一种全新的开发环境,图形化的编辑更为简捷,支持实时渲染,可以自适应各种不同的屏幕及设备——仅此一项就会极大地激发开发者的热情。
作为Google应用层面的杀手锏,Google+这次也来了一个大变脸。类似Pinterest的内容布局是有目的地朝移动应用的方向转变。“你的照片暗房现在是数据中心。”Google充分利用云计算的优势,在云端为用户处理图片,并分享到社交网络上。在具体功能方面,新版Google+加大了对标签(Hashtag)的自动管理支持,当用户发布图片时,系统将利用大数据的背景自动匹配相关的标签。内置的Auto Enhance、Auto Awesome、Auto Highlight等滤镜更是将智能化提升到了一个新的高度,帮助用户秀出最美的照片。
此前,有传言称Google将会推出一项名为Game Sync Service的功能,在I/O大会上正式被确认,它便是Google Play Game。该功能将最大化地整合Google Cloud云服务,突破性地跨越Android、iOS和Web平台,并且可以在智能手机和平板上进行游戏体验的无缝对接。虽然看起来只是一款瞄准iOS平台上Game Center的模仿者,但却能帮助开发者真正地打通移动游戏全平台。
同时,Google也终于在付费音乐领域发力了——这个名为Google Play Music All Acess的服务堪称是Spotify的劲敌,它专门优化了推荐页面,而内容则是经过专业筛选,其中囊括了22种音乐流派的上百万首歌曲,所有内容均支持试听,月租为9.99美元。谷歌已经与环球、华纳和索尼等唱片公司完成签约,这项服务将率先对美国用户开放,支持手机、平板、PC等多个渠道登录。虽然与苹果的iTunes还不在一个数量级上,但Google俨然已经拥有了叫板的资本。
Google Maps的演进也一直是业界关注的焦点。从结构上看,它包含了基础地图、街景、用户图像以及本地数据,通过这四层数据的叠加,全方位地展示地图信息。而新版的Google Maps将以本地数据作为挖掘的重点,并且对操控体验以及内容展现方式都进行了重构,甚至细致到了一些店铺的内部照片。“简单、漂亮、精准”是诸多与会者对它的评价,而官方宣布将在今年夏季正式向用户推出。
Google I/O再次印证了开放基因在Google发展中所起到的决定性作用。Google正在努力淡化平台概念,尝试用服务串联起各个平台上的产品,给用户带来一种无所不在的最佳体验。
正如拉里·佩奇所说:“技术的应用速度已越来越快,它应该承担更多繁重的工作,让人们可以做一些生命中最快乐的事。”
I/O控制 第4篇
在当前这种趋势下, 在竞赛训练中要培养学生能够根据比赛任务的要求选择模块, 合理配点。配点并不是把所有的模块上的控制和测试点往单片机I/O口上一连就可以了, 因为单片机只有32个I/O口肯定是不够的, 即使用了扩展模块也不够, 肯定有些单片机I/O口要被几个控制或测试点共用, 如果共用不合理对应模块功能将不能实现或不能稳定实现。对此我按多任务编程方法搭建编写了一个调试系统, 包含了所有的模块, 能实现除交直流电机的正反转控制以外的所有功能。
调试系统因用多任务系统原则编程, 每个功能块在使能控制下顺序工作, 在程序中不使用while语句保证任何模块都不会长时间占用CPU, 这为共用单片机I/O口提供了基本保证。在配点中8255扩展模块、DAC模块和数码管用总线法连接, 其余按时序法连接。下面按模块来谈谈我的I/O口分配。
8255扩展模块按总线连接把A1、A0和CS三个控制端作为地址线连到单片机P2口 (地址总线高8位) , 不要接P0口 (不支持) , RST端接在主机模块的单片机RST端口上。
显示模块中含有5个功能块, 其中点阵模块和1602液晶显示模块基本不会用到就不接了。数码管模块也用总线连接, CS1、CS2作为地址线接P2口, 本系统中一共有6根地址线都用P2口, 其中8255的CS端应独用1个点, 保证8255不用时数据口程高阻态, CS1、CS2与A1、A0可共用两个点, 也可分用4个点, 对功能实现没有影响。12864液晶显示模块的数据口接单片机P0口, CS1、CS2、E、R/W、和RS端接单片机P3.0-P3.4, 其中E端要独用其余可与其它模块的控制或测试端共用同一点不会影响液晶的显示。E端在出现下降沿时如其它几个控制端正巧符合写数据要求, 会在液晶上出现错误的显示, 而这种情况在E不独用1个点时是不可避免的, 所以必须独用1个点。液晶的RST端要悬空, 不然无论用单片机控制还是接5V电源正极都有可能在电路中出现干扰时显示复位, 而此端悬空就可避免干扰影响而不影响液晶使用。LED接8255的输出口, 每个LED都要独用一个点, 就算8个LED都用I/O口也够用的。
指令模块包含8个纽子开关、8个独立按钮和1个44矩阵按钮。对纽子开关来说接在8255输入端口上只要软件编写适当不会受8255复位影响, 所以接在8255上以节约单片机I/O口资源是最好的选择。独立按钮同样可接8255的输入口或单片机的I/O端口, 出于节约单片机I/O口资源的考虑, 也接在8255的输入口上同样独立配点。在设备中纽子开关和独立按钮各8个共要16个点, 如要用的多, 可能8255的输入点不够, 就要用到单片机的I/O口, 并与其它模块分配到的点共享同一I/O口, 理论上只要不影响按键的识别和其它模块的功能实现就可以共享I/O口, 我试下来在我搭建的系统中P2口效果最好。在我的系统中用了1个纽子开关, 5个独立按钮, 其中纽子开关和3个独立按钮接8255输入口, 其余2个独立按钮接P2口, 效果很好。矩阵键盘有8个端口对应4行4列, 因我用的是反转法测矩阵键盘, 每个I/O口既要输入也要输出, 如用8255, 每次输入输出变化都要重写控制字非常麻烦, 所以我直接用单片机I/O口, P1和P3口中有部分点是被独用的, 不能用, P0口理论上可以, 但实际效果不好, 特别对第2、3行识别有影响, 这与共享数据口有关, 应为除8255的数据线有高阻态, 其它数据线挂在P0口的模块, 数据线没有高阻态, 会出现相互影响, 使用下来可以通过软件克服, 只有矩阵键盘不行。所以只剩P2口可用, 用下来配合软件效果很好。
机械手模块有5个动作控制口, 9个传感器信号输出口, 使用24V电源。5个动作控制信号是24V低有效, 用单片机直控效果比较好, 我用的是P1.3至P1.7。机械手的传感器输出信号是24V的要通过传感器模块上的光耦进行电平转换才能被8255或单片机接收。为节约单片机I/O口资源用8255输入口就可以了。9个测试信号中机械手伸、缩、手开闭信号可以不测, 因为这几个动作很快只要给予一定延时就可以了。我的系统中只测3个工位位置信号和3个物料有无信号, 每个信号通过光耦接到8255的输入端, 用了8255的PA0到PA5, 运行很稳定。
步进电机模块有CP、DIR、LL、RL和FLT5个控制测试端, CP是步进脉冲输入端必须独用单片机1个点, 不然会影响行走精度或增大噪声。DIR是电机正反转控制信号输入端, 因步进电机禁止在转动时换向, 所以也必须独用单片机1个点, 保证信号稳定。FLT是空闲控制接5V地即可。
LL、RL是左右限位信号输出端, 输出信号类似与独立按钮的输出信号, 接线原则与独立按钮一样。
交直流电机模块上有交直流电机各1个, 各有1个停、转控制点PRI和1个光电传感器输出口。
PRI通过继电器间接控制电机转、停, 继电器的动作是有延时的, 但时间极短, 只要8255刷新及时可以保证继电器动作稳定, 所以接8255的输出口就可以了。光电传感器是用来电机测速的, 其输出信号与独立按钮一样, 接线也与独立按钮一样。
温度传感器模块有模拟、数字温度传感器各1个, 各有1个输出端和1个加热控制端。加热控制也是通过继电器间接控制的, 与交直流电机的PRI端一样, 所以接线原则也一样。模拟温度传感器的输出是0到5V的模拟信号要通过AD转换才能被单片机接收, 所以是接到AD的模拟信号输入端。模块中所用数字温度传感器采用单总线方式, 对时序要求极高, 传输时不能受到任何干扰, 必须独用单片机1个点。
ADC/DAC模块中DAC部分接线可按总线连接, 这样既能实现功能程序也好写。DAC的数据口千万不要用P0口, 因电路中DAC0809的OE端由CS和RD通过一个与非门控制, 而CS和RD是不需要独立分配单片机I/O口的, 那样只要CS或RD端出现低电平DAC的数据口就被打开, 影响P0口的使用。P1和P3口也不能用会影响其它模块的使用, 只能用P2口, 实际效果也很好, ADC的控制线用P1或P3口即可。
我按照上述方法分配I/O口, 配合软件可实现所有模块的可靠工作, 即时几个模块同时动作也可稳定工作。
参考文献
[1]苏平.单片机原理与接口技术
[2]刘春龙, 张炜.单片机控制装置安装与调试备赛
8086的I/O写周期 第5篇
8086在执行输出指令时进入I/0写周期,在I/O写周期中将指定寄存器的内容输出到指定的I/O端口,图2.1l是I/O写周期的时序图。I/O写周期和存储器写周期基本相同,
区别在于两点,一是M/在I/O写周期内为低电平,表示当前进行的是I/0操作;二是I/0端口的地址只有16位,因此图2.11中T1、T2期间没有出现A19~A16。
I/O控制 第6篇
机械自动化,主要指在机械制造业中应用自动化技术,实现加工对象的连续自动生产,实现优化有效的自动生产过程,加快生产投入物的加工变换和流动速度。
机械自动化技术从20世纪20年代首先在机械制造冷加工大批量生产过程中开始发展应用,尤其是当时的汽车行业和军工行业,大量采用自动化加工。由于当时的技术水平和其他多种因素,当年的自动线大多都是以专用机床为主的组合体,柔性很差或基本没有,只有个别工件的部分工序能实现有限柔性的自动加工,而且这种定义下的制造系统也与当代大多数企业的实际不相容。20世纪90年代,国外汽车行业、电子和电器行业、物流与仓储行业等已大量使用机器人自动化生产线,从而保证了其产品质量和生产效率。典型的如大型车体焊装、整车及发动机装配等机器人自动化系统技术和成套装备,这些机器人自动化生产线的使用大大推动了这些行业的快速发展,提升了制造技术的先进性。日本FANUC公司在1982年建成自动化电机加工车间,由60个柔性制造单元(包括50台工业机器人)和一个立体仓库组成,这是现代意义上的信息化、网络化的金属切削加工自动化生产线。
国内在20世纪90年代后,通过合资和引进等方式大量引进机器人自动化生产线,但是这些自动线目前只是广泛应用于整机装配、大型车体焊装、喷涂等方面。在切削加工生产中,我国现阶段在产品数量较大的同类产品连续流水作业生产线中,自动化设备仍然是半自动机床、自动机床、组合机床及其组成的自动线、回转体零件加工自动线等,这些自动线柔性差、效率低。本文以加工电机端盖为例,着重介绍基于CNC总线连接与I/O信号应答的、机器人+输送线的柔性自动化加工生产线,可广泛应用于盘类、轴类及箱体类零件的自动化加工中,具有普遍意义,有很大的经济实用性。
数控技术特别是数控机床的发展为组建柔性金属切削加工自动化单元生产线提供了可靠保证。以下以笔者公司电机端盖加工生产为例介绍单元生产线的结构及控制原理。
1 单元生产线的结构
电机端盖的加工艺有两道工序,分别为:车ΦA1、切槽―→车端面、车轴承位、切槽。
图1为第一道工序的简图,机床夹持ϕK外圆,车ΦA1、ΦA2、ΦA3及切槽G,时间大约为16秒。
图2为第二道工序的简图,机床夹持ϕA1外圆,车ΦB1、ΦB2、ΦB3、ΦB4、ΦB5及切槽H,时间大约为42秒。
图3为端盖外形图。端盖车削第一道工序的加工时间比第二道工序快一倍多,因此安排第一道工序用一台车床、一个回转式毛坯料盘和一台机器人,第二道工序用两台车床、一个成品料架和一台机器人,两道工序之间用一条输送带相连,输送带上有翻转装置。如图4所示。
数控车床的门采用气缸作动力实现自动开合,气缸上有两个感应式传感器,工作时将感应信号传送给机器人,机器人1(或2)控制器将信号接收、处理后再与机床的CNC控制系统实施信息交换。
回转料架上有一个感应式传感器,工作时将感应信号传送给平面输送带上的CNC控制系统,CNC控制系统根据信号的“与否”来控制料架是否旋转一个工位。
平面输送带前端有一翻转装置,机器人1将车床1加工完的工件放到翻转装置上,翻转装置将工件翻转后放置于输送带上,然后输送带将工件传送到机器人2的抓取范围内供其抓取。翻转装置上有三个感应式传感器,工作时将感应信号传送给平面输送带上的CNC控制系统,CNC控制系统根据信号的“与否”来控制输送带的运转与否。
平面输送带的尾端有两个感应式传感器,用来准确定位工件的位置。
机器人1和机器人2各装有一副两工位手爪,用于抓取和安装工件,每付手爪上均有四个感应式传感器,工作时将感应信号传送给机器人,使机器人能准确、可靠地完成预定动作。
成品料架上有一个感应开关和一个警示灯,当料架放满成品时,警示灯亮,同时蜂鸣器响,提示操作者及时移去成品工件,否则,机器人将停止工作,处于等待状态。
2 自动线控制系统原理及控制方式
系统信号传输及电气结构如图5所示。整条自动线分为六个控制单元,分别是机床1、机床2、机床3、两个机器人单元和一个输送带单元,每完成一个动作或运行完一段程序各相关单元之间必须有相应的I/O信号传输,电气控制的原则是I/O信号环环相连、步步为营。例如车床的门的开合由气缸提供动力,气缸上有两个感应式传感器A、B,分别感应门的开和关。车床门打开到位,传感器A有信号发出给机器人1,机器人1接收到A信号后就执行安装工件的程序,程序执行完后机器人1发I/O信号给机床1,机床1接收到机器人1的I/O信号后,开始执行关机床门的程序,此时如果车床1的门关闭到位,感应器B就有信号出给车床1的CNC控制系统,车床1的CNC控制系统接收到感应器B的信号后就执行工件的加工程序,程序执行完后车床1的CNC控制系统就发I/O信号给机器人1,机器人1接收到车床1的I/O信号后就执行开车床门的程序,依次不断循环下去。其间,如果因为故障等原因车床1的门没有关或没有关到位,则传感器B就没有信号发出,车床1的CNC控制系统因没有接收到感应器B的信号就不执行工件的加工程序,而处于等待状态,三分钟后自动停机(亦可设置为报警)。如果车床1的门没有开或没有开到位,则传感器A就没有信号发出,机器人1因为没有接收到A信号就不执行安装工件的程序而处于等待状态,这样就避免了机器人撞击机床的现象。同样道理,每副两工位机器人手爪的每个工位上均有两个传感器,机器人夹到工件有信号输出,松开工件也有信号输出,任何一个信号缺失机器人都会停止执行下面的程序,也没有I/O信号输出,这样就有效避免了程序错乱或机床、机器人、输送带等的动作不协调。
具体的动作流程及I/O信号如图6所示。
由于机床CNC控制器强大的信息处理能力和巨大的内存,可预先对应不同的工件编制相应的程序,存储于CNC控制器中,CNC巨大的内存可存储数百个加工程序,加工同工件,调用相应的程序即可实现机床的柔性加工。笔者公司建成的这条自动生产线可覆盖5个品种的伺服电机后端盖制造,品种之间的切换方便又迅速,经过一年多来的运行,性能非常稳定,生产效率提高了3倍多,产生了巨大的经济效益。
3 结论
(1)有十分巨大的社会经济效益
这样的自动生产线适用于所有多工序机械加工中的盘类、壳体类、箱体类、轴类等零件的连续自动加工,随着数控机床的普及,自动化加工的市场需求会越来越大,这种加工方式的推广将产生巨大的社会经济效益。
(2)是信息化智能化车间的基础组成单元
信息化智能化车间的结构有三层:控制管理层、单元控制层和设备控制层。控制管理层按照作业计划,分解作业计划和工艺规划,生成命令,下载到单元机,并接受单元机的反馈信息;单元管理层对根据工艺要求组建的生产单元进行控制,每个单元可能包括机床、机器人、输送带等设备;设备控制层对单个设备的控制,包括机床控制器CNC、机器人控制器、输送带控制器、传感器(图像和代码识别器)等。
I/O控制 第7篇
1 集中控制系统
1.1 集中控制系统概念
集中控制系统是利用计算机技术[1],对被控设备进行智能控制和管理的系统,将原来分散控制和管理的设备由系统来集中控制和管理。其优点在于信息和管理集中,便于操作和管理,对整个生产过程情况一目了然,但也存在着由于功能管理过于集中造成的整个系统复杂而运行缓慢的情况,最重要的是对后期功能的升级扩展造成了不便。因此有必要对此系统进行优化升级。
1.2 混凝土搅拌站控制系统现状
目前混凝土搅拌站控制系一般采用PLC+PC的控制方式[2]:通过传感器将各个部件信号进行采集,然后对采集的数据进行运算处理,这中间主要是根据搅拌工艺流程进行逻辑运算,最后将运算处理的结果输出至各执行部件。这一系列的动作都是在PLC中进行,同时PC机只是在同步地进行生产过程的模拟和监控。
混凝土搅拌站模拟监控界面如图一所示:
由图一不难看出,混凝土搅拌站[3]主要由配料站系统、粉料系统、搅拌主楼系统等子系统构成,配料站主要提供石料和沙料,粉料系统主要是提供水泥、矿粉和一些粉状的添加剂,搅拌主楼系统主要用于架放搅拌主机和安装控制室,管道、传送皮带用于对混泥土原料进行传递输送的作用[4]。上图的控制系统采用的是集中控制的模式,控制流程示意图如图二所示:
可以得出该系统的优点在于集中式的系统结构更加简单、系统的可操作性强[5];其缺点在于输入输出的I/O差异性较大且分布散乱,不易于后期的维护管理和功能的升级扩展,同时整个控制运算的过程都在PLC中进行,因此加大了PLC系统的运算负荷量,降低了控制系统的稳定性。
目前国内的一些主要混凝土搅拌站制造商如三一重工、安徽星马等采用的都是集中控制系统方式。
2 基于现场总线[6]控制及分布式I/O的搅拌站控制系统
2.1 现场总线控制概念
现场总线控制是工业设备自动化控制的一种计算机局域网络。它依靠具有检测、控制、通信能力的微处理芯片,数字化仪表现场实现彻底分散控制,并以这些现场分散的测量,控制设备单个点作为网络节点,将这些点以总线形式连接起来形成一个总线控制系统。因此现场总线控制系统由数据测量系统、控制系统、管理系统三部分组成,而通信部分的软、硬件是它的特色部分。
2.1.1 现场总线控制系统
它的软件是系统的重要组成部分,控制系统的软件有组态软件、维护软件、仿真软件、设备软件和监控软件。首先选择开发组态软件、控制操作人机接口软件。通过组态软件,完成功能模块之间的连接,选择功能模块参数,进行网络组态,在网络运行过程中对系统实时采集数据,进行数据处理、计算,优化控制及逻辑控制报警、监视、显示、报表等功能。
2.1.2 现场总线测量系统
其特点为多变量高性能的测量,使测量仪表具有计算能力等更多功能,由于采集数字信号,具有高分辨率准确性高、抗干扰、抗畸变能力强,同时还有仪表设备的状态信息,可以对处理过程进行调整。
2.1.3 设备管理系统
提供设备自身及过程的诊断信息、管理信息、设备运行状态信息、厂商提供的设备制造信息。现场总线控制属于最底层的网络系统,是网络集成式全分布控制系统,它将原来集散型的DCS系统现场控制机的功能全部分散到各个网络的节点,为此可以将原来封闭的、专用的系统变成开放的、标准的系统。使得不同的制造商的产品可以互联,是DCS系统的更新换代,大大简化系统结构,降低成本,更好满足了实时要求,提高了系统运行的可靠性。
2.2 分布式I/O的概念
分布式I/O系统的中央控制功能能将现场分散运行的具有输入、输出的I/O系统,通过总线技术来进行高速传输数据,并解决电磁兼容问题等一系列布线问题的技术。分布式I/O技术可以将各种差异性较大的I/O资源进行综合利用,同时还可以进行各种功能的升级扩展,还可以将系统的负载由单个节点移到多个节点,降低了因为单个环节失效造成的整个系统崩溃的风险。混凝土搅拌站的控制输入输出对象较多且使用条件较分散,适合利用分布式I/O技术。
2.3 基础现场总线及分布式I/O控制的搅拌站系统
2.3.1 基础现场总线控制的搅拌站控制系统结构示意(图如图三所示)
1.骨料储料仓2.骨料计量3.水平皮带输送机4.斜皮带输送机5.气动系统6.外加剂箱7.水池8.搅拌系统9.卸料斗10.控制室11.主楼框架12.骨料待料斗13.除尘系统14.粉料计量15.外加剂计量16.水计量17.螺旋输送机18.粉料罐
图三是搅拌站各部件名称及控制单元的分布图,搅拌站组成单元比较多,其相关的电控系统分布比较分散。如按电气控制对象不同,可将上述系统分为配料站电气系统、料车电气系统、粉罐电气系统、主楼电气系统、控制室电气系统等五大电气控制系统。
2.3.2 基础现场总线及分布式I/O控制的搅拌站控制系统功能
根据以上的电气控制对象的分类,基于现场总线和分布式I/0控制技术,设计出的新型搅拌站控制系统功能框图如图四所示:
基于以上的混凝土搅拌站系统的结构,可将混凝土搅拌站控制系统分为配料站I/O单元、粉罐I/O单元、主楼I/O单元和控制室控制单元,对有提升系统的工程站还有料车I/O单元:
(1)主控制系统:负责采集控制室内如急停等信号、负责组各个单元采集的信号进行逻辑计算处理并给出诊断处理信息;同时,主系统还需考虑网络管理扩展如配方管理、生产数据管理等。对水泵或添加泵等未归入各I/O单元的控制对象可统一在该单元处理。
(2)配料站I/O单元:负责采集各砂石仓称料、卸料汽缸检测,根据逻辑输出汽缸动作信号和振动电机振动信号;同时,还可采集平皮带检修信号,输出平皮带动作信号。各称重模块称量信号可单独成柜或集成在该单元。特别地,称重单元亦采用如图一蓝色所示;同时采用集中如CAN总线传输的方式。
(3)粉罐I/O单元:负责采集粉罐上下料位检测信号,输出各计量螺旋电机动作信号和对应的破拱信号。一般情况下,粉罐料满检测可在控制盒面板操作;亦可采集进PLC模块进行处理输出,同时输出粉罐满报警信号。对粉罐收尘器的处理亦集中在该单元。
(4)主楼I/O单元:负责采集待料斗、粉秤、水秤、添加剂秤关门信号,根据逻辑组织关系输出其对应汽缸或蝶阀动作信号。一般情况下,还输出汽缸或蝶阀动作时其他辅助动作,可能包括振动或破拱,可能包括水泵电机;同时,根据控制结构,还可输出除尘汽缸动作。对主机的各检测信号如主机门关、开门位置、急停等,主机包括润滑电机和开门油缸或汽缸动作信号亦可由主楼I/O单元负责进行或单独成为其中子单元。
(5)料车I/O单元:负责采集轨道各检测信号如接料位、目的位、安全位置等,根据控制要求如变频器控制或双速电机等控制料车运行。一般地,如果采用变频控制还应对变频器状态进行输入,以实现完善的诊断功能。
2.4 小结
随着通讯和控制技术的发展,分布式I/O控制由于其结构清晰、线路简化、易于调试和维护得到广泛运行,将此技术运用于控制系统的案例已经非常成熟。同时分布式控制技术还有利于为系统的网络化发展,利于为产品升级、改造等。典型的搅拌站制造商如利勃海尔、南方路机在分布式控制系统运用方面已多年。
3 结束语
综上所述,运用现场总线控制的搅拌站控制系统具有以下特点:
(1)功能的模块化便于搅拌站各单元以及整体配置的升级和模块的扩展;
(2)模块化的设计便于调试、维护,降低了技术风险,缩短了调试、维护周期,为客户创造了更多价值;
(3)总线和网络化的控制方式易于人机交互和智能诊断功能的实现,使得搅拌站的控制系统更加智能化;
(4)运用现场总线控制使得搅拌站控制系统更加安全、环保。
因此,本文所述针对搅拌站的现场总线控制系统具有很强的实用性和推广型,在使用的过程中能够实现各方面的利益得到最大化。随着人们的工作生活对物质、环境要求的不断提高,安全、环保、智能、经济已成为目前混凝土搅拌站的发展趋势。
摘要:利用现场总线及分布式I/O控制技术设计一种新型混凝土搅拌站。通过总线和分布式I/O技术,使得混凝土搅拌站的控制系统更利于功能的升级、扩展,同时也便于工作人员进行排故与检修,大大增强了系统运行的稳定性。
关键词:混凝土搅拌站,现场总线,分布式I/O
参考文献
[1]何德舟.混凝土搅拌站计算机控制系统[J].计量技术,2004,(04).
[2]陈斌,林小峰,许光泞,姚永林.PLC在商品混凝土搅拌站自动控制系统中的应用[J].工矿自动化,2004,(04).
[3]潘红兵,刘先坤,纪圣谋,徐健健.混凝土搅拌站自动控制系统的设计与实现[J].电子技术应用,2006,(01).
[4]姜祥林.小型混凝土搅拌站技术改造[J].广州建筑,2001,(06).
[5]宋德朝,高文栋.商品混凝土搅拌站计算机集成系统[J].建筑机械化,2001,(01).
产品调查:I/O模块 第8篇
需求量最大的I/O模块具有数字化和模拟功能。通过设计方案,I/O可插入基座或机架、使更多的I/O点进行对齐,并能同时将数字化和模拟功能组合使用。AutomationDirect公司的PLC、I/O和电脑控制产品经理Jeff Payne认为,在外壳内使用、诊断功能、光隔离功能和易于扩展等功能也颇受欢迎。在预算内将用于特定用途的离散、模拟和高速I/O功能相结合是一个关键的挑战。Payne说,供应商应提供为32个和64个点的高密度I/O,通过更严格的设计为用户节省成本。
例如,Ingersoll控制工程经理Gary Munger称,Ingersoll CM系统公司的新一代深圆角滚压机的成本比以前的I/O模块减少了60%。节省成本的同时,还减少了部件和使用了更经济BallufflO-Link集线器。Munger认为通过减少部件也能降低发生故障的可能性。
被调查者表示,可编程逻辑控制器可用于大多数I/O连接器。其用量比处于第二位的分布式控制系统(DCS)或流程自动化系统(PAS)多出2倍。供应商的应对措施是扩展连接器的功能。Omega工程公司称,该公司的通用远程I/O模块可与所有PLC相连接,并采用菊链式连接将31个I/O模块连接在每个RS-485上。它们可安装于DIN导轨上,具有光隔离功能,其尺寸为0.69-in.3.94-in.4.72-in.(17.5100120mm),适用于小型面板。
你是否用智能嵌入式微处理器I/O模块(装有内嵌式微处理器)替代其它控制器(例如PLC、PAC和循环控制器)?
你需要将I/O系统用于支持哪些网络?(请查看以下所有功能)
被调查者表示,工业以太网和以太网的连接器用于半数以上的网络协议其次是现场总线、设备级和传感器级别的网络,以及无线网络。据称,无线设计还能解决其他问题。
西门子称,西门子工业公司生产的Simatic ET 200pro IWLAN通过任何I/O站和模块进行无线连接,大大减少了通讯电缆与安装费用。坚固耐用的IP67级设计可加载在机器设备上,且无须采用电器外壳。
近三分之一(30%)的被调查者表示,他们使用有嵌入式智能的I/O模块取代其它控制器。伊顿逻辑控制器(ELC)采用的新型I/O,包含了可采用分散式I/O的智能I/O适配器模块,且只需要有限的本地逻辑控制输出。ELC的分散式I/O可通过以太网/IP和Modbus TCP以太网协议,以及Modbus RS-485和DeviceNet进行通信。
关于开发读写设备的计划
被调查者的读写设备包括供应商、价格、质量、生命周期、网络、电源和接地,以及测试等内容。一位被调查者称,应使所有人尽早参与选用过程,并使该过程简化。另外还要为备用I/O和插槽预留空间。另一位被调查者称,应为接线和标记线制定标准,并观察其转换率,从而确保其符合控制要求。通过寻觅分散功能,使I/O靠近使用点,并尽量减少安装和调试时间。
研究设备的用途、位置、客户要求和未来的扩展计划。为设备定径时,确定如何在图纸中查看已完成的控制项目、识别物理点、区分点类型和使用的信号,与现有物理点进行比较,并增设必要的控制硬件将其余点连接起来。
一位被调查者说,在联网和诊断方面“在I/O和连接的设备之间进行寻址是最大的问题。看来,几乎所有供应商都有自己的寻址方案。所以要仔细使用并要考虑到设备间的兼容性和通信的容易程度。”
远程I/O在简化配置、更新速度(现在可实时更新)和成本效益方面取得了长足的进步。另一位被调查者认为,可利用新协议的优势从事研究,尤其是基于以太网的研究。Wago-I/O-System的产品经理Charlie Norz认为,与I/O模块有关的迫切问题主要是关于协议的兼容性、为多种类型I/O的设备节点的功能,以及I/O模块的尺寸等。有些产品在用于通信时,采用的协议数超过16个,并可节省机内的储存空间。
关于生命周期问题,被调查者表示要为今后预留扩展空间,而且要检查现有机型可用于生产和提供支持的时间。另外,还要确保在为应用工程提供支持和编制文件时采用当地语言。种类多样的I/O具有优先权。用于国际标准化编程的IEC-61131-3的优先权更高。ABB公司称其生产的AC500-eCo I/O模块易于维护,具有多种扩展模块和采用IEC 61131-3标准的控制器。
用线性电源代替开关电源,可避免电源和接地时产生的噪音问题。I/O应能进行热插拔,连接后无需下载文件,通道之间相互隔离,与G3具有兼容性,而且功耗较少。Dataforth公司的全国销售经理Bill McGovern说,“通过隔离可消除接地回路,在电压过高时提供防护措施。而噪音过滤,可消除I/O信号中不必要的频率。”
串行通信与重叠I/O 第9篇
串行通信在通信领域被广泛应用,标准的RS232接口已成为计算机、计算机外设、交换机和许多通信设备的标准接口。微机与微机、微机与外设、微机与程控交换机等都可以通过RS232接口进行方便的连接,以实现控制外设和传输数据等目的。
在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。笔者在实际工作中积累了一些经验,现结合硬件、软件,及需要注意的要点作一番探讨。希望对各位需要编写串口通信程序的朋友有一些帮助。
2 RS232串口标准
EIA-RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准。该标准规定:直接连接的最大物理距离为15m,通信速率低于20kbps。
由于RS232并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。表1介绍了其中两种连接器(DB-25, DB-9)。
RS232标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,但常用的只有9根。
目前较为常用9针串口和25针串口,当通信距离较近时,可以用电缆线直接连接,若距离较远,须附加Modem。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连。表2列举了RS232串口通信接线方法。
EIA-RS-232对电气特性、逻辑电平和各种信号线功能都作了规定。
在TxD和RxD上:
(1) 逻辑1 (MARK) =-3V~-15V。
(2) 逻辑0 (SPACE) =+3V~+15V。
在RTS、CTS、DSR、DTR和DCD等控制线上:
(1) 信号有效: (接通, ON状态, 正电压) =+3V~+15V。
(2) 信号无效: (断开, OFF状态, 负电压) =-3V~-15V。
3 Win32串口应用程序
3.1 打开串口
Win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。该函数的声明为:
如果调用成功,那么该函数返回文件的句柄,如果调用失败,则函数返回INVALID_HANDLE_VALUE。
3.2 串口配置和串口属性
在打开通信设备句柄后,常常需要对串口进行一些初始化工作。这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、每个字符的数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。
调用GetCommState函数可以获得串口的配置,该函数把当前配置填充到一个DCB结构中。一般在用CreateFile打开串口后,可以调用GetCommState函数来获取串口的初始配置。要修改串口的配置,应该先修改DCB结构,然后再调用SetCommState函数用指定的DCB结构来设置串口。
除了在DCB中的设置外,程序一般还需要设置I/O缓冲区的大小和超时。Windows用I/O缓冲区来暂存串口输入和输出的数据,如果通信的速率较高,则应该设置较大的缓冲区。调用SetupComm函数可以设置串口的输入和输出缓冲区的大小。
3.3 串口读写
在用ReadFile和WriteFile读写串口时,既可以同步执行,也可以重叠(异步)执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在重叠执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,这样线程就可以干别的事情。例如,线程可以在不同的句柄上同时执行I/O操作,甚至可以在同一句柄上同时进行读写操作。“重叠”一词的含义就在于此。
ReadFile函数只要在串口输入缓冲区中读入指定数量的字符,就算完成操作。而WriteFile函数不但要把指定数量的字符拷入到输出缓冲中,而且要等这些字符从串口送出去后才算完成操作。
ReadFile和WriteFile函数是否为执行重叠操作是由CreateFile函数决定的。如果在调用CreateFile创建句柄时指定了FILE_FLAG_OVERLAPPED标志,那么调用ReadFile和WriteFile对该句柄进行的读写操作就是重叠的,如果未指定重叠标志,则读写操作是同步的。
函数ReadFile和WriteFile的参数和返回值很相似。这里仅列出ReadFile函数的声明:
需要注意的是如果该函数因为超时而返回,那么返回值是TRUE。参数lpOverlapped在重叠操作时应该指向一个OVERLAPPED结构,如果该参数为NULL,那么函数将进行同步操作,而不管句柄是否是由FILE_FLAG_OVERLAPPED标志建立的。
当ReadFile和WriteFile返回FALSE时,不一定就是操作失败,线程应该调用GetLastError函数分析返回的结果。例如,在重叠操作时如果操作还未完成函数就返回,那么函数就返回FALSE,而且GetLastError函数返回ERROR_IO_PENDING。
在使用重叠I/O时,线程需要创建OVERLAPPED结构以供读写函数使用。OVERLAPPED结构最重要的成员是hEvent, hEvent是一个事件对象句柄,线程应该用CreateEvent函数为hEvent成员创建一个手工重置事件,hEvent成员将作为线程的同步对象使用。如果读写函数未完成操作就返回,就那么把hEvent成员设置成无信号的。操作完成后(包括超时),hEvent会变成有信号的。
如果GetLastError函数返回ERROR_IO_PENDING,则说明重叠操作还未完成,线程可以等待操作完成。有两种等待办法:一种办法是用象WaitForSingleObject这样的等待函数来等待OVERLAPPED结构的hEvent成员,可以规定等待的时间,在等待函数返回后,调用GetOverlappedResult。另一种办法是调用GetOverlappedResult函数等待,如果指定该函数的bWait参数为TRUE,那么该函数将等待OVERLAPPED结构的hEvent事件。GetOverlappedResult可以返回一个OVERLAPPED结构来报告包括实际传输字节在内的重叠操作结果。
如果规定了读/写操作的超时,那么当超过规定时间后,hEvent成员会变成有信号的。因此,在超时发生后,WaitForS-ingleObject和GetOverlappedResult都会结束等待。WaitForSingleObject的dwMilliseconds参数会规定一个等待超时,该函数实际等待的时间是两个超时的最小值。注意GetOverlappedResult不能设置等待的时限,因此如果hEvent成员无信号,则该函数将一直等待下去。
在调用ReadFile和WriteFile之前,线程应该调用ClearCommError函数清除错误标志。该函数负责报告指定的错误和设备的当前状态。
调用PurgeComm函数可以终止正在进行的读写操作,该函数还会清除输入或输出缓冲区中的内容。
3.4 超时设置
在用ReadFile和WriteFile读写串口时,需要考虑超时问题。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会结束。要查询当前的超时设置应调用GetCommTimeouts函数,该函数会填充一个COMMTIMEOUTS结构。调用SetCommTimeouts可以用某一个COMMTIMEOUTS结构的内容来设置超时。
有两种超时:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。用COMMTIMEOUTS结构可以规定读/写操作的超时,该结构的定义为:
COMMTIMEOUTS结构的成员都以毫秒为单位。总超时的计算公式是:总超时=时间系数要求读/写的字符数+时间常量
例如, 如果要读入10个字符, 那么读操作的总超时的计算公式为:读总超时=ReadTotalTimeoutMultiplier10+ReadTotalTimeoutConstant
可以看出,间隔超时和总超时的设置是不相关的,这可以方便通信程序灵活地设置各种超时。
如果所有写超时参数均为0,那么就不使用写超时。如果ReadIntervalTimeout为0,那么就不使用读间隔超时,如果ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant都为0, 则不使用读总超时。如果读间隔超时被设置成MAXDWORD并且两个读总超时为0,那么在读一次输入缓冲区中的内容后读操作就立即完成,而不管是否读入了要求的字符。
在用重叠方式读写串口时,虽然ReadFile和WriteFile在完成操作以前就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时间,而不是ReadFile和WriteFile的返回时间。
4 结语
以上给出了用Win32 API设计串行通信的基本思路,这个重叠(异步)I/O操作的串行通信程序,应用于大型任务,表现出良好的性能。在实际应用中,稍加改造,即可设计出满足需要的各种串行通信程序。
摘要:串行通信方便易行, 应用广泛。结合硬件详细介绍在Windows环境下使用Windows API实现异步串行通信的方法。
关键词:串行通信,RS232,重叠,I/O,Win API
参考文献
[1]李现勇.Visual C++串口通信技术与工程实践.人民邮电出版社, 2004.
I/O控制 第10篇
随着微电子工业和半导体加工技术的不断发展,集成电路的规模不断增大。这使得将复杂系统集成在单个芯片上成为可能,于是便出现了片上系统SOC(System on a Chip)。SOC极大地缩小了系统体积;SOC减少了板级系统SOB(System on Board)中芯片与芯片之间的互连延时,从而提高了系统的性能;SOC采用基于IP(Intellectual Property)核的设计(Core-based Design),它允许在芯片设计过程中复用(Reuse)已经经过验证的高性能的IP核,从而提高了设计效率[1]。FPGA的飞速发展为SOC的发展开辟了新的方向SOPC(System On a Programmable Chip)。对于比较复杂的系统,仅仅使用基于硬件的FPGA对其进行协调控制还是比较困难的,因此通常把一个微处理器内核嵌入到FPGA芯片中,采用软硬件协同设计的技术,不仅使得对设备的控制更加灵活,调试也更加方便,并缩短了开发周期。
MicroBlaze是由Xilinx公司推出的一款32位RISC微处理器IP核,具有很高的可配置度,可以将外部存储器,液晶显示屏、键盘接口等外部设备连接在一起并协调它们的工作,适合设计针对网络、电信、数据通信等应用背景的复杂嵌入式系统。
本文以嵌入式I/O系统为例,介绍了基于MicroBlaze进行嵌入式系统设计开发的方法,给出了一种输入/输出系统的设计实现方案,分析了其开发流程,并讨论了设计开发过程中相应的软硬件设计问题。
2.嵌入式I/O系统总体设计
2.1 MicroBlaze的体系结构
MicroBlaze采用功能强大的32位流水线结构,包含32个32位通用寄存器和1个可选的32位移位器,时钟频率可达150 MHz[3]。MicroBlaze软核的结构框图如图1所示。它具有以下基本特征:
(1)32个32位通用寄存器和2个专用寄存器(程序计数器和状态标志寄存器)。
(2)32位指令系统,支持3个操作数和2种寻址方式。
(3)分离的32位指令和数据总线,符合IBM的OPB总线规范(与外设相连接的低速总线)。
(4)通过本地存储器总线(LMB,本地高速总线)直接访问片内块存储器(BRAM)。
(5)具有高速的指令和数据缓存(cache),三级流水线结构(取址、译码、执行)。
(6)具有硬件调试模块(MDM)。
(7)带8个输入和8个输出快速链路接口(FSL)。
2.2 MicroBlaze嵌入式开发工具EDK
Xilinx公司提供了完善的嵌入式开发工具EDK(Embedded Development Kit)。EDK是Xilinx公司于2003年推出的SOPC系统开发套件。该套件集成了丰富的开发工具和大量的IP核资源,其中集成的工具包括硬件平台生成器(Plat Gen)、硬件仿真模型生成器(Sim Gen)、硬件调试工具(XMD)、软件库生成器(Lib Gen)、应用软件编译工具(GNU Compilers)、软件调试工具(GNU Debuggers)等;IP核资源包括LMB和OPB总线接口、外部存储器控制器(EMC)、SDRAM控制器、UART接口、中断控制器、定时器等[2]。
所有这些工具和资源都由EDK中的XPS(Xilinx Platform Studio)集成开发环境统一管理。XPS提供一个友好的图形用户界面(GUI),使用非常方便。
2.3 系统的设计开发流程
在嵌入式系统的开发中,软硬件协同设计的方法可以降低开发成本,缩短开发时间,并使得设计更加灵活,从而逐步取代了传统的设计流程。其中涉及到的关键问题是系统资源的规划和利用,所以在系统设计前首先要考虑系统功能的软硬件划分,清楚地界定系统内部各项功能的最终实现形式;而在进行软硬件分割时,若想达到系统性能的最佳化,就必须考虑到各功能部件之间数据交换的性能以及不同功能部件之间的同步,确保系统在执行时能满足所需的时间约束(timing constraint)[3]。
EDK工具包括XPS工具和SDK工具,XPS工具完成主要软/硬件设计调试工作,SDK工具用于设计和调试应用软件。ISE工具,用于混合编程和定制IP核。ChipScope Pro工具,用于在线调试硬件系统。第三方工具,如Modelsim工具,用于仿真硬件系统。
在本系统的设计开发过程中就采用了软硬件协同设计的方法,其流程如图2所示。
3.系统的关键硬件模块实现
3.1 44键盘模块的硬件实现
键盘是计算机系统中最常用的人机交互输入设备,然而在应用中都采用通用的键盘扫描器件是不现实的,需要单独设计成专用的小键盘。
(1)44键盘工作原理
44键盘的工作原理如图3所示,其中P0~P3为输出口,P4~P7为输入口。无按键按下时,输入口被上拉为高电平。输出口以一定频率循环输出0111、1011、1101、1110。通过读输入口的状态,便可判断击键情况。键盘扫描电路键盘上的每一个按键其实是一个开关电路,当某键被按下时,该按键的接点会呈现逻辑0状态,反之,未被按下时则呈现逻辑1的状态。当尚未按下键盘时,依据表1所示编码方式逐一扫描键盘按键,键盘输入到按键检测电路的值均为1,使键盘无论扫描哪个键时,都检测到尚未按下键盘;当使用者按下键盘按钮,则键盘输入到按键检测电路的值为0,直到键盘扫描到此键时,检测到已按键。
(2)按键的去抖动问题
按键大多是机械式开关结构,在开关切换的瞬间会在接触点出现抖动的现象。因此,必须加上抖动消除电路。如果要防抖动,就不能用时钟去检测按键的按下状态,而要去检测按键按下或者抬起的边沿。例如按键按下的时候就检测与按键连接的FPGA管脚的下降沿,按键松开的时候就检测与按键连接的FPGA管脚的上升沿。这样就可以不用理会按键按下的时间长度,根据按键按下或者抬起的次数来确定计数。
(3)硬件实现
虽然EDK提供的IP核非常丰富,但不可能满足所有用户的需求,根据实际需求定制IP核是嵌入式设计中常需要的,也是实现“量身定制”系统的前提。EDK工具提供了简单的界面帮助用户完成IP核定制过程,其中非常重要的方式是通过IPIF接口定制IP核。IPIF(IP Interface)是EDK提供的标准IP接口,允许用户在系统内总线上构建自己的IP核,用户只需关注自己想要的功能逻辑,EDK工具会根据用户选择的总线方式实现相应的总线接口逻辑,合成完整的IP核模块[4]。
在接口电路设计中,我们使用IPIF接口定制一个KEY_IP核,用于对键盘进行扫描进而采样键盘输出,最终生成扫描码以及产生中断请求。键盘扫描信号频率只需在几百赫兹左右即可,实现时将50MHZ OPB总线频率分频,上升沿循环扫描,下降沿采样,根据采样结果生成扫描码。
考虑到机械式按键的不稳定性,需要对扫描结果进行防抖处理,故在扫描到有键按下时启动一个计数器,计数若干次同一键被扫描到后,即可认为此键已被人为按下,将其存储于本地寄存器后,产生一个中断请求通知CPU调度键盘中断处理程序。
3.2 LCD液晶显示模块的硬件实现
(1)工作原理
TS1620-1 LCD为162字符型液晶显示器,可显示两行,每行可显示16个字符,通过发送指令,可配置成不同模式。接口部分有1个8位的数据寄存器、1个8位的指令寄存器、一个7位的地址计数(AC)寄存器和1位的忙标志(BF);指令寄存器用于控制LCD内部电路,完成LCD读写、扫描、显示等功能;数据寄存器用于暂存LCD与外部数据的通信数据。基本操作时序如下:
1)读状态:
RW=H,RS=L,E在读状态期间应保持高电平;
2)读数据:
RW=H,RS=H,E在读数据期间应保持高电平;
3)写指令:
RW=L,RS=L,D0-D7指令码,E在指令码稳定后要产生一个下降沿触发LCD执行此指令;
4)写数据:
RW=L,RS=H,D0~D7为待写数据,E在指令码稳定后要产生一个下降沿触发LCD执行此指令;
AC6~AC0的值为CGRAM还是DDRAM地址取决于最近一次向AC写入的是DDRAM还是CGRAM地址。地址只有7位,在进行传的时候,要并上DB7,组成8位一并传,状态同样通过D0~D7读出,格式如表2所示。
(2)硬件实现
在接口电路的设计中,我们使用IPIF接口定制一个LCD_IP核,通过OPB总线对显示设备进行控制和数据传输。LCD_IP与液晶显示模块之间需要连接的主要有数据线和控制信号线,如图4所示,具体为:RS、R/W、EN、DB7-DB0共11位。
Data_I与数据端口连接,负责采集液晶的状态数据。Data_O与数据端口连接,负责将控制指令和显示数据送至液晶。用DataCmdSelect、Execute、Data_T分别控制EN、RS、R/W信号,通过对这些引脚的组合控制,按照一定的时序关系实现对LCD的控制。
LCD_IP核中需要实现以下四种操作:
(1)读状态:
检测忙标志以及AC的值;
(2)读数据:
读出最近一次由DDRAM地址设置指令处DDRAM单元的内容;
(3)写指令:
设置LCD的工作模式、AC值以及显示方式等;
(4)写数据:
向LCD的DDRAM写入要显示的数据,写之前需要设置DDRAM地址;
四种操作中除读状态外都需对忙标志位检测;若BF为高电平,则LCD正在工作中,此时LCD接口部分被锁定,任何指令都将不处理,故需等待知道BF为低时方可进行下一个操作。
在IP核模板的基础上,用周期计数延时获得读、写操作时序,将指令直接传送至LCD,读写操作在IP核中占用几个总线周期,为了防止应用软件在发送指令期间再次发送新指令,IP核提供一个标志位供应用软件读取,以指示是否正在进行读写操作,若是则应用软件需适当延时等待再通知IP核发送下一条指令。
3.3 系统硬件平台的创建
在键盘和LCD液晶的硬件接口设计完成后,我们利用Xilinx公司提供的EDK开发软件XPS中的工具Create and Import Peripheral将其以IP核的方式挂到OPB(On-Chip Peripheral Bus)总线上。创建IP核时,在IPIF提供的服务中选择用户逻辑中断支持以及软件用户逻辑地址寄存器支持,前者使得外围设备可以管理由用户逻辑产生的中断,后者使得外围设备的用户逻辑部分拥有可寻址的寄存器[1]。按照前面所介绍的连接关系进行硬件搭建后,键盘以及LCD液晶显示模块的硬件详细信息都保存在MHS文件中。该文件定义了系统结构、外围设备和嵌入式处理器,也定义了系统的连通性以及系统中每个外围设备的地址分配和对每个外围设备的可配置选项。平台生成工具将MHS文件用于输入,创建了硬件平台。在XPS中选择Generate bit stream,即可以产生硬件配置文件*.bit文件。硬件平台如图5所示。
4.系统的软件设计与实现
4.1 44键盘软件实现
在建立系统时,在OPB总线上添加EDK提供的中断IP核INTC_IP,该IP核INTC可控制多个中断信号。把键盘的用户逻辑产生的中断信号输入到INTC_IP核中,然后INTC_IP核将这个中断信号输入到MicroBlaze的中断端口上,由MicroBlaze进行中断管理。当有中断发生的时候,MicroBlaze会跳转到地址0x10。这是C运行库的一部分,它包括缺省时跳转到中断句柄(interrupt handler)函数,此功能是由Xilinx提供的BSP(Board Support Package)(它是一个最基本的核,为应用程序提供最基本的功能)完成的[7],由于在MSS文件中已经对中断操作路线进行了设置,因此它会跳转到中断处理函数中进行中断处理。同时在引入IP核后,系统会自动生成相关的驱动程序,可以方便使用软件对寄存器进行读写操作。中断处理程序主要是进行了扫描码和ASCII码的转换,并把ASCII码显示在LCD上。
引入中断IP核后,系统会自动生成相关的中断请求号,以及提供与此中断号相关联的默认中断处理句柄(interrupt handler),随后即可在系统初始化时调用XIntc_Register Handler函数注册自定义中断处理句柄替换默认处理句柄。MicroBlaze提供的通用中断处理机制通过XIntc,可以管理多个中断控制器,XIntc中CfgPtr为数组类型,数组元素类型为XIntc_Config用于为中断控制器提供中断管理。XIntc_Config中的HandlerTable用于管理中断请求号与中断处理句柄的关系,所以每个中断控制器可以接收多个中断请求。在发生中断时,MicroBlaze会根据产生中断的中断控制器设备,找到与此设备相关联的XIntc_Config结构,再取出中断发生时的中断请求号,在XIntc_Config结构中找到相应的中断处理句柄,并跳入此处理程序处理中断请求。
4.2 LCD液晶显示模块软件实现
系统上电后,首先根据液晶显示器模块的结构通过写寄存器的方式对各项控制指令代码和参数(如液晶的行数、光标的位置光标、光标是否闪烁等)进行设置,从而完成对液晶显示模块的初始化过程。在对系统进行正确的初始化以后,就可以通过MicroBlaze将数据送至LCD进行显示了。在初始化程序中设置系统控制指令及其参数的方法为:根据用户硬件电路的设计,将指令及参数送到LCD_IP核对应的寄存器地址。系统中每个外设都有自己对应的唯一地址,这个地址是XPS在添加了LCD_IP核后选择Generate Addresses自动产生的。
CheckBF()函数用于通知LCD_IP核发送读取忙标志指令,此函数运行后,LCD_IP核会发出读状态操作指令,在数据有效后,将数据(BF和AC)先缓存于IP核的本地寄存器,而后供应用软件读取;Send Cmd(cmd)函数用于向LCD写入控制命令,从而达到配置LCD和显示字符的目的。需传入有正确命令格式的参数,确定将要执行的操作,在发送之前,需要一直等待CheckBF()检测到BF为低电平;为方便写入数据设有WriteChar、WriteString等函数,此类函数直接调用Send Cmd发出写数据操作;若没有设置LCD工作方式为自动递增AC,则在每次写之前都需要先发出设置DDRAM地址指令。
需要注意的是LCD在写数据之前需发送一系列初始化命令,以配置其工作模式、显示方式等,都是间接通过Send Cmd(cmd)实现。
4.3 应用程序的实现
本系统中应用程序设计部分主要功能为读取按键值,通过查找表的方式完成扫描码到ASCII码的转换,并把键码转换后的值显示在LCD液晶显示模块上。由于前面已经创建好键盘的IP核,又通过LCD_IP核对LCD液晶进行了控制,在此仅需编写主函数即可。按键扫描码的获取可以使用查询或者中断的方式。在具体实现中我们采用中断驱动模式来接收键盘扫描码。采用这种方式,既提高了响应速度,又可实现程序的模块化设计,并便于以后系统的扩充。应用程序调试运行成功之后便会产生.elf可执行文件。
5.系统的开发调试经验
我们更多的采用硬件调试的方法,将系统通过JTAG接口连接到目标板上的XMD调试接口,并把软件代码可执行文件(*.elf)和FPGA硬件配置文件(*.bit)通过Data2Mem转换成新的FPGA位流文件(*.bit)下载到系统中后,通过设置断点,读写内存和寄存器的值等手段来进行调试。最后将调试通过的位流文件,下载到目标芯片上,系统即可正常工作。
另外,结合系统调试过程中的经验,我们发现在进行程序编写时,需要特别注意以下两点:
(1)MicroBlaze为big-endian模式,且其内部总线宽度为32位,因此在对寄存器进行读写时需要注意其数据格式及宽度。
(2)在软件设计中要注意,对于FPGA来说LCD是一个低速设备,因此对于指令的响应需要一定的延迟,需要写一个有延迟作用的函数。
6.结论
本文采用软硬件协同设计的思想,设计并实现了一种基于MicroBlaze处理器的I/O系统。在进行完软硬件功能划分并创建好硬件平台后,对于输入设备键盘的控制以及输出设备LCD液晶显示器的功能设置可以通过软件的方式进行更改。本设计已在Xilinx Spatan3开发板上进行了验证,取得了良好的效果。通过本设计的实现可以看出,MicroBlaze是一个功能强大、应用灵活的嵌入式软处理器,特别是其强大的用户自定义逻辑功能,极大地方便了系统设计。可以预见,基于嵌入式软处理器的SOPC开发方法,必将拥有广阔的应用前景。
摘要:随着微电子工业的不断发展和FPGA技术的不断提高,SOPC技术逐渐成为嵌入式系统技术发展的新方向。本文介绍了XILINX公司的SOPC集成开发环境EDK,以及在EDK中开发和利用用户IP的方法;利用ISE及EDK设计工具设计开发了I/O系统中常用的IP模块,并通过了仿真验证。
关键词:SOPC,MicroBlaze,IP核,软硬件协同设计
参考文献
[1]董代洁,郭怀理等.基于FPGA的可编程Soc设计[M].北京:北京航空航天大学出版社,2006.
[2]Xilinx,“MicroBlaze Processor Reference Guide”EDK(v8.1)[S].January,2006.
[3]Xilinx,“Embedded System Tools Guide”EDK(v8.1)[S].January,2006.