电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

I/O系统论文

来源:莲生三十二作者:开心麻花2025-11-201

I/O系统论文(精选10篇)

I/O系统论文 第1篇

随着微电子工业和半导体加工技术的不断发展,集成电路的规模不断增大。这使得将复杂系统集成在单个芯片上成为可能,于是便出现了片上系统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.

I/O系统论文 第2篇

介绍了计算机联锁系统利用工业总线构成通信网络,实现了CPU与控制模板在物理上分开.实现集中联锁分散控制的.功能.并阐述了系统优势.

作 者:张大涛 Zhang Datao  作者单位:中冶京诚工程技术有限公司信号与通工程技术所,100176,北京 刊 名:铁道通信信号 英文刊名:RAILWAY SIGNALLING & COMMUNICATION 年,卷(期):2009 45(2) 分类号:U2 关键词:计算机联锁系统   工业总线   集中联锁分散控制  

★ JAVA的文件类和I/O系统简介Java

★ A/O工艺处理某矿区生活污水运行实例

★ Lon总线多点I/O智能节点的开发

I/O系统论文 第3篇

关键词:汽车装配生产线;PLC;远程 I/O

中图分类号:U468 文献标识码:A 文章编号:1005-2550(2016)05-0091-04

Abstract: To meet the practical demand of collecting and managing producing information in auto assembly line, the paper gives the solution based on PLC I/O and practical implement measures. In order to remove the fault on time and master the dynamic of producing condition, we can receive the help signals from every workplace in assembly line, apply for display of the alert information of Stagnation fault, the producing time in assembly line, the yearly monthly or daily producing plan, and producing information of current schedule, by using of assembly line information system consisted of SIEMENS, S7-200, S7-300PLC, IPC, LED screen. According the system mentioned in the solution, we can pick up system information in time, display information intuitively and save information perfectly.

Key Words: Auto assembly line; PLC; long-distance I/O

1 引言

汽车装配生产线是整个汽车生产线的重要组成环节,除了生产线基本自动控制之外,还需要获得一些对生产的动态调度、设备故障及时排除和频发故障设备的及时检修和更换所需要的动态生产信息,如装配线生产节拍、年月日生产计划、当前计划进度、当前实际完成情况、装配线上各工位申请求助、故障报警和数据统计等,这些信息及时且有效地反馈对保障汽车生产数量和质量具有重要意义[1]。然而,汽车装配线通常具有几百米长的距离,若对沿装配线分布的各采样监控点采用单一主控制器集中采样控制,现场将需要铺设大量信号线缆,造成系统结构臃肿、呆板,不便于日后系统检修和系统扩展。为此,系统基于SIEMENS S7-200、S7-300PLC和IPC、LED大屏幕和SIEMENS WinCC6.2 组态软件,实现了汽车总装生产线生产信息监控及报警系统的设计。

2 系统设计

基于PC的操作员控制和监视系统正处于快速发展阶段。西门子公司的SIMATIC? WinCC,是运行于Windows系列操作系统环境下的Windows控制中心,它可将PLC控制、数据处理、通讯、可视化集成于一台PC机上,非常适合于基于个人计算机的生产过程数据采集与监视控制系统[2]。

为此,系统利用SIEMENS S7-200PLC、SIEMENS S7-300PLC、PROFIBUS现场总线、MPI网络、工控PC机及5块2平方米单色LED显示屏,构建了基于PLC远程I/O的汽车装配线生产信息系统的硬件环境,并利用SIEMENS WinCC6.2监控软件编程完成了工况显示画面的设计,系统结构如图1所示:

本系统总装生产线共有68个工位,配置11台SIEMENS S7-200 PLC分组控制。S7-200 PLC由CPU224和EM277 PROFIBUS-DP接口模块构成,负责将各工位的生产状态采样后通过PROFIBUS-DP总线送至主控室内SIEMENS S7-300PLC。S7-300 PLC采用CPU315-2 DP,其内部配置的两个通讯接口分别用于与PROFIBUS-DP和MPI网络连接。S7-300 PLC将所有工位采样信息做相应处理后通过MPI网与工控PC机进行数据通讯[3]。

系统中生产信息实时动态显示体现在中控室中的工控PC机和分布在装配车间内的5块LED大屏幕上,其结构如图2所示:

显示画面的生成利用运行在WindowsXP环境下的SIEMENS WinCC6.2监控软件编程完成,LED发送卡将LED显示窗口的扫描值通过网线传送至各LED显示屏接收卡,由接收卡解析后送至控制卡形成生产信息的LED点阵显示[4]。

3 系统实现

3.1 数据通信

S7-200 PLC与S7-300 PLC的数据通信系统采用PROFIBUS-DP现场总线完成,S7-300 PLC与工控PC机的数据通信系统采用MPI网络完成。

ROFIBUS-DP现场总线在S7-300 PLC上进行组态[1][2][5],其拓扑结构设计如图3所示。此结构下将S7-300 PLC设置为PROFIBUS-DP主站,站号定义为2;各S7-200 PLC设置为PROFIBUS-DP从站,站号分别定义为3-13。

从站PLC(S7-200)编程将各工位现场采样信号映射到组态的V存储区内,由EM277接口模块通过PROFIBUS-DP供主站PLC(S7-300)远程读写。IPC选配SIEMENS CP5611通讯卡,采用MPI网络通信协议由WinCC6.2监控软件变量管理器编程完成与S7-300PLC的数据通信[5]。

3.2 主站PLC

主站PLC(S7-300)由一块CPU315-2 DP和一块电源模块组成,完成该系统的所有逻辑编程和生产信息加工。它除了完成生产线现场信号的远程读取外,还对各工位提出的停线申请信号进行响应,通过PROFIBUS-DP向S7-200控制器输出停线控制信号。同时,根据车辆下线计数自动完成产量的年累计、月累计和当日当前产量累计,并根据装配线生产节拍自动计算当日当前计划进度。这些生产信息显示在LED大屏幕上给生产管理人员实时动态掌握生产情况提供了直观有效的手段。为正确反映当日实际产量与计划进度的比照情况,系统采用WinCC变量与PLC当前计划进度定时器连锁,即当WinCC装配线工况显示窗口选取停线休息、停线待料等文本列表项时停止计时,以避免非生产线原因造成计划进度数量增长而出现实际产量与计划进度的差距。连锁处理程序主要逻辑如图4所示:

3.3 监控系统

本系统监控系统组态主要包括监控系统画面组态和报警系统组态,利用SIEMENS WinCC6.2监控软件编程完成。监控系统画面组态利用图形编辑器绘制组态画面、定义控件属性和利用变量管理器建立变量标签,实现WinCC控件属性值与S7-300 PLC Step7程序数据区的动态链接。报警系统组态利用Alarm Control报警控件生成报警窗口,完成对各种报警的触发条件、报警文本和报警显示格式的配置,并实现实时和历史数据的显示。监控系统组态如图5所示:

主画面由LED显示屏扫描窗口、报警记录显示确认窗口、各工位运行状态图示区和相关操作命令按钮组成。其中LED显示屏扫描窗口分生产基本信息显示部分和装配线当前状态动态显示部分,后者用来显示最新发生的报警信息、正常运行和因何种原因停线的装配线当前状态信息。此窗口信息在LED大屏幕上向现场全体工作人员实时发布,以期相关人员及时作出对生产的动态调度、对设备故障的及时排除。此外,在LED显示屏扫描窗口内可显示即时输入的临时信息供LED显示屏满屏大字醒目显示,即时发布临时信息的内容在系统提供的PPT模板中录入。系统还另配有独立的报警信息画面,用以显示报警历史记录。

WinCC内部集成了ANSI-C脚本语言系统,根据WinCC报警事件的到来和离去利用Time函数获取报警起始时间和结束时间,并与求解的持续时间和报警工位号形成一条记录记载在以日期为单位格式为.TXT的工作日志中。编程实现查询浏览以日期、时间、工位号、报警类型排序所有工位发生的每条报警记录和总累计持续时间以及某一工位在一段时间内所发生的每条报警记录和总累计持续时间,并可生成文件打印。此信息对生产管理人员及时定量了解装配线设备故障或待料停线的发生地点、发生频率、停线时间以便频发故障设备的及时检修和加强物流管理十分重要。

4 结束语

采用现场总线传输方式,不但大大降低了系统搭建线缆敷设和日后线缆检修成本,而且系统配置灵活,可随工艺要求方便地增减PLC子站的配置数量。同时,PLC子站除了与PLC主站实现远程I/O外,它还可根据现场工艺要求编程独立承担局部控制任务。因此,在长距离PLC集中监控系统中采用远程I/O方式是上佳选择。

参考文献:

[1]路泽永,李立华,冷向东. 汽车装配线中的信息化和网络化建设[J]. 可编程控制器与工厂自动化. 2011(11).

[2]杨路明,雷亚军. 组态软件WinCC在自动监控系统中的应用[J]. 计算技术与自动化. 2003(04).

[3]杜波. 西门子WinCC与S7-300/400 PLC数据通讯[J]. 可编程控制器与工厂自动化. 2009(05).

[4]申屠南瑛, 裘国华,夏哲雷, 金宁.远程分布式多LED显示屏控制系统研究[J].中国计量学院学报 2005(01).

I/O系统论文 第4篇

近年来随着海量数据的不断增加, 对象存储成为一种新的管理技术, 基于对象的网络存储文件系统的研究随之也成为新的热点。基于对象的网络存储文件系统由客户端 (Client) 、元数据服务器MDS (Metadata Service) 和对象存储设备OSD (Object Storage Device) 等三部分组成, 是一种高可靠性、高性能以及可扩展的分布式文件系统, 具有良好的综合性能。同时基于对象的网络存储也面临着一个突出的问题:如何高效存储并管理PB (PetaByte) 级容量的数据。目前比较成熟的基于对象的网络存储文件系统中, Lusture、zFS、panFS和Ceph应用比较广泛, 其中Lustre和zFS多采用脚本的方式, 即利用EXT2或EXT3文件系统对OSD中的对象进行管理;panFS很少涉及到OSD中的对象管理。按照OSD的标准, OSD中的存储空间管理器是一个对象管理系统, 它所管理的是对象而不是文件, 而且EXT2和EXT3都是基于块的文件系统, 在文件的大小、目录结构和性能上都有一定的局限性。Ceph网络存储文件系统中采用基于对象的文件系统OBFS (Object-Based File System) , 专门用于 OSD中的对象管理系统, 从而提高OSD设备的效率[1]。本文从基于对象的存储设备, 基于对象的文件系统区域组织形式、文件系统结构、分配策略以及区域清理等角度对基于对象的文件系统进行了研究, 分别对OBFS、EXT2和EXT3的I/O性能进行了比较, 并对测试结果进行了深入的分析。

1基于对象的存储设备

OSD是一种具有智能、能够自我管理、提供对象接口并有较高安全性的存储设备。包括处理器、内存、网络接口、存储介质如磁盘阵列或磁带等以及运行在其中的控制软件。基于对象的存储设备和基于块的存储设备的根本区别在于操作接口, 而不是物理存储媒体[2]。

和NAS和SAN相比较, 基于OSD的存储设备兼有了二者的优点, 其存储的不再是数据块而是对象。对象是字节的逻辑集合, 不但包含数据的属性, 在对象上还可以定义安全策略;对象还结合了文件和块的优点, 可以直接被存取, 具有快速、高效的特点。

在基于对象的存储技术中, 对象是变长的, 可以用来存储整个数据结构, 如文件、数据库表、多媒体映像等, 甚至可以用来存储整个文件系统或数据库。

1.1OSD模型

与传统的基于块存储的文件系统相比较 (如图1所示) , OSD将文件系统的存储管理部分下载到存储设备上, 由存储设备自己负责, 同时将存储设备的操作接口由块接口改成对象接口, 提高了设备的抽象层次。

存储部分下载以后, OSD设备可以向外提供对象接口。用户可以直接请求OSD创建对象、删除对象;还可以获取或修改对象的属性, 读写对象的数据。

由于每个对象存储设备都具备底层文件系统的管理功能, 因此元数据只需要提供逻辑视图, 并不需要为所有节点提供物理视图。这样存储系统的负载被分散到各个存储设备里, 从而可以避免NAS系统中出现在元数据服务器上的性能瓶颈问题。

1.2OSD对象类型

OSD模型提供了以下四类对象:

(1) 根对象 (Root Object)

每个OSD逻辑单元中包含且仅包含一个根对象, 它的属性包括OSD逻辑单元的总容量和分区对象数等。根对象还有一个分区ID列表, 表示包含在逻辑单元中的所有分区。通过LIST命令获得该列表的信息。根对象对应的标识符是<0, 0>。

(2) 分区对象 (Partition)

通过CREATE PARTITION命令创建分区对象, 它包含一组集合对象和用户对象。每个分区对象中都包含一个用户ID (User _Object_ID) 列表和一个集合对象ID (Collection_Object_ ID) 列表, 表示包含在该分区中的所有集合对象和用户对象;用户可以通过LIST命令获得用户对象ID, 通过LIST COLLECTION命令获得集合对象ID列表。分区对象的标识符为< Partition_ID, 0>。

(3) 集合对象 (Collection)

使用CREATE COLLECTION命令创建, 它是对象用户的一个快速索引。一个集合对象只能包含在一个分区对象中, 而一个分区对象可以包含0个或多个集合对象。集合对象的标识符是<Partition_ID, Collection_Object ID>。

(4) 用户对象 (User Object)

用户对象中包含用户最终数据如文件或者数据库数据等。它包括用户数据的逻辑大小、创建时间、存取时间和修改时间等。每个用户对象只能是一个分区的对象成员。用户对象由< Partition_ID, User_Object_ID>标识, 一个User_Object_ID唯一标识一个分区对象中的一个用户对象。

2基于对象的文件系统

目前使用比较广泛的基于对象的网络存储文件系统包括Lustre, panFS和 zFS等, 它们可以管理大量的OSD设备, 但在这三个文件系统的描述中很少涉及OSD设备中的文件系统, 即OSD中的对象管理系统。事实上, 在Lustre和zFS中, OSD中的对象管理系统就是Linux的EXT2或EXT3文件系统。但是由于EXT2或EXT3是基于块的文件系统, 组成文件的数据块通常不是连续地分布在磁盘上, 这样就导致大量的碎片, 从而降低了对文件读写的效率。

OBFS是一种高效的基于对象的文件系统, 它应用于大规模分布式存储系统中的OSD的存储管理部分。其基本思想是根据对负载的分析从而对磁盘布局进行优化。使用区域分块方法改善对象的吞吐量同时保持良好的磁盘利用率。与Linux的Ext2与Ext3相比, OBFS具有更好的数据布局以及高效的管理。

2.1OBFS的块和区域

Ceph用对象存储文件, 它把对象分为大对象 (512KB) 和小对象 (4KB) 。统计表明, 在OSD管理的对象中, 85%是大对象, 只有15%是小对象。

由于OSD管理的大部分是大对象, 因此在OBFS中允许使用任意大小的块尺寸, 按照区域分块, 用来解决存储性能和磁盘碎片之间的矛盾。如图2所示。

OBFS支持4KB的小块和512KB的大块。大对象总是驻留在大块区域中, 每个大对象仅占用一个数据块, 其数据总是连续存放。小对象最多占用124个小块, 不能跨越区域边界。未初始化的区域为空闲区域, 其大小待定。

在OBFS运行的过程中, 大对象占据连续的存储空间始终都不会碎化, 而小对象会有一定程度的碎化, 但碎化程度是有限的。因此, OBFS的性能与磁盘利用率不会随着运行时间而降低。

OBFS区域中包含管理所需要的所有信息, 如onode表、空闲onode位图、空闲块位图等。因此对区域的操作是可以同时进行, 从而提高系统的并行度。

2.2OBFS的元数据和文件系统结构

OBFS的文件控制块onode记录每个对象的元数据, 在小块区域中, 一个区域中所有onode结构构成一个onode表, 而且位置固定。在OBFS的大块区域中, onode结构表是临时创建的, 与对象的数据部分存放在一起, 共同占用大区域的一个数据块。如图3所示。

每个onode结构有唯一的长度为32位的标识符onode ID, 通常被平分成两部分:region ID和onode index。region ID用于定位OSD中的区域, onode index用于定位区域中的onode。在查找过程中, OBFS以region ID为索引先找到该对象的所在区域, 而后根据区域的特性, 以它的onode index为索引找到对象的onode结构。

区域头保存着区域的管理信息, 所有的区域头结构组织成一个链表RHL (RegionHead List) 。OBFS使用对象查找表OLT (Object Lookup Table) 组织其对象。其中OLT使用Hash表的方式组织OBFS中的对象, 每个有效的对象在OLT中都有一个表项 (entry) , 用于记录它的object ID (4字节) 和onode ID (4字节) 。16个表项组成一行, 具有相同Hash值的对象记录在同一行上。由于RHL和OLT都被缓存在内存中, 因此提高了系统的访问和查找的速度。

有了OLT和RHL之后, 解析一个对象ID的过程如下:

(1) 根据对象的object ID计算Hash值, 根据算出的Hash值查得OLT获得对象的onode ID。

(2) 从对象的onode ID中分离出Region ID , 根据Region ID查RHL, 找到对象所属的区域头结构, 获取区域的管理信息, 如区域类型等。

(3) 从对象的onode ID中分离出Onode index。对小块区域, 根据对象的Onode index查区域的Onode table, 找到对象的onode结构;对于大块区域, 直接根据对象的Onode index即可找到对象所在的数据块, 因为它的onode结构就在数据块中。

2.3OBFS的分配策略

在创建新对象时, 客户需要对对象的类型 (大对象或者小对象) 进行选择说明。OBFS负责新对象的数据块和区域的创建。OBFS在收到创建新对象并向其写入数据的请求后, 首先将其缓存起来, 进一步聚合对象的数据, 以便为其分配尽可能连续的存储空间。

在为新对象选择区域时, OBFS首先要根据区域的类型、空闲数据、负载平衡以及最后一次访问区域之间的距离等来搜索区域头链表RHL。并将其划分为三个子链表:大块区域链表、小块区域链表和空闲区域链表。如果找不到合适的候选区域, OBFS会就近选择一个空闲的区域并将其格式化成所需要的类型。在分配空闲区域时, OBFS采取一种保守的分配策略, 即尽可能使用已格式化的区域。

对于数据块的选择, 因为候选区域任意一个空闲数据块都可以存储大对象, 所以大对象选择数据块比较简单。对于小对象数据块的分配, OBFS采取其数据块尽可能连续的原则。具体的方法就是OBFS维护一个空闲域的链表, 分配数据时首先搜索空闲域链表, 找大于或等于小对象尺寸的空闲域。如果区域中有多个满足要求的空闲域, OBFS采用最坏适应 (WorstFit) 算法, 即选择最大的空闲域来存储小对象[3]。

2.4OBFS区域清理

由于OBFS以区域为单位组织和管理数据, 而且每个区域中只有一种类型的数据块, 因此, 可能会出现某种类型的数据块被用完的情况。此时, 虽然OSD中还有空闲, 但却没有所需要的类型的数据块, 在这种情况下, 就需要进行区域清理。其目的就是合并同类区域中的对象, 从而释放出空闲空间。OBFS将一个区域中的所有对象都复制到其他同类的区域中, 从而创造出一个空闲区域。在小对象区域的清理过程中, 由于小对象存储空间被重新组合、分配, 还可以消除小对象的碎化现象, 进一步提高了磁盘的利用率。

3OBFS和EXT2、EXT3性能比较

3.1测试环境

测试使用的是一台PC机器, 配置为双核3.6GHZ主频, 2G内存, 250G硬盘。操作系统为Red Hat Enterprise Linux 5 2.6.18版本。

使用iozone3.0作为测试读写性能的工具。iozone是一个文件系统的benchmark工具, 可以测试不同的操作系统中文件系统的读写性能。可以测试 Read, write, re-read, re-write, read 等不同的模式下的硬盘的性能。

测试对一个固定大小的文件采用不同的 I/O 传输块大小, 对OSD 进行读写操作, 为了避开文件系统的影响, 直接将OSD命令提交给OSD驱动。采用的读写操作原型为[4]:

(1) 读操作

(2) 写操作

在以上读写操作参数里, 分区ID 和用户对象ID 是用来唯一确定一个对象在磁盘上的位置的参数。测试写性能时采用的是不分配写 (non-allocating write) , 即重写, 写之前对象的地址空间已经分配好。

3.2性能分析

EXT2是基于内核级的文件系统。ETX3则是用于Lustre文件系统中的对象存储和磁盘分配策略的内核级的文件系统, 并在EXT2的基础上增加了日志管理用于提高可靠性。为了更大限度地发挥每个系统的I/O性能, 本文采取了避开缓存系统:即所有的文件系统都挂载“-o sync”参数, 使文件系统采用直接写策略。

图4显示了OBFS、EXT2和ETX3文件系统在80%大对象和20%小对象的负载情况下的性能。由图可知, 无论是读性能还是写性能, 在相同负载的情况下OBFS都优于EXT2和ETX3文件系统, 基本上是二者的2到3倍。由于OBFS采用了按照区域分块的方案, 大大地提高了磁盘的利用率。在相同的时间内, EXT2和ETX3文件系统在磁盘分配策略方面没能充分利用相邻块的空间, 为了提高大对象的存储性能, 它们需要增大数据块的尺寸, 但随着尺寸增大其磁盘碎片明显增大, 造成了存储空间的巨大浪费, 使得其性能下降。同样在重写文件方面, OBFS也显示了其巨大的优势, 无论是大对象还是小对象, OBFS文件系统的重写性能都高于EXT2和ETX3文件系统约3倍。

4结论

论文在描述OBFS的结构和关键技术基础上, 在用户级执行OBFS, 并针对性的与EXT2和EXT3文件系统分别进行了性能的比对。从分析的结果来看, 用于管理OSD中对象的OBFS系统有着良好的吞吐量和高效的磁盘利用率, 在基于对象的网络存储领域将会有更加广泛的应用。

摘要:目前基于对象的存储设备中多采用通用的文件系统如EXT2、EXT3等进行管理, 但面临着对海量数据的高效存储、管理问题。基于对象的文件系统实现了对象按大小在磁盘区域中组织管理, 并采用了Hash、最坏适应等机制, 提高磁盘利用率的同时显著提升了磁盘吞吐率。对EXT2、EXT3、基于对象的文件系统进行了I/O性能测试及分析。实验表明, 基于对象的文件系统的I/O性能是EXT2、EXT3文件系统的2到3倍。

关键词:对象存储,对象存储设备,文件系统,性能分析

参考文献

[1] Sage A Weil, Scott A Brandt, Ethan L Miller, et al.Ceph:A Scalable, High-Performance Distributed System.2007.

[2]Object Based Storage Devices Technical Work Group.SNIAOSD[C/OL]. (2006-07-28) .http://www.snia.org/tech_activities/work-groups/osd.

[3] Feng Wang, Scott A Brandt, Ethan L Miller, et al.OBFS:A File System for Object-based Storage Devices[C]//21st IEEE/12th NASA Goddard Conference on MssT2004.2004.

i/o模块是什么意思 第5篇

带有I/O模块和处理器的导轨被称为本地I/O导轨;带有I/O模块、电源、远程I/O通信卡并且安装在远离本地I/O导轨的导轨被称为远程I/O导轨。远程I/O导轨的`数目取决于不同处理器能够控制变量的数目。

远程I/O导轨与处理器之间的通信可以采用多种方式实现,具体包括同轴电缆、双轴电缆、屏蔽双绞线等,如果距离较远而需要考虑抑制噪声干扰问题可以采用光纤通信。

并行I/O模块:

并行I/O模块承担了与外部系统进行信息和数据交互的重要责任,可以用于扩展外围器件,者直接动键盘、LED等简单外部设备。

通常来说,51单片机有4个8位的并行I/O口,分别为P0、PI、P2、P3四组,其中PO和P2既可以用作普通I/O端口也可以当成数据地址端口,P3则在作为普通I/O端口的同时还具有其他(第二)功能,只有PI仅仪用作普通I/O口。

I/O系统论文 第6篇

主动报警

该公司主要提供基于IP的解决方案, 适用于海事、停车场、门禁控制和分散式设施等。他们选择了ioLogik E2200系列连接远程监控系统中的传感器和探测器。ioLogik系列创新的主动式通信方式确保NVR软件可快速获取传感器数据, 并有效减少80%的网络带宽流量。

基于SNMP的I/O解决方案

由于支持独特的SNMP v1/v2c/v3协议, ioLogik E2200系列可基于网络管理所有的网络视频监控设备, 这样系统集成商就可以主动获得带有SNMP Trap的I/O状态数据, 并大大提升带宽效率。由于SNMPv3协议的支持, 所有信息可提前经过高规格的安全验证, 以确保系统安全性。

支持CGI命令

Moxa主动式以太网I/O解决方案支持发送用户自定义的CGI命令, 这是网络视频监控中的常用协议。有了这个功能, ioLogik E2200系列可以很容易连接IP摄像头, 启动警报器或将摄像头转至预先设定的观察点。

轻松一键安装

主动式以太网I/O设计灵活, 易于安装。它支持多种数据传输协议, 如TCP/UDP、SNMP trap、SMTP (e-mail) 和Modbus/TCP协议。此外, Moxa创新的Click&Go TM技术使用简单的IF-THEN-ELSE语句, 无需编程, 让用户可以在短短几分钟内完成I/O的配置。

主要特点

I/O系统论文 第7篇

埕岛油田测控系统一期投运于96年进行项目论证, 97~98年一期系统进行了系统组态、开发和现场安装, 99年系统投入试运行, 2000年正式投产。经过不断扩充, 现已建成了包括1座陆地监控中心、2座中心平台站和70余座卫星平台站的大型滩海油田SCADA系统, 提高了海上原油生产的管理水平, 改善了职工的工作条件, 确保了安全高效生产。

一、埕岛中心三号平台自控系统简介

整个埕岛区域自控系统采用“三级站场、二级控制”的管理模式, 第一级是陆地中心站, 设在海洋开发公司办公楼陆地监控中心, 它是整个油田的调度管理中心, 可以通过中心平台站监视整个埕岛油田的生产运行情况, 处理油田生产信息和报表。第二级是中心平台站, 设在中心平台, 中心平台站作为海上生产管理控制中心, 除对本平台进行监控外, 还负责监控所属卫星平台的生产运行情况。中心平台站负责向陆地中心站传送海上平台的实时数据。第三级是井口平台站, 设在各卫星平台, 负责监视和控制卫星平台的生产运行情况, 响应中心平台发来的生产控制命令。二级控制是指中心平台站对井口平台站的遥控和井口平台站就地控制, 陆地中心站仅具有就地监视功能, 对海上平台可以监视但不能控制。

中心三号平台为中心平台, 即第二级站场, 其作为海上生产管理控制中心, 除对本平台进行监控外, 还负责监控所属卫星平台的生产运行情况, 同时向陆地中心站传送海上平台的实时数据。因此就决定中心三号自控系统, 同样分为两个部分:综合控制系统和卫星平台SCADA系统。为兼容已建卫星平台并与中心1号、中心2号SCADA系统保持一致, 服务器软件采用H oney w ell Ex per ion PKS系统。

二、埕岛中心三号平台自控系统硬件构成

本系统采用PLC加远程I/O的系统架构, 冗余的PCS PLC和SIS PLC作为平台的核心控制器位于生活动力平台生活楼中控室, 现场信号全部接入就近的远程I/O控制盘, 电气部分参数进位于电气控制室的远程I/O机柜, PLC与远程I/O间用冗余的远程I/O网络连接。这样的系统架构可在保障系统安全性的前提下, 最大限度减少电缆及施工工作量。

PLC采取埕岛油田常用的AB 1756Contr ol Logix系列PLC, 生产平台远程I/O机柜采用AB 1794FLEX I/O系列, FLEX I/O提供较大体积、基于背板I/O的所有功能, 而没有空间要求, 可以单独选择I/O、端子类型以及网络来满足应用要求。三、埕岛中心三号平台自控系统网络构成

Net Linx是罗克韦尔自动化新一代的开放网络技术, 实现了从企业管理系统到车间现场的无缝连接与集成。Net Linx架构内的网络Device Net、Control Net和Ether Net/IP使用通用的应用层协议, 网络内的设备能够相互实现通讯, 不用进行数据转换或者编写一些特殊的程序, 可以实现数据的的跨网络共享。

埕岛中心三号平台自控系统网络系统是由Ether Net/IP、Contr ol Net两级网络组成, 撬块与远程I/O单元通过Modbus进行通讯, 实现数据上传下达, PLC CPU控制器与远程I/O单元通过冗余Control Net网络连接, 实现PLC控制器对数据的集中处理。同时, PLC控制器通过冗余的工业以太网Eth er Net/IP将数据处理信息上传上位机系统, 以达到画面参数的集中显示与控制。

四、AB 1794FLEX I/O模块的简介

每个FLEX I/O系统至少包含一个适配器、一个端子基座和一个I/O模块。可通过FLEX电源 (1794-PS13或-PS3) 或任何其它兼容电源为系统供电。一个适配器根据现场需求最多可以同8个I/O模块通讯, 可混合并匹配使用I/O模块。

FLEX I/O模块插入端子基座, 连接到I/O总线和现场设备。由于没有直接接线到I/O模块, 所以用户能够带电插拔模块, 在不用断开现场接线、其它I/O模块或FLEX背板电源的情况下更换模块。消除了代价很高的停机时间以及系统的无效重起。I/O类型的选择灵活多样, 选择范围可以从数字量、模拟量到温度、运动控制。FLEX I/O允许用户在每个适配器上使用最多八个端子基座, 提供最大256数字量I/O点或96路模拟量通道。可以通过安装和接线选项混合匹配数字量和模拟量I/O, 提供成功统解决方案。

五、分布式I/O系统优点

FLEX I/O模块是分布式应用的灵活、模块化I/O。FLEX I/O提供较大体积、基于背板I/O的所有功I/O、端子类型以及网络来满足用户应用要求。

1.独允许用户将电力以菊花链方式连接到邻近的端子基座上。

2.一个适配器最多可以同8个I/O模块通讯。允许将适配器连接到:256点数字量输入/输出模块, 96路模拟量输入/输出模块, 混合模块, 满足需求。

3.模块化的FLEX I/O系统提供网络选择, 而且易于扩展。

4.与现场设备的接线工作几乎完全在端子基座上完成。

5.可调节的键形开关防止不正确的模块插入到预先配置的端子基座内。将I/O模块插入到端子基座内, 连接I/O总线和现场设备。

6.可带电插拔模块。不直接接线到模块使用户在更换模块时, 不需断开现场设备接线或系统电源。

结束语

分布式I/O在埕岛中心三号平台自控系统的成功应用, 节省了施工费用及电缆用量, 提高施工进度, 同时在单个远程I/O单元出现问题时, 不会影响整个系统运行, 大大方便了检修。冗余通讯模式实现了多通道通讯, 保证了数据传输可靠性, 在浅海油田自控系统具有很高的推广应用价值。

摘要:AB FLEX I/O是一种灵活的, 高性能价格比适合于分布式应用的模块化I/O系统, 它可以提供那些有大型、机架安装的I/O系统所能提供所有功能, 但是没有相应的空间要求。

I/O系统论文 第8篇

可编程逻辑控制器(PLC)具有高可靠性、模块化结构以及编程简单等特点,可实现过程参数实时采集和逻辑控制。近些年已被广泛用于供水企业的各个生产环节中,如水源汲水、净水处理及加压供水等生产现场。分布式I/O模块采用嵌入式控制器,自身带有RS485通信接口可与GPRS等通信设备结合使用。其体积小,功能模块化,设置指令简单,运行稳定可靠,已成熟运用到各类监控和数据采集系统中(SCADA)。

水源井群一般较分散且距离各级泵站或水厂较远,使用线缆连接各种仪表传感器等设备投资成本高、系统接线复杂、可靠性低且维护难度大。各种传感器、执行器与控制器之间使用无线通信方式进行数据传输,易实现分散控制集中管理,具有结构简单、维护方便及开发成本低等特点,可有效解决线缆连接所带来的问题。因此,研究和设计无线遥测遥控系统在工业过程生产中的应用,已成为工业自动化领域重点和热点之一。

1 系统工作原理及实现方案

1.1 系统工作原理

本系统用于水生产过程控制,主要完成5口水源井的水泵电机启停控制、电机相关运行参数检测,供水管网压力、流量测量及水厂本地供水压力、出水流量和蓄水池液位等数据监测。井群与水厂半径距离大约3km,分布在水厂西南至西北两个方向。主站即为管理人员操作站(或称主控站),可以遥控远方从站设备正常启动、停止以及复位;从站即为控制站,主要负责现场电机的启动与停止功能等[1]。水厂控制室设工作主站,5口水源井设工作从站;水厂控制室向井群发启停信号,对应水源井收到水泵启动或停止信号后执行水厂工作主站操作并监测水泵电机运行状况。水务调度中心监控各水厂生产情况和供水管道是否有泄漏发生。工作主站与工作从站间、管理主站与管理从站间均采用无线通讯方式完成各站的信号联络与数据传输。

1.2 负压力波流量法泄漏定位原理

泄漏是由于密闭容器、管道及设备等内外两侧存在压力差,在使用过程中,内部介质在不允许流动的部位通过孔、毛细管等缺陷渗出、漏失或允许流动的部位流动量超出允许量的一种现象[2]。在管道发生泄漏时,泄漏处流体损失引起局部流体密度减小,产生瞬时压力降和速度差,供水管道泄漏检测以泄漏前压力作为参考标准,泄漏时产生的减压波为负压波。当管道发生泄漏时,由于管道内外的压差,泄漏点的流体迅速流失,压力下降,泄漏点两边的液体由于压差而向泄漏点处补充[3]。负压波总是沿着管道以一定速度向其上、下游两端传播,根据泄漏点的不同,负压力波到达管道上、下游两端的时间也不同。由于负压力波的传播速度近似声音在水中传播速度即1km/s以上,远大于管道中水流速度,因此可忽略水流速度。假设t1和t2分别为上下游两端接收到负压力波的时间泄漏点距离上游的位置x为:

undefined (1)

式中 Δtt1和t2的时间差值,Δt=t1-t2;

V 负压力波传播速度,m/s;

L 管道长度,m。

式(1)成立的条件是v恒定。只要能测定Δt,就可以用式(1)计算出泄漏点位置x。在管道上游站进口和下游站出口分别安装压力和流量传感器,不间断采集供水管道的压力和流量值。当管道某点发生泄漏时,上游站的出站压力有所下降,而流量有所上升,下游站的进站压力、流量都将有所下降。当调节水泵使转速升高时,上游出站压力、流量都将增大,下游站进站压力、流量都上升;当水泵转速降低时,上游站的出站压力下降、流量减小,下游站的进站压力及流量也都下降。采用压力流量联合判断方法来监测管道泄漏,可以降低误报率。

1.3 系统实现方案

根据水生产工艺流程,系统分为:水源井、水厂、供水管网、水务调度中心。水源井与水厂直线距离一般在几公里到几十公里不等,且需要测量和控制的参数实时性较高。数传电台传输速率快、实时在线、响应及时,可适用实时性要求高的场合。水源井与水厂间采用数传电台通信,可实现井群水泵的实时遥控遥测,其设计方案如图1所示。

水厂与调度中心距离较远,供水管网采集点分散,使用数传电台难以达到较为理想的数据传输效果。而GPRS使用现行移动公网运行,覆盖

范围广、传输距离远,管网监测、水厂与调度中心通信都采用了GPRS可以实现超远程数据的传输。

供水管线长加大了人工检测管道泄漏的难度,通过检测供水管道上下游的压力和流量,加以程序分析,可精确定位管网泄漏点。

系统设备间通信采用数传电台与GPRS相结合的方式。水厂工作主站控制设备采用工控机,井群取水工作从站选用OMRON公司的CPM2AH小型PLC,供水管网的压力和流量参数采集使用研华公司的ADAM4017+模拟量输入模块。

2 系统硬件设计

2.1 硬件设备组成

由于水厂各生产系统所承担任务不同,各站点要测量参数也有所不同,测量参数见表1。

取水站主要任务是控制水泵电机的启停,检测电机运行工况是否有过载、欠压等情况以及每个取水站的用电量、水泵电机三相电压和电流。取水站参数测量实时性高,采用PLC与数传电台相结合的方式实现取水站的控制和数据传输。通信联网是拓展PLC应用领域的一个重要方面,现代PLC的应用已从单机自动化、生产线自动化扩大到车间、工厂生产综合自动化以及计算机集成制造系统和智能制造系统。世界上各大PLC生产厂家都为自己的PLC开发了网络通信系统。欧姆龙PLC网络类型较多、功能齐全,可适用于各层次工业自动化网络的不同需要。取水站[4]选用OMRON公司的CPM2AH-20CDR-A系列小型PLC,本机为12点、24V(DC)输入、8点继电器输出,带有一个RS232C物理串口和一个外围接口,可与上位机或带RS232接口的设备连接,实现通信功能。通信设备采用MDS EL7052E型数传电台进行微波通信,其使用4电平连续相位频移键(CPFSK)调制,空中传输速率9600bps,工作频率230MHz频段。数据吞吐量大、实时性高,而且可实现点对点和点对多的系统建设,数传电台频率、功率及接口数据传输格式可通过配套软件方便设置。水泵电机三相电压、电流及用电量的测量采用STM系列电量表模块,该产品支持RS232或RS485两种通信接口,采用串行异步通信方式,可使用Modbus的ASCII方式和RTU方式,ASCII方式适用于远程传输而RTU方式适用于本地传输,系统采用ASCII方式传输三相电压、电流及用电量等参数,STM电量表模块还可以测量有功功率、无功功率、视在功率和功率因素等电量参数。

水厂控制室,主要对井群遥控遥测,以及水厂本地蓄水池液位和加压泵出水压力、流量的测量。水厂本地测量参数较多,控制量较少,使用分布式I/O模块即可达到较好的监测效果。研华ADAM4017+模拟量输入模块是16位A/D八通道模拟量输入模块,使用电压、电流等模拟量输入信号,测量电流时无需外接电阻,跳线设置即可;支持八路差分信号和Modbus协议,在工业测量和监控中性价比较高。蓄水池液位测量选用投入式液位传感器,输出4~20mA电流信号;在每个加压水泵出口加装带RS485通讯接口的电磁流量计,测量出水量;在水厂主管道出口处测量出水压力。将测量到的压力和液位信号送本地ADAM4017+,经过RS485到RS232信号转换后送水厂工控机实现本地测量数据的监测。在水厂安装捷麦G200-GPRS无线模块实现与调度管理中心的无线数据传输。

供水管网监测参数主要为管道压力和流量,在相对较直的管道上下游分别安装压力和流量传感器,若管道有弯或分支处要另外成对加装压力和流量传感器。管道测量的压力和流量信号存在噪声需对其进行滤波,滤波后的信号再从ADAM4017+模块其中一路输入,ADAM4017+模块的RS485通讯接口与G200无线模块TTL接口相连,但中间要进行RS485到TTL的转换。供水管网测得的压力和流量值即可通过GPRS无线模块传输到调度管理中心,实现整个供水管网的监控。

2.2 硬件设备通信连接

随着科学技术的不断发展特别是计算机技术及网络通信技术的突飞猛进,各种仪器仪表正向着智能化和网络化发展,他们不再是孤立的设备,需要通信、需要组网。水厂与井群遥控通信硬件系统设计如图2所示。图中PC为主站,PLC为从站,CON1、CON2为电平转换器,MDS1、MDS2分别为数传电台,F、P、H分别为水厂本地流量、压力及液位,OCS、SRS分别为CPM2AH输出控制信号和状态返回信号,MOTOR为水泵电机,CPM1A-AD041为4输入模拟量输入模块。水厂本地都使用线缆与各传感器和执行器连接,各测量信号通过RS485或RS232电平转换后汇总到控制室的工控机上,通信方式相对简单。水厂及管网监控系统与水务调度中心通信图如图3所示。

3 系统软件开发

3.1 PLC初始化与主程序

在对OMRON公司CPM2AH小型PLC进行编程前,先要对其进行通信配置。系统采用CPM2AH的无协议通信模式。使用无协议通信,需要利用TXD(48)指令发送数据、利用RXD(47)接收数据,能够发送或接收的数据最大为259个字节。当串行设备通过RS232C端口与PLC连接时,RS232C端口的通信方式和通信参数存储在寄存器DM6645~DM6649中[5]。初始化程序是在PLC上电之后,利用“第一次循环标志位”在程序第一次循环时对发送和接收程序所涉及的寄存器进行清零以及数据传输帧格式的设置。主程序实现数据发送、接收、模拟量输入检测,以及开关量输出控制等功能。PLC程序流程如图4所示。

3.2 上位机程序

监控与管理系统是整个供水系统的软件支柱,目前这方面使用较多的软件可分为两种:一种是通用性组态软件,如WinCC、组态王、MCGS等;另一种是用户利用VB、VC、VC++等编程开发工具自己编写的工业监控软件。

Visual Basic 6.0(VB6.0)具有面向对象的可视化编程工具,采用“事件驱动”的编程机制,提供了易学易用的集成开发环境。VB中创建的部件可在其他开发环境中(如VC++)使用,还可以引用其他开发工具建立部件[6]。水厂监控系统采用Visual Basic开发,水厂要对取水站及水厂本地的测量参数进行监控,对各取水站水泵遥控启停、水泵故障报警、供水系统自动与手动运行切换,及水厂运行设备数据查询等。根据监控界面友好、画面布局合理、操作简单方便的原则对水厂监控画面进行了开发。水厂监控程序关键之一是串口通信程序,它是工控机与各设备通信的桥梁,串口通信程序直接影响整个水厂系统的运行。Visual Basic6.0提供了MSComm控件可方便编写串口通信程序,MSComm控件全称为Microsoft Communications Control,是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简单方法[7]。

水务调度管理中心主要调控本区域内各水厂生产,统计水厂出水量,监测供水管网运行情况。利用VB6.0开发的水务管理监控系统可分为:管道泄漏检测报警模块、数据库查询模块及地形图库模块3部分。

4 结束语

本系统用于水厂井群控制、水厂生产及供水管网监控。通过实验和实际工程检验,系统能满足水厂生产的要求,可适应各种恶劣工作环境,对水生产过程参数测量无误、控制稳定、管网泄漏定位准确,对水厂安全运行、提高供水质量和节能降耗等方面起到关键作用。可视化编程语言VB开发的上位机界面一目了然操作方便。系统中各设备间通信良好、数据传输误码率低、故障响应及时。系统采用了数传电台与GPRS相结合的通信方式,运行成本较低,在中小型水厂或城镇集中供水工程中有较高的使用价值,稍加改进可广泛应用于其他生产的过程控制。

参考文献

[1]张继红,郭荣祥.基于CPM系列PLC的微波通信设计[J].电气传动,2006,36(9):51~53.

[2]郭文辉,曾宪云.管道泄漏检测技术[J].工业安全与环保,2007,33(2):40~42.

[3]彭柯,王立坤,李健等.基于SCADA系统的泄漏监测与定位[J].化工自动化与仪表,2004,31(1):50~52.

[4]李占英,姚丽君,梅彦平.零基础学欧姆龙CPM2PLC[M].北京:机械工业出版社,2010.

[5]王成福.可编程序控制器及其应用[M].北京:机械工业出版社,2006.

[6]刘新民,蔡琼,白康生.Visual Basic 6.0程序设计[M].北京:清华大学出版社,2004.

I/O系统论文 第9篇

烧结工艺是炼铁的前端工序,也是决定钢铁产量、质量的关键工序。此工艺包括:燃破、配料、混料、烧结、成品及铺底料返矿等各工段。工序较分散,且各类设备距离较远。因此,既要保证各工序设备的良好运行,又要提高产能、减低能耗,只能采用灵活可靠、合理有效的自动化控制。

模块化结构,各种单独模块之间可进行广泛组合,易于扩展和实现分布,以及易于用户掌握的编程和组态特点,使得S7-300成为实现中小规模控制任务方便又经济的首选解决方案。ET200M是模块化I/O站,它可用S7-300PLC的信号、功能和通信模块扩展,适用于复杂的自动化任务和控制间隔较远的情况。S7-300PLC和ET200M适合步进烧结系统的控制需求。另外,各主、从站之间采用Profibus-DP系统总线通信联系,不仅保证系统控制速度和运行稳定,而且能大大减少电缆量和硬接线数,从而实现快速安装,节约成本。

1 系统布置及组成

此烧结厂的现有布置:在燃破、混料上料、机尾成品、主厂房烧结4个工段设立4个分配电操作室,就近给各部分的设备配电。在烧结工段的机头、机尾设立2个集中控制操作室,就近控制各设备的运行及上、下级设备的生产联系。机头操作室为整个步烧系统的主操作室,能集中控制和调度全系统的设备运行和仪表检测。

本控制系统充分利用了以上布置。在主厂房烧结配电室设S7-300PLC主站,在分配电控制室和主控制室、机尾控制室设ET-200M I/O分站。上位机设在烧结主控室内,采用研祥IPC810P4。系统采用主站加从站的结构,可使系统造价降低,并且扩展灵活,实现分散设备的相对独立又整体统一的控制要求。系统控制框图如图1所示。

主站PLC1构成如图2所示。电源模块:6ES7 307-1EA00-0AA0;CPU:6ES7 315-2AG10-0AB0;16点输入:6ES7 321-1FH00-0AA0;16点输出:6ES7 322-1HH01-0AA0;接口模块:6ES7 153-2BA02-0XB0。

分站硬件构成如图3所示。电源模块:6ES7 307-1BA00-0AA0;16点输入:6ES7 321-1FH00-0AA0;16点输出:6ES7 322-1HH01-0AA0;接口模块:6ES7153-2BA02-0XB0。

2 各主要工段的控制工艺流程

各系统设备控制分为手动与自动两种方式。自动控制时,设备启动顺序按电机启动顺序,停机顺序按料流方向。系统自动启动时,各设备机旁电铃持续响10s,主厂房设有预告电笛,预告启动开始。当某一设备发生故障时,按机旁操作箱或皮带廊内的急停按钮,该设备及其后面的设备停机,它前面的设备继续运转;故障解除后,应使自锁的急停按钮复位,该设备及其后序设备可以再次顺序启动。

1、2主厂房烧结工段的控制工艺流程如图4所示,燃破系统、配混料、机尾成品等工段可参照此流程。

3 上位机组态画面组成

操作员站和工程师站的画面组态软件选用SIEMENS公司的WINCC完成用户二次软件开发。PC的主要功能是显示工艺流程、电机及阀门等的运行状态及控制、故障报警、故障发生的部位及其处理方法、显示温度和速度等模拟量,需要时可通过打印机打印。本系统制作了符合工艺运行和操作要求的画面,画面中各参数的设定都是随着PLC的改变而改变。工作人员可以通过这些画面监控各个设备的运行情况,而且可随时根据系统运行状况实时控制设备的运行。监控总画面如图5所示。

4 结语

合理利用工艺布置特点和配电设施,使设备的配电和自动化控制有效结合;通过主、从站设置,利用Profibus-DP通信,采用西门子公司专门为过程控制和现场监控开发的WINCC监控系统软件,有效、简洁地设计了290m2烧结厂的自动化控制过程。此控制系统自2009年初投运至今,运行良好。其经济性和易扩展性能非常适合开放系统和分期工程的控制方案。

参考文献

[1]崔坚.西门子工业网络通信指南(上)[M].北京:机械工业出版社,2005

[2]崔坚.西门子工业网络通信指南(下)[M].北京:机械工业出版社,2005

串行通信与重叠I/O 第10篇

串行通信在通信领域被广泛应用,标准的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系统论文

I/O系统论文(精选10篇)I/O系统论文 第1篇随着微电子工业和半导体加工技术的不断发展,集成电路的规模不断增大。这使得将复杂系统集成在...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部