IO驱动(精选7篇)
IO驱动 篇1
段式液晶相对于点阵液晶, 显示内容简单, 排列和外形上非常自由, 主要用于替代段式LED数码管, 随着段式液晶屏价格的逐渐下降和显示效果的提升, 其应用范围越来越广泛。相对与段式数码管由于其有着低功耗特点, 显示内容也更加丰富, 除了数字还可以显示图案等复杂图形, 非常适合在仪器仪表中作为数据显示界面。
STM32F0系列微处理器以ARM Cortex™-M0为内核, 在实时控制、低功耗、先进架构和丰富外围设备组合上表现得更加出色。该系列单片机最多支持55个IO口, 集成丰富的外设, 比如定时器、实时时钟、12位ADC、USART、IIC、SPI等, 传承了STM32系列的重要特性, 集实时性能、低功耗运算和先进架构与外设于一身, 由于具有低廉的价格, 特别适合于成本敏感的应用。
本论文基于STM32F0提出了直接使用单片机IO口驱动段式液晶的方案, 具有价格低廉、性价比高、功耗低的特点, 用于满足低成本产品使用液晶屏作为显示界面的需求, 具有较大的推广和使用价值。
1 段式液晶显示原理
LCD (Liquid Crystal Display) 是利用液晶分子的物理结构和光学特性进行显示的技术。液晶分子介于固体和液体之间, 在自然状态, 具有旋光性, 呈现透明态;在电磁场的作用下, 失去旋光性而呈现黑色。整个液晶屏由上下玻璃基板和偏振片组成, , 通过在上下基板电极间施加不同的交流电压, 即可实现液晶显示的亮暗两种基本状态。
在实际使用中, 以下4个参数至关重要:
(1) 交流信号电压驱动, 长时间直流信号电压会导致液晶分子氧化, 引起寿命缩短和显示模糊, 因此需要使用交流信号驱动。当SEG端电压等于COM端电压时, 该段不显示, 当电压相反时该段显示。
(2) 扫描频率, 直接驱动液晶分子的交流电压的频率需要在60Hz到100Hz之间, 过高会增加功耗, 过低会导致闪烁。
(3) 占空比 (Duty) , 由于TN和STN的LCD一般采用时分动态扫描驱动模式, 所以在此模式下每个COM的有效选通时间与整个扫描周期的比值是固定的, Duty=1/COM。
(4) 偏置 (Bias) , LCD的COM和SEG驱动信号为模拟信号, Bias数值为最低一档与输出最高电压的比值, 一般分3档或者4档, 分3档的Bias=1/2, 分4档的Bias=1/3。
设计驱动电路时需要依据厂家提供的液晶屏Duty和Bias参数, 以达到最优驱动显示效果。
2 硬件设计
本硬件平台的MCU采用STM32F030R8T6, 该单片机基于Cortex™-M0内核, 最高允许频率可达48M, 拥有独立的64 KB flash和8K的RAM, 2个UART, 片内自带具有校正功能的32K RTC, 一个12位ADC, 同时还有最多55路I/O口和独立的系统看门狗定时器。本系统通过合理利用片内集成的多种功能模块, 大大降低了设计的复杂性, 也降低了系统成本。该MCU在本设计中的电路原理图如图1所示。
系统使用两个晶振, 其中8MHz经过MCU内部倍频为系统提供48MHz工作时钟, 32.768k Hz为系统提供RTC时钟, 以及在低功耗运行模式下的系统时钟。BOOT0用于选择单片机的启动方式, 当BOOT0接高电平时, MCU上电后进入ISP下载模式, 此时可以通过串口升级系统程序, 当BOOT0接地时, MCU上电后从用户程序区开始运行进入正常启动模式。
本设计选用的段式段式液晶屏驱动参数为Duty=1/4, Bias=1/2, 一共四个COM端, 22个SEG端。因此该段式液晶的COM端有三种电平, 分别是Vcc, 1/2Vcc, 0, 每个周期变化四次。由于MCU只能输出高低两种电平, 因此为了输出中间电平, 利用MCU的开漏输入功能和阻值相等的上下拉电阻实现, 当需要中间电平时, 把相应COM端口设置为浮空输入模式, 由于上下拉电阻的分压作用, 就会产生一个半高电平。
系统采用DHT11数字温湿度传感器, 它应用专用的数字模块采集技术和温湿度传感技术, 确保产品具有极高的可靠性与卓越的长期稳定性, 与MCU通信采用单总线协议。在本系统应用中采用PA13与DHT11通信, 实现0-50°C温度和20-90%RH湿度范围的数据采集。
通过USART1可以实现程序IAP在线升级, 根据实际需要, USART2选择GPRS、zigbee、蓝牙、wifi等无线透传模块, 实现无线数据传输。
3 软件设计
在本应用中, 段式液晶驱动控制的COM端和SEG端全部都是PWM信号驱动, 一共26路PWM, MCU所支持的硬件PWM无法满足要求, 因此需要软件模拟实现。本设计通过在TIM中断中反转IO口状态实现26路PWM输出控制。
编程时定义一个二维数组, 作为每一段的标志位和真值表一一对应, 需要某段显示时, 将该段对应的标志位置为1, 否则置为0。在TIM中断中, 根据该二维真值表数组操作对应的COM端口和SEG端口。
在应用程序中, 根据显示内容分别定义相关显示函数, 本设计定义了电池电量显示函数、无线信号状态显示函数、日期显示函数、温度显示函数和湿度显示函数, 这些函数的功能是把相关显示数据通过真值表定义对真值表的显示位进行赋值操作, 即把显示的内容映射到对应真值表二维数组, 从而实现数据显示和标识符的显示。
由于Bias=1/2, 因此COM端电平有三个状态, 即0V、1/2Vcc和Vcc, SEG端电平有两个即0V和Vcc, 若要点亮一段, 需要在对应的SEG端和COM端加上足够的交流电压, 即SEG端电压为0, COM端电压为Vcc或者SEG端电压为Vcc, COM端电压为0V;当不需要该段显示时, COM端电压为1/2Vcc, 此时SEG端和COM端的压降最大为1/2Vcc。因此通过定期逐个扫描4个COM端, 就可以稳定度在LCD上显示指定字段。为了防止显示时出现鬼影 (即不该显示的段码也隐约显示) , 需要降低驱动时间, 本设计采用50%占空比的PWM调节对比度。本设计段式液晶程序流程如图2所示。
如图2所示, 通过中断操作实现COM口和SEG端口的翻转与赋值, 其中变量Val为定义的全局变量, 在TIM_IT_CC1中断触发时对COM口和SEG口进行赋值或者翻转操作, 当TIM_IT_Update中断触发时, 把所有COM口和SEG口均设置为低输出状态。
4 应用和发展前景
本论文在分析段式液晶驱动原理的基础上, 给出了使用MCU IO口直接驱动段式液晶显示的原理图设计和程序流程图, 并在温湿度传感器中通过实际应用进行验证。本方法实现的段式液晶驱动方案, 除了适用于温湿度传感器外, 可以推广应用于更多低成本的采用段式液晶显示的产品设计。
参考文献
[1]张布幸.智能电表段式液晶驱动的设计与实现[J].微型机与应用, 2013 (13) :104-106.
[2]张恩海.探索51单片机直接驱动段式液晶的简单化[J].计算机与网络, 2011 (10) :60-62.
[3]丛秋波.STM32F0系列开始量产瞄准低成本应用[J].EDN CHINA电子设计技术, 2012 (07) :22-22.
远程IO数据采集器的开发 篇2
在复杂的工业现场环境中,存在着许多干扰信号,各种干扰信号都具有一定的随机性和不确定性。可能会造成逻辑混乱,系统控制失灵,产生误动作,甚至造成生产设备损坏和人身伤害等。严重影响了工业生产的稳定运行和可靠性,影响了产品的质量和生产效率,因此,有效地排除和抑制各种干扰,是现代工业必须深入探讨和急待解决的问题。
另外,在工业现场中,常常遇到被控对象和被测信号分布在各个不同的地方,并且他们与控制站之间也有相当长的距离,连接的信号线和控制线都比较长。一方面存在着导线用量大、接线复杂、故障率高、安装工期长、维修困难等问题。另一方面,过长而且又多的导线在一起很容易产生电感电容耦合,而产生干扰信号,严重影响生产的稳定运行,值得探索相应的措施来解决。
现场总线控制是当今工业控制的潮流,现场总线技术的应用能有效地解决一些实际问题。然而,对于一些中小型设备的改造或者对现有的一些老设备大修改造时,原来的PLC系统还完好,如果改为现场总线控制就会造成很多不必要的浪费。并且,工业现场的一些机械控制对实时性和可靠性的要求也越来越高。那么就需要有更简单方便的方法来解决这类实际问题。
例如在电镀线行车的控制中,以前是把行车上的接近开关、按钮、限位开关直接连到PLC的输入端,行车拖带着很多导线,各种干扰使行车无法正常运行,按照传统的方法,采用电阻电容进行滤波,其效果并不显著,而且还影响了响应的时间。使行车定位不准,对偶尔出现的大的干扰信号无法过滤掉。由于行车拖带的导线长(可达100多m)而多,长时间很容易使导线折断,更换导线也非常困难,而且还产生干扰信号。这些现实问题的存在,必须进行深入探讨,寻找出有效的解决方案。
针对上述工业现场的各种干扰问题、大量复杂的配线带来的一系列问题,以及过滤器的失灵等实际问题,研制开发了远程IO信号采集器(本文简称采集器)。
2 采集器的系统组成和工作原理
所谓采集器是将输入口的位信号以数字形式通过现场总线传递给输出口的一种装置。采集器也是一种形式的总线,它有更好的实时性,而且简单方便。
2.1 系统的组成
采集器系统的组成框图见图1。
通过采集器将现场信号传递给PLC,既保证了集中控制,又保证了长距离信号传输的可靠性。采集器最多可代3个扩展,可传送64位。
采集器设有主机和扩展单元。
主机有3种型号:M01-OC 16点继电器输出,M01-OD 16点晶体管输出,M01-ID 16点晶体管双向输入bilateral。
扩展3种型号:E01-OD 16点晶体管输出,E01-OC 16点继电器输出,E01-ID 16点晶体管双向输入。
其中M01-OC 16点继电器输出主机,可以和16点输入的任意一款集线器相配合。也可单独做为总线式远程IO。M01-OC 16点继电器输出主机,可以和16点输入的任意一款集线器相配合。也可单独做为总线式远程IO。
2.2 工作原理
远程IO信号采集器是采用RS485总线的方式进行通讯,标准帧格式和CRC校验。波特率采用115.2 kb/s。一组采集器最多可传送64位,采集器如果在100 ms内没有进行有效应答则会将所有输出口置零,利用这个特点可对采集器的工作情况进行监视,使上位机做出相应的保护措施。
3 采集器的功能特点
1)点对点的通讯方式,提高了系统运行的可靠性。网络控制存在着单点故障容易扩散的问题,进而造成整个网络系统瘫痪的弊端,采集器采用了点对点的通讯方式,能够有效地克服单点故障殃及周围的问题,使系统运行更加安全可靠。
2)使用方便,便于安装。无须用户做任何编程工作,只需将采集器当作接线端子即可。使用方便,易于安装和掌握。
3)速度快,可靠性高,实时性好。采集器是采用专线专用方式配线,无站号分配。所以速度快,可靠性高,实时性好,安全性高。
4)接线简单、成本低。采集器仅用2根导线就可以取代原有的远距离的诸多繁杂接线,既降低了安装成本、又减少了安装工期,使安装接线更加容易,降低了故障率。
5)监视功能强、维修方便。每组采集器的状态都有相应的指示灯,运行状态一目了然,具有监视功能强、便于故障诊断、维修极为方便的特点。
6)配置灵活,通用性强。根据生产要求,选择的系统配置各不相同,然而,采集器能够和任何一种PLC配合使用,可以灵活配置,具有通用性强的特点。
7)抗干扰能力强。采集器采用了差分输入方式,工业信号实现现场采集数字传送时,采集器能有效地防止信号在传输过程中受到的各种干扰,具有较强的抗干扰能力。
8)取代了原来的过滤器,节省了大量的导线,减少了干扰信号,提高了抗干扰能力。
4 效果验证
以采集器在电镀生产线上的应用为例。电镀生产线上通常有2个至5个行车运行,其中一台行车的控制大约需要6个接近开关、5个限位开关等控制元件,控制线和电机的驱动线共用16棵线走在同一个扁平电缆内,电缆长度约100余m,对2个以上行车的控制就需要几十个开关控制,控制线和电机驱动线就更多,诸多的电缆线在系统运行时必然产生一定的电磁干扰。另一方面,行车的行走是采用变频器来控制的,变频器是将固定频率的交流电变换为频率连续可调的交流电的装置[3],当变频调速系统的容量足够大时,所产生的高频信号将足以对周围各种电子设备的工作形成干扰,影响周围设备正常工作,为了避免控制信号、变频器等带来的各种干扰,传统的方法是采用PLC现场信号过滤器来抑制干扰,现场信号过滤器主要是阻容吸收电路,电容小了过滤效果不好,电容太大又会影响响应时间,并且电网的波动有时也会造成过滤器失灵,使得行车常常发生定位不准,误动作等故障,严重影响了生产效率和产品质量。
电镀线对行车的基本要求是:行走速度快,定位准确,行走时平稳性能好。
采用远程IO信号采集器取代现场信号过滤器后,充分体现了其优越性:
1)由于采集器是采用点对点的通讯方式,所以具有更好的速度性和可靠性。有效地解决了变频器对控制信号的干扰问题,消除了误动作,提高了系统运行的可靠性;
2)用传统的现场信号过滤器时,行车计位用接近开关的检测距离是20 mm,采用采集器时,行车计位用接近开关的检测距离是10 mm,检测距离提高了一倍,从而提高了器件的响应时间,大大提高了行车的运行速度和行车的定位精度,解决了现场信号过滤器响应时间慢使定位不准确的问题;
3)取代了原来的现场信号过滤器,增强了抗干扰能力,还将原来的几十根导线减少为2根线,大大减少了导线用量,进而减少了由于导线折断等因素而引起的故障,既降低了成本,又提高了生产效率和系统运行的可靠性;
4)采用采集器配线少,安装简单,减少了安装周期;
5)采集器上具有相应的状态指示灯,使运行状态一目了然,便于故障诊断,给维修带来了极大的方便。
行车控制的原理图见图2。
系统的开关量接在采集器主机的输入单元,主机的输入单元安装在现场,主机的输出单元安装在控制柜里,取代了原来的过滤器,也取消了原来在现场和控制柜之间连接的大量导线,输入单元与输出单元之间只需两屏蔽线,大大减少了导线的根数。使接线和维护变得极为简单。经过1 a多现场使用证明,其可靠性大大高于原来的方法,1 a多来,行车运行稳定,从未出现过现场信号干扰等因素带来的错误动作。
5 结论
通过生产实际的验证,应用采集器能够有效地抑制复杂工业现场中的各种干扰信号,实现了系统的安全稳定运行,克服了网络控制单点故障容易扩散的弊端,解决了原来采用过滤器的不足,并且,对生产线的改造耗时少,费用低,安装接线简单,系统运行安全可靠,故障显示一目了然,维修方便,给用户带来了极大的方便和良好的效益。
摘要:针对工业现场中各种干扰信号对生产的严重影响和工程安装中的接线复杂问题,研制开发了远程IO数据采集器,通过大量的试验证明,远程IO数据采集器能有效地抑制现场的信号干扰,由于采用了点对点的通讯方式,使系统运行具有良好的可靠性和实时性。并且仅用两根导线就能取代原有的繁杂接线问题,使安装变得简单方便。
关键词:抗干扰,远程,点对点
参考文献
[1]刘高鏁.单片机实用技术[M].北京:清华大学出版社,2004.
[2]陶权.探析自动化控制系统的抗干扰设计[J].制造业自动化,2012,34(2):132-134.
IO驱动 篇3
RNC是多板卡组成的多处理机系统, 其内部的IO通信机制是RNC高效运作的基础, 因此, 必须确保RNC系统中高流量的IO消息能够稳定可靠地传输和运行。对于IO通信机制, 所谓的安全稳定性就要求通信连接的可持续性和消息传送的高成功性。
但是, 对于传统的网络设计和板卡设计来说, 一旦遇到硬件故障或者软件故障, 往往造成通信瞬时中断, 而且恢复性措施耗时长, 很难保证IO通信的接续性和成功性。本文基于这些因素, 提出IO通信机制的优化措施, 加强通信连接的接续性和消息传送的可靠性, 并基于该优化策略实现IO通信机制的共通性。
1 优化IO通信机制的设计与实现
1.1 MAC地址和IP地址的优化设置
在建立RNC板卡间的TCP连接之前, 首先我们来讨论板卡的MAC地址和IP地址的优化设置规则。
数据链路层使用的MAC地址是统一设置的, MAC地址中应该包含主备网络信息。
DHCP协议是动态主机配置协议, 大部分操作系统的内核都集成了该协议。
接着, 我们来讨论如何利用DHCP协议来优化配置IP地址, 以增加IP地址的可解析性。
众所周知, 32位的IP地址由4段8比特十进制地址组成, 记为“a.b.c.d”。RNC内部的IP地址分配一般采用DHCP协议。为了增强IP地址的可解析性, 我们可以根据RNC的网络特点来定制DHCP用法。
比如, 我们可以人为地设置“a”段信息, 该信息可以存储在RNC内部一块特殊的板卡上, 该板卡通常被叫做操作管理板卡 (O&Mprocessor) , 我们把这块板卡作为DHCP服务器端, 其他板则作为DHCP客户端。在系统或板卡启动时, 通过DHCP协议, 客户端向服务器端发起请求, 从服务器端获取IP地址的“a”段信息。而“b.c.d”段的信息则由板卡所处的物理槽位确定, 通过操作系统的接口函数可以直接获取物理信息。
嵌入式操作系统拥有ARP (Address Resolution Protocol地址解析协议) 协议的功能, 我们可以使用ARP表来管理MAC地址和IP地址, 它提供两者间的相互转换, 以确保数据信息准确无误地到达目的地。
1.2 逻辑地址的定义
IP地址和逻辑地址也是一一对应的, 我们可以建立一张表来管理这两者的对应关系, IO通信模块负责维护这张对应表, 当主备板发生切换时, 逻辑地址随之切换, 而IP地址保持不变, 因此需要相应地更新IP地址和逻辑地址的匹配关系表。
1.3 TCP连接的实现
下面我们来讨论TCP连接设计的几个关键技术。
(1) TCP连接数目的确定。TCP连接是点对点的连接, 我们考虑与RNC内所有的板卡都建立TCP连接, 因为每一块板卡都可能和其他任何板卡通信。同时如果考虑到主用和备用的两套网络, 则需要建立的TCP连接总数采取如下算法。
TCP连接的数目= (RNC内板卡总数-1) *网络数目
减去1, 意味着不需要和自身板卡建立连接。在我们讨论的主备用网络系统中, “网络数目”等于2。
(2) 创建通信任务和TCP连接。通信任务有三种, server task (服务端任务) , client task (客户端任务) 和socket task (套接字任务) 。为了建立板卡之间的TCP连接, 我们需要在每一块板卡上建立server task和client task。TCP连接建立之后, 为每一个连接创建一个socket task, 由socket task负责IO通信。
R N C内部的网络采取主用和备用配置, 这样我们可以为每块板卡建立两个server task, 分别对应主用网络端口和备用网络端口, server task用于接收client task的TCP连接建立请求。
Client task有很多定义方法, 我们可以结合RNC的硬件特点来设计, 根据RNC配置的机框数目来确定client task的数量。在建立了server task和client task后, 就可以开始建立TCP连接了。我们把物理槽位编号较小的板卡作为服务器端, 反之, 物理槽位编号大的为客户端。物理槽位有三部分信息组成:机架号, 机框号, 槽位号, 可以定义一个16比特的数据来表示, 如图1所示。
根据上述定义规则, 由client task向相应板卡的server task发起连接请求, 建立T C P连接后, 为每个T C P连接创建一个socket task。所建立的TCP连接总数, 等于所创建的socket task总数, 每一个socket task用于监视相对应的TCP连接, 实现IO消息的收发机制。
1.4 I O消息收发机制的优化实现
建立TCP连接之后, 就可以开始执行IO消息通信了。IO消息的优化收发机制描述如下。
(1) 首先上层模块发送消息给IO通信模块, 该消息指定了目标板卡的逻辑地址。
(2) IO通信模块的消息接收任务把这个新的消息通知给消息发送任务。
(3) 消息发送任务再把该消息送到消息队列中, 同时使用管道pipe方式通知套接字任务。
(4) 套接字任务总是处于等待状态 (使用select功能) , 接受消息发送任务的管道通知。
(5) 监测到管道通知后, 套接字任务从消息队列中读取消息, 送到IO bus上。
(6) 通过select功能, 目标板卡上的套接字任务可以检测到来自IO bus上的消息然后读取。
(7) 目标板卡上的套接字任务把刚刚收到的消息插入到消息队列中。
(8) 目标板卡上的消息接受任务使用OS的接受函数msgQReceive () 来收取消息队列中的消息。
(9) 最后, 消息接受任务把消息分发给目标任务 (应用层, 平台层或固件层) 。
1.5 主备用优化机制的实现
本章节我们来讨论在IO通信过程中如何实现主备用切换机制, 优化IO通信功能。
1.5.1 主备用板卡切换
在该切换处理处理流程中, 特别指出以下几个关键技术。
(1) 在切换期间, IO控制模块需要负责控制IO流, 建立缓冲机制, 以防止消息丢失。
(2) 需注意合理设置消息队列的大小以免消息队列溢出, 特别要注意主备用板切换所消耗的时间大小, 切换速度越快, 所需要消息队列的size就越小。
(3) 同时可以在发起消息的板卡上设置监视时钟, 如果在规定的时间内主备用板切换还未完成, 就放弃消息队列中所有的目标消息, 以免造成垃圾消息长时间占用队列空间。
(4) 当备用板卡成功地切换为主用板卡后, 上层模块将通知IO通信模块, 之后由其发出广播消息, 通知其他所有的板卡切换结束。这样其他板卡就开始检查缓冲队列中是否存在发送给目标板卡的IO消息, 如果存在, 则把这些消息发送给目标板卡, 此时的目标板卡是刚刚从备用状态切换到主用状态的板卡, 但是对于发起消息的板卡来说, 它只关心目标板卡的逻辑地址, 它总是把消息发送给主用逻辑地址所对应的目标板卡。这正是逻辑地址设计思想的优点加强了IO处理的共通性。
前面已经提到, 主用板和备用板发生切换时, 逻辑地址也随之切换, 但是IP地址不切换, 这样IO通信模块就需要更新IP地址和逻辑地址的匹配表。在发送IO消息时根据逻辑地址, 选择可用的主用板卡。
根据上面的设计思想, 我们就可以设计出相应的软件算法来维护IP地址和逻辑地址的匹配表, 选择正确的目标板卡, 从而加强了IO通信机制的共通性, 透明性, 以及可持续性。
1.5.2 主备用网络的选择
本章节我们来讨论如何通过主备用网络机制来保障IO通信的可持续性, 结合图2进行阐述。在IO通信模块发送IO消息之前, TCP连接状态的检查是必需的。由于RNC内部有两套网络, 因此从消息的发起板卡到消息的目标板卡存在两条可行的线路, 这两个TCP连接线路分别位于主备用网络中, 在发送IO消息之前, 我们需要选择一个可行的线路, 以确保IO消息成功到达目的地。其选择机制流程如下: (1) 检查主用网络上的TCP连接, 如果正常, 则选择该连接, 然后退出该流程;否则继续下面的步骤。 (2) 检查备用网络上的TCP连接, 如果正常, 则选择该连接, 然后退出该流程;否则继续下面的步骤。 (3) 如果主备网络上的TCP连接都不正常, 则把消息放入缓冲队列, 同时启动监视时钟。 (4) 如果在监视时钟超时之前, TCP连接恢复正常, 则重新发送IO消息到目标板卡, 否则放弃该消息。此时说明目标板卡或者发端板卡遇到某种问题, 那么RNC内部的状态监视系统将会监测到该问题, 并做出相应的动作, 以自动恢复该问题板卡, 使该板卡重新恢复到服务状态, 比如, 触发状态告警, 触发板卡重启动等等。
根据上面思想, 我们就可以设计出相应软件算法来选择可行的网络连接从而提高IO通信的可持续性。
2 结语
随着3G的全球化, 3G产品已经被普遍使用。本文所讨论的IO通信优化机制已经被多家开发商所采用, 比如Evolium 3G RNC项目, 其先后推出的R4和R5两个新版本均采用了本文所讨论的IO通信优化机制并且在多个国家的现用局上线使用, 包含法国, 德国, 意大利, 土耳其, 卡塔尔和马来西亚等国家。
目前, 很多开发商所已经开始研究和使用扩展操作系统方案, 除了Evolium 3G RNC, 日本最大移动通信运营商DoCoMo公司相关项目也采用了包含IO通信优化机制的扩展操作系统方案, 在不久的未来包含IO通信优化机制的扩展操作系统方案将成为一个高弹性的中间件。
摘要:无线网络控制器 (RNC) 是3G通用移动通信系统 (UMTS) 中的主要网元, 是接入网络 (UTRAN) 的组成部分, 负责移动性管理、呼叫处理、链路管理和移交机制等等。RNC是一个多板卡构成的多处理机系统, 其内部的IO通信机制是衡量RNC性能的重要指标。因此, 如何设计和实现一个安全稳定的IO通信机制, 已经成了各通信开发商研究的重点之一。本文以此为课题, 讨论IO通信机制的优化与实现。
关键词:RNC,优化,IO通信,主备用,切换,网络
参考文献
[1]周明天, 汪文勇.TCP/IP网络原理与技术[M].清华大学出版社, 2005.
[2]吴旭光, 何军红.嵌入式操作系统原理与应用[M].化学工业出版社, 2007.
电子测量仪器IO模拟器设计 篇4
自动测试系统经常使用各种电子测量仪器进行系统集成。由于订货周期限制, 这些仪器可能要到系统集成的后期才能到货, 因此软件系统被迫延迟到到货后才能进行与仪器设备进行联调。由于联调中发现的问题引发的设计更改, 将大大延缓系统交付的时间。
通过预先得到的技术资料设计IO模拟器, 模拟实际设备的IO响应, 可以在仪器设备到货前开始与软件系统的联调。另一方面, 开发人员常常需要并行进行系统和分机调试, 采用模拟器也可解决实际设备数量限制问题, 提高系统开发效率。
本文提出的I O模拟器, 根据输入IO数据流进行状态转换, 并由当前状态实现模拟数据输出。由于采用文本格式的自定义数据文件控制模拟器实例化过程, 测试系统内可以同时模拟多种不同测量仪器的IO响应, 并具有良好的可扩展性。
模拟器工作原理
如图1所示, 应用程序的IO操作由虚拟IO驱动程序传递入模拟设备。IO模拟器通过加载描述设备工作模式的数据文件实现设备IO行为仿真。当物理IO驱动与虚拟IO驱动程序继承于同一个父类时, 应用程序可以通过配置驱动程序在运行时进行物理设备IO与模拟设备IO的动态切换。对实际设备的写入操作就自动转发给模拟设备, 并由模拟设备对读出等操作进行响应, 返回相应数据流到应用程序。
IO模拟器根据数据文件实现一个用户定义的有限状态机。如图2所示:继承自抽象基类 (IOManager) 的VISimulator类用于实现IO模拟器。将模拟器替代实际IO管理器对象 (VisaIOManger) 进行配置后, 模拟器将截获上层应用程序发出的IO指令, 并模拟实际设备进行响应。
VISimulator的成员states为模拟器可用状态表, variables为变量表, current为当前状态。状态表是状态类 (VIState类) 对象的集合, 变量表为变量类 (VIVariable类) 对象的集合, 变量值可用于状态和变量值的入口检查及计算。
当写入操作 (Write) 发生时, 模拟器遍历所有的变量及状态, 检查其入口条件 (entrance) , 对符合入口条件的变量, 更新 (U p d a t e) 变量值 (value) 。如符合状态入口条件, 则将该状态设置为当前状态。对于当前状态, 还需检查其出口条件 (exitus) , 如符合则设置当前状态为空。
当读出操作 (Read) 发生时, 模拟器由当前状态的模拟方法 (Simulate) 计算并返回模拟实际测量结果的数据。如当前状态设置读操作为出口条件, 则模拟器在读出完成后返回空闲状态。如当前状态为空或非可读状态, 模拟器将按照变超时设置延迟后返回无效数据, 真实地模拟IO指令序列错误造成的测试过程现象。
Vi Simulator的Load方法用于数据文件装入, 由数据文件的描述建立状态表和变量表。由状态和变量的静态方法Parse完成解析并返回实例对象。
实现及模拟结果
笔者在实际测试系统开发过程中设计了前述模拟器, 并根据仪器程控手册编写Agilent公司的HP8753E和E5071C等矢量网络分析仪的数据文件, 实现了对这些实际仪器IO功能的模拟。下面以HP8753E电压驻波比测量为例详细介绍IO模拟器实现方法。
矢量网络分析仪用于测量射频元件的端口特性, 常用于测量端口电压驻波比、衰减、阻抗等参数。因此其测量结果就包括多种格式不同的数据组合。当用HP8753E进行电压驻波比测试时, 网络分析仪会返回一个坐标数组, 坐标的两维分别是驻波测量值和测量频率。
根据H P 8 7 5 3 E程控手册定义状态SWRWaveform用于模拟电压驻波比测量状态:
以上文本描述了状态的工作模式, 当在写入数据流中检测到字符串outpform时, 如模拟器变量表中变量Format=swr时模拟器进入状态SWRWaveform。此时如收到读出指令, 模拟器将由SWRWaveform状态模拟输出电压驻波比波形, 返回一个101点的两维坐标数组, 其中X为1到1.1之间的随机数, Y为从模拟器变量表中变量StartFreq到EndFreq的线性递增数值。
图3为测试系统由模拟器实际得到的测量波形, 模拟器根据IO数据流正确地进入了SWRWaveform状态, 并以正确的频率范围返回了仿真数据。
结语
本文介绍的模拟器适用于文本格式的控制指令集, 在电子测量系统开发过程中已得到了验证和实际应用。
摘要:本文介绍一种电子测量仪器IO模拟器实现方法。以网络分析仪HP8753E为例讨论了模拟器的部分实现细节及模拟结果。
关键词:仪器,IO模拟器,状态机,网络分析仪
参考文献
[1]. Meilir Page-Jones, UML面向对象设计基础, 人民邮电出版社, 2001.4
IO驱动 篇5
传统的Web信息交互应用通常是客户端浏览器向服务端发送一个请求, 服务器端接受到请求然后相应客户端返回消息, 然后客户端显示这些消息所含信息。这种信息交换方式对那种实时性要求不是很高的应用来说没有太大的影响, 而对于那种实时性要求很高的应用, 如在线游戏, 各类协同应用, 实时监控, RSS订阅等, 客户端在收到这些消息的时候可能消息已经不是最新的, 所以保持信息的同步性是构建Web实时应用的难题。
Web Socket技术出来之前, 开发人员想要实现实时应用主要采用轮询 (Polling) 和Comet技术, 而Comet技术本身就是轮询技术的一种改进, 这些技术在性能表现上或多或少都存在缺陷。HTML5 WebSocket的诞生就是为了取代以上两种技术, 该技术通过客户端的Java Script脚本与服务器发送连接请求, 连接建立之后, 客户端就是可以通过TCP协议直接交互数据了。因此, Web Socket本质上是由TCP协议完成传输的。
当前的B/S架构的协同应用 (如协同标绘, 协同文档编辑等) 也主要是采用以上两种方式来完成数据的推送, 在实时性上很难保证。本文研究将Web Socket引入广域网络环境中分布式实时协同应用研究中, 基于Node Js编程技术, Web Socket的库Socket.io, 结合本部门的Web图形服务支撑接口和地图的Web GIS服务, 研究和实现了一个简易的Web环境下的协同标绘系统[1]。
1 基本概念和介绍
1.1 Web Socket简介
Web Socket的出现是为了满足Web环境中日益增加的实时通信需求。在传统的Web环境中, 要实现实时通信, 通用的方式是采用HTTP协议不断的发送请求。但这种方式有一定的缺陷, HTTP的头部 (header) 比较大, 又占用服务端的资源 (即使没有任何信息也需要接受请求) 。而采用Web Socket技术, 则会大幅降低上所提到的消耗, 如图:
在Web Socket的API中, 浏览器和服务器只需要做一个握手的动作, 然后, 浏览器和服务器之间就形成的了一条快速通道。然后两者之间的就可以直接互相发送数据。在Web Socket协议中, 为我们实现实时应用带来了两大好处:1.更小的header, Web Socket的header大概只有两字节左右。2.服务器端推送, 服务器可以主动推送数据给客户端[2]。
1.2 Socket.io简介
Socket.io是Node JS下的一个实现Web Socket的Java Script库, 它可以在不同的浏览器和移动设备上实现实时应用。Socket.io会自动的根据浏览器从Web Socket, AJAX长轮训, iframe等等各种方式中选择最佳的方式来实现网络实时协同应用, 非常方便和人性化, 而且支持的浏览器的最低达IE5.5, 应该可以满足大部分需求。Socket.io可以用来做实时分析 (Real-time Analytics) , 二进制数据流传输包括图片、音频、视频, 即时消息、聊天对话, 和文档协同。
1.3协同应用的技术要素
1.信息对称性
信息对称性也叫信息同步性, 应用必须同步多个客户端的数据变化。
2.上下文明确
能够针对特定对象更新数据。
3.可持续运行
应用能够缓存必要的数据, 应对各种各样的网络状况[3,4,5,6,7]。
2 协同标绘应用的设计
2.1 协同模型的选择
实时协同设计有两种基本模型:集中式模型和复制式模型。在集中式模型中, 协同工作的参与者“同时”使用安装在某一站点的上的应用软件, 其他站点显示与该站点一样的用户界面。同时该站点也接受其他站点对应用的操作。在复制模型中, 协同工作的各个站点都运行程序的一个拷贝, 各站点将用户操作广播到其他站点, 使其做出相同的处理的操作。基于实时性考虑, 和Web图形接口是服务化的特点, 这里我们选择复制式模型。在这种模型下, 各个站点都有一份运行程序的拷贝, 数据传输只是程序的“执行命令”, 消息内容涵盖比较小, 这样可以减少数据的载荷[8,9,10,11,12]。
2.2协同标绘系统的结构框架
如图:
上图中客户层, 客户端主要有事件监听器, 事件触发器, 事件控制器, 事件缓存器这样几个事件功能模块。客户端与服务端通过Socket.io与协同服务器传递消息, Name Space是一个模块命名空间, 客户端通过Socket.io创建了一个与协同服务器的一个Web Socket长连接进行消息传递, 在这个连接对象后面加上不同的服务器端模块名称就可以向服务器端不同的模块触发消息, 不同的连接对象又由一个Socket.io的对象来保存着, 用户处理客户端发来消息。通过协同服务器端返回的数据, 再请求对应的图形服务, 就可以完成同步。在各个命名空间下客户端也对应着不同的连接对象。这样命名空间的划分不仅是为了系统的模块分离, 同时, 一个连接对象也对应着一个TCP连接, 这样也可以尽可能减少TCP连接的数目。
2.3 客户端与服务器交互
客户端在Web GIS加载完毕后, 便会绑定需要监听的协同事件, 比如标号的创建, 删除, 选中编辑标号属性等, 事件发生后, 首先会把事件的数据打包成消息推进消息队列 (也就是事件缓存器) , 并在事件监听器中监听该消息的返回确认, 表明该“事件”已经同步到其他协同用户, 系统流程图, 如图:
事件控制器主要就是为了保证协同用户间的事件发生时序, 事件控制器采用Deferred的异步模型。Deferred是一个双链参数加工的参数流水线模型。双链是指它内部把回调分成两种, 一种叫做成功回调, 用于正常时执行, 一种叫错误回调, 用于出错时执行。各自组成两个队列, 这里姑且叫成功队列与错误队列。添加回调时时一组一组的添加的。每组回调的参数都是上一组回调的处理结果, 当然只有第一组的参数是用户传入的。说的是流水线, 是说每个回调可能不是紧挨着执行, 有时需要消耗时间。如图:
2.4 协同标绘消息设计
整体上来说, 协同消息的结构分为消息标识, 消息数据。这两者合成一个JSON对象简单的结构就是:var mes={mid:……, data:……}。
2.4.1 消息标识
消息标识主要有三个类型:1、事件标识, 用于区分事件;2、用户标识, 用于区分用户;3、用户组标识, 用于区分用户组。
用户触发事件的时候会生成一个日期对象var t=new Date () , 然后用t.get Time () 来获取一个13位的大整数作为事件标识。这个整数是距1970 年1月1 日之间的毫秒数。标识本来是没有大小的含义的, 以毫秒数作为标识的好处就是可以利用标识的大小来确定事件的发生次序。
Socket.io的每个Socket.io的连接对象都包含一个id属性, 这个属性是一个20 位随机字符串, 并且是唯一的。参考官方给的例子:http://socket.io/demos/chat/, 它便是以Socketid这个属性来区分用户。实际测试过程中发现当浏览器刷新的时候Socket.io会先触发自身的disconnect事件, 然后再重新连接, 然后这时候id的属性会改变加一, 如果以这个作为标识, 考虑到如果用户刷新浏览器这种情况会比较麻烦, 会增加许多多余的操作。所以这里是定义一个20 位的随机字符串作为用户id。
用户组标识比较简单, 由用户创建协同过程的时候确定, 创建协同过程的时候同时在Socket.io中创建对应的room, 这样的一个room可以称作一个协同空间, 是协同活动的发生的“容器”, 用户连接的时候可以用连接对象的join () 方法把用户安置在这个空间。
2.4.2 消息数据
消息数据内主要是用来发送用户触发事件内的标号的数据信息, 该数据信息根据不同的事件类型, 可能包括标号的生成代码, 标号的位置信息等
2.5 协同应用前端设计
Back Bones是一个轻量级的前端MVC框架, 用于结构化管理页面中大量的Java Script, 建立与服务器、视图间的无缝连接, 为复杂应用提供基础的框架。Back Bones最适合的应用场景是单页应用, 并且页面上有大量的数据模型, 模型之间需要进行复杂的信息沟通。
在构建Web协同标绘应用中, 页面中有着大量的数据模型, 这些数据实时改变, Back Bones无疑是一个很好的选择, 它可以帮助我们很好的存储用户的数据模型, 检测数据的变化, 渲染视图。
2.6 网络情况处理
网络情况复杂性就需要系统有断线重连这个功能, 由于socket.io自身的事件中没有“reconnect”这个事件, 所以在socket.io的基础上重新封装一个对象用于处理各种网络情况, 主要的思路就是在服务端在增加一个计数器count, 统计连接的次数, 每次连接后count加一, 根据count来返回不同的数据。
3 效果展示
该应用采用Node Js作为服务端, 客户端是运行在浏览器里面的HTML文件。环境准备:windows XP系统, 在Node Js官网 (nodejs.org) 上下载最新的windows 32 位node-v0.12.3-x86.msi并安装. 并用Node Js包管理工具NPM (Node Js Package Mannager) 安装Socket.io的模块。此外, 客户端的HTML文件还需要引入Java Script文件socket.io.js。
效果展示, 红蓝双方的标注如图:
4 结束语
本文简要说明了, 如何采用Socket.io等技术来构建一个协同应用, 应用功能还不算很全面, 需要进一步完善流程控制, 权限控制等方面的问题。
参考文献
[3]马芳芳. (2011) .基于xml的态势图协同标绘系统设计与实现.计算机与数字工程, 39, :51-53.
[4]武严严, 王玉玫.基于以活动为中心的协同标绘集成系统[J].计算机工程与设计, 2009, (22) :5248-5252.
[6]张俊升.在分布环境下态势图协同标绘系统设计与实现[D].华中科技大学, 2004.DOI:doi:10.7666/d.y693117:65-71
[8]莫磊, 胥布工.基于分布式估计及任务分配的WSANs协同机制[J].新型工业化, 2013, 3 (12) :15-27.
[9]张翀, 王彦恺.航天器编队姿态与轨道耦合协同控制器设计[J].新型工业化, 2014, 4 (8) :30-36.
[10]何美荣, 郑玉甫, 李敏之, 等.协同网络编码系统中最优伙伴选择算法的研究[J].新型工业化, 2012, 2 (7) :30-35.
[11]刘兴华, 奚宏生.视频业务的分布式协同接入控制建模[J].新型工业化, 2013, 3 (1) :68-78.
IO驱动 篇6
传统的硬盘在IO时, 磁头需要来回移动以定位读写位置, 所以在做顺序读写操作时效率较高, 执行随机乱序读写时效率较低。而对于闪存类存储设备, 随机读写和顺序读写基本没有速度区别。闪存设备在执行写操作时较为特殊, 闪存设备不能像磁盘设备那样, 在已有数据存在的地方直接重写。对于SD卡而言, 如果需要进行写操作, 不能在单个数据单元上直接进行, 而是要先将整个块上的数据全部擦除, 然后将包括修改后数据的一整块重新写入。正是由于传统硬盘与闪存类设备的IO原理存在大的差异, 使得Linux内核原本针对磁盘这种存储设备所做的一些默认设置并不适用于闪存设备, 比如:针对磁盘设备而默认选择的IO调度策略, 对于闪存设备而言, 性能并不是最优的。
本文首先对Linux内核存储IO[1]过程进行分析, 提出了存储IO调优方案, 包括文件预读取、IO调度策略、EXT4文件系统3个方面的优化, 最后基于OMAP4平台环境进行测试并分析。
1 Linux存储IO
对Linux系统存储IO性能进行优化需要充分理解整个IO流程, Linux系统IO子系统体系架构如图1所示, 对于用户空间进程的读写操作, 需跨越虚拟文件层 (VFS Layer) 、页缓存层 (Page Cache) 、通用块层 (Block Layer) 、IO调度层、设备驱动层和物理设备层[2], 以write () 操作为例的Linux内核IO流程如下所述: (1) 用户进程通过write () 系统调用请求向文件中写入数据。 (2) 内核更新文件相关的页面缓存。 (3) Pdflush内核线程负责将页面缓存内容回写到磁盘。 (4) 文件系统层将缓存块组织成BIO, 并将写请求提交给块设备层。 (5) 块设备层接收到写请求, 据IO调度策略, 将IO请求放入请求队列中。 (6) 调用设备驱动直接操作物理存储设备完成最终的写操作。
参照Linux系统IO子系统的层次结构[3], 文中针对每个层次所执行的具体操作, 对内核参数进行调优, 主要包括虚拟文件系统层次页缓存、通用块层IO调度策略与文件系统本身3个方面进行了优化。
2 优化方案
2.1 页缓存
Linux内核会将最近访问过的文件页面缓存在内存中, 这个文件缓存被称为页缓存。来自用户进程发起的read () 操作发生在应用程序提供的缓冲区与页缓存之间, 而预读机制则负责填充页缓存。用户进程的读写数据缓冲一般都比较小, 比如, 文件拷贝命令cp的读写缓冲粒度就是4 k B。内核的预读算法则会以其认为更合适的大小进行预读I/O, 比如16~128 k B。Linux内核页缓冲的预读算法工作流程如下[4]:
(1) 顺序性检测。只针对顺序读操作采用预读算法。
(2) 流水线预读。当程序在处理一批数据时, 希望内核能在后台把下一批数据事先准备好, 以便CPU和硬盘能流水线作业。
(3) 确定预读粒度。Linux采用一个快速窗口扩张算法确定预读粒度大小。首次预读:readahead_size=read_size*2 (或readahead_size=read_size*4) , 后续预读:readahead_size*=2;后续的预读窗口将逐次倍增, 直到达到系统设定的最大预读粒度大小, 其缺省值为128 k B。
通过调整Linux内核参数“/sys/block/mmcblk0p3/bdi/read_ahead_kb”, 修改文件预读取粒度上限, 测试闪存设备读取数据的性能, 确定最优的参数设置。
2.2 IO调度策略选择
通用块层I/O调度器的作用是为上层应用的IO请求做优化处理, 主要完成请求合并与分类, 以达到提高系统吞吐量、缩短响应时间的目的。进行合并和分类的原因在于:传统硬盘作IO时的寻道开销很大, 如果能对相邻物理地址的请求顺序作优化, 则可大幅提高读写性能。I/O调度器的调度策略包括[5]:
(1) 完全公平队列 (CFS) 。实现了请求的合并和分类。每个进程的IO请求形成一个队列, 这个队列是对寻道地址进行排序, 尽量减少寻道时间。
(2) 最后期限 (Deadline) 。实现了请求的合并和分类, 然后为每个请求分配一个超期时间, 这样就避免了某个请求被饿死的情况。
(3) NOOP。按照简单的FIFO方式管理请求, 仅简单实现了合并而没有分类操作。
Linux系统针对传统磁盘默认选择了CFS调度策略, 并且性能相比其他两种调度策略有很大的优势, 但随着闪存存储设备的出现, 针对寻道时间所做的种种优化失去意义, 而且尝试进行优化操作所带来的开销反而对IO性能带来负面影响。针对闪存设备, 调整Linux的内核参数“/sys/block/mmcblk0/queue/scheduler”, 选择不同的调度策略进行对比测试, 找出针对闪存设备性能最优的调度策略。
2.3 文件系统分区对齐
对于SD卡这类常用闪存设备而言, 如果需要进行写操作, 不能在单个数据单元上直接进行, 而是要先将整个块上的数据全部擦除, 然后将包括修改后数据的一整块重新写入。在SD卡上创建文件系统时, 如果文件系统分区的边界未与闪存擦除块对齐, 那么数据很可能就会跨越两个相邻擦除块的边界, 对于写操作, 就要涉及到两个块的擦除操作, 严重降低了SD卡的写性能。文中在SD卡上建立分区对齐文件系统, 并进行对比测试。
(1) 使用Flash Bench工具测试SD卡擦除块大小本文使用的SD卡擦除块大小为4 MB。
(2) 分区对齐。根据擦除块大小, 在SD卡上创建分区对齐的文件系统, 文中采用ext4文件系统Mkfs.ext4-o^has_journal-b 4096-L rootfs/dev/mmcblk0p1
(3) 结果测试。为测试分区是否对齐对SD卡读写速度的影响, 为了有较明显的对比效果, 本文采用的测试数据大小为16 MB。具体操作如下:
3 测试与结果分析
测试环境为OMAP4 Pandaboard ES[6], 是基于德州仪器OMAP4460片上系统开发的低功耗、低成本的单板计算机, 系统配置ARM Cortex-A9 MPCore双核处理器, 使用金士顿SD卡作为存储设备 (容量为8 GB, 速度等级为Class 4) , 操作系统采用Fedora17, 测试工具为FIO[7]。首先在采用内核默认参数的情况下, 对SD卡的IO性能进行测试;然后根据SD卡的存储原理与特性, 参照上述方案有针对性地对内核参数做出调整, 并进行对比测试。
页缓存大小调优测试[8]结果图3和图4所示, “read_ahead_kb”对于顺序读操作的性能影响较大。当从默认值128改为512时, 性能提升了20%以上。该参数调整对随机读操作无效。
不同调度策略测试结果如图5~图7所示, noop和deadline的调度方式相比cfq表现出更好的性能。对于智能终端, 文件操作的进程并发度不高, 建议用deadline。
SD卡分区对齐测试结果如图8所示。SD卡制作文件系统时采用分区对齐方式, 写入速度提高至未对齐时的3.4倍。
4 结束语
针对移动终端系统存储IO的典型环境, 提出了存储IO调优方案, 包括文件预读取、IO调度策略、EXT4文件系统3个方面的优化, 并基于OMAP4平台环境进行测试。实验结果表明, 本文提出的调优方法能明显提升系统存储IO的性能。所提出的调优方法对移动终端的系统配置优化具有较强的指导意义, 可提升移动终端系统的存储设备IO性能。
参考文献
[1]Robert Love.Linux内核设计与实现[M].陈莉君, 康华, 译.北京:机械工业出版社, 2011.
[2]赵健博.Read系统调用剖析[EB/OL]. (2008-03-13) [2013-12-01]https://www.ibm.com/developerworks/cn/linux/l-cn-read.
[3]GERO S.DS8800 Performance Monitoring and Tuning[M].USA:IBM, 2012.
[4]中国IT实验室.Linux内核的文件预读详细解析[M].北京:中国IT实验室, 2009.
[5]Kreindler.I/O SD card speed tuning[EB/OL]. (2013-5-15) [2013-12-01]www.ibm.com.
[6]System Reference Manual, Schematics Pandaboard.OMAP4460pandaboard ES system reference manual[EB/OL]. (2011-9-29) [2013-12-01]http://pandaboard.org.
基于IO板卡的高仿真虚拟机械手 篇7
传统的PLC实验箱输入输出都靠用按纽, 用发光二极管等电子元件对控制对象进行模拟。在实际教学中存在以下缺点:
(1) 形象不直观, 难以激发学生的兴趣;
(2) 仿真度不高, 不能仿真一些复杂的控制对象, 特别是涉及到模入模出的闭环控制, 如PLC的典型控制对象——变频恒压供水系统及电梯控制等;
(3) 由于传统实验箱靠PLC外接实验电路板进行仿真, 无法对其进行功能扩充和改动;
(4) 学生无法对进行PLC的接线操作, 由于传统实验箱的接线已固定于实验板上, 仅靠输入输出端子部分的跳线难以让学生搞清PLC全系统的接线情况。
针对传统实验箱的以上缺点, 开发以PC机和PLC的通信为基础的虚拟的仿真实验系统是必然发展趋势。该系统基于组态软件, 能完成目前PLC各类教材中所有典型实验及部分实际工程的高度仿真, 系统具有以下优点:
(1) 仿真度高。本系统可结合工程实践, 将典型控制对象的各控制环节的实际产品参数和系统参数仿真在计算机中, 实现对实际工程的真实模拟。
(2) 形象直观。利用PC机丰富的软件资源, 可在上位机上仿真出各控制对象对应的声音、图像、动画及各模拟传感器、执行器的实时运行参数等, 大大改善了教学条件, 且极易激发学生的学习兴趣。
(3) 节省经费。由于本系统本质是计算机软件模拟的虚拟仪器和对象, 不需配置各类传感器、执行器, 更不需购买或制作典型对象的实物模型, 可大大节省宝贵的实验经费。
(4) 易升级, 易移植。系统本质是计算机软件, 因此可随时根据教学内容进行修改和功能扩充, 且在一般个人PC上都能使用。
(5) 可培训学生的PLC接线能力。本系统可在界面中提供接线操作模块, 如学生接线错误, 则界面中控制对象亦显示错误的运行结果或出错提示。同时, 如对实际控制对象的仿真度作进一步升级后, 可作为特定对象的辅助设计及技工培训工具。
2 系统介绍
操作者首先在本系统提供的界面中进行PLC的模拟接线, 然后在PLC编程软件中进行编程。当PLC运行所编程序后, 运行结果将通过串口送入PC, 直接对控制对象的动作进行控制, 控制对象的动作将以高度仿真的多媒体方式在PC机上显示出来。
系统如图1所示, 前三块构成了该虚拟仿真系统的被控对象, PLC控制被控对象, 研华I/O板卡发出信号通过电平转换让PIC接收到信号, 实现了与真实被控对象的连线, 再由装有组态王软件的计算机显示被控对象, 实现高度仿真的实验效果。
2.1 I/O板卡 (研华4711A) 的介绍
USB-4700系列包括即插即用数据采集模块, 因此无需再打开计算机机箱来安装板卡。仅需插上模块, 便可以采集到数据。它在工业应用中足够可靠和稳定, 却并不昂贵。USB-4700是增加任何带有USB端口的计算机测量和控制能力的最佳的途径。本系统使用的USB-4711A是完全的即插即用设计, 具备支持USB 2.0、16路模拟输入通道、12位分辨率、采样速率高达150k S/s、8路DI、8路DO、2路AO和1路32位计数器等特点, 它通过USB端口获得所有所需的电源, 无需外部的电源连接, 非常便于使用。
2.2 转换电路的介绍
由于所使用的PLC最低响应电平大于3.3V, 但从研华USB-4711A所发出的电平只有3.3V, 所以必须将该电平转换或者放大至PLC能够响应的电平, 故使用三极管来转换该电平信号。
该电路板所使用的是9018的NPN型三极管和10K的电阻通过三极管转换电路使电平信号转换, 如图2所示。
3 虚拟机械手系统设计
本系统设计以实际工程应用中的机械手为例, 最终设计是让PLC通过I/O板卡对被控对象 (虚拟机械手) 实施控制, 完成和真实条件下一样运动过程。最终实现效果图如图3所示。
3.1 连接设备定义
在“COM1”下新建设备, 出现设备配置导向, 选择智能模块子类下本系统使用的研华PCI板卡USB4711系列。在选择串口号, 暂且选“COM1”, 设备地址应当是PLC通信的远程地址, 通信参数默认。这样就创建了一个新的设备, 并且可以在工程浏览器中查看到。
3.2 定义变量
部分变量定义如下界面:
变量类型为I/O离散, 连接设备为新I/O设备, 寄存器根据PLC程序中的设计定义成相应位置, 数据类型为Bit位数据, 设为只读 (显示监控) 。
3.3 命令语言
为了让监控画面和实际工程应用相符, 必须有命令语言与其配合, 在组态画面中的部分命令语言如下:
if ( (工件1水平位置<100) &&标志位==1)
{工件1水平位置=工件1水平位置+10;
工件1垂直位置=工件1垂直位置+10;}
if (!传送带驱动&&传送带旋转角度<360)
{传送带旋转角度=传送带旋转角度+10;}
else{if (!传送带驱动&&传送带旋转角度==360)
{传送带旋转角度=0;}}……
if (工件夹紧状态==1)
{工件水平位置=机械手水平位置;工件垂直位置=机械手垂直位置;}
if (工件1水平位置==100&&工件1垂直位置==100&&工件水平位置==0&&工件垂直位置==100) {LS0=1;标志位=0;}else{LS0=0;}……
4 虚拟机械手仿真实验系统的调试
设备测试完成后, 将编写的程序下载到PLC中测试并反复调试。部分PLC梯形图如下:
在PLC的控制下被控对象 (虚拟机械手) 有序的按要求进行每一步动作。
5 结束语
通过实验比较得到如下结果:
从结果可以清晰地看出, 本系统的虚拟高仿真实验系统的优越性远远超过了传统的实验设备, 具有非常广泛的实用性。
摘要:在现在传统的PLC仿真实验系统中, 实验系统存在形象不直观, 仿真度不高, 特别是一些复杂的控制对象, 或涉及到模入模出的闭环控制, 大多采用实物构建小型实验系统, 但存在投资较多、占地较大等诸多缺陷和不足, 无法保证每个操作者进行操作, 最后变成仅供演示使用, 无法升级。文章系统以机械手为例, 充分利用PLC、I/O板卡以及组态软件的优点, 设计一个全新的虚拟仿真实验模式, 使学生能更好地培养和发挥学生良好的动手能力, 以及能够直观的感受真实的实验系统, 从而达到与真实的机械手接线一致的高仿真的虚拟实验系统。
关键词:PLC,机械手,虚拟仿真实验系统
参考文献
[1]汪志锋.可编程序控制器原理与应用[M].西安:西安电子科技大学出版社, 2008.
[2]张建民.机电一体化系统设计[M].北京:高等教育出版社, 2010.
[3]苗常初.PLC编程及应用[M].北京:机械工业出版社, 2013.