您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > [技术培训]数据采集设计与应用2
研华(中国)有限公司IAG应用工程师彭涛数据采集系统设计与开发内容驱动软件系统架构及原理基于PC的数据采集控制系统软件应用开发技术Chapter1基于PC的数据采集控制系统Real-WorldControllerSensorSignalConditioningPC通过数据采集控制卡和现实世界交互如何选择一片合适的数据采集卡•系统与总线结构ISAorPCI、插入式or嵌入式(PC/104)•实现功能AI、AO、DI、DO、Thermo、Counter、Pulse•采集精度与特殊要求分辨率(12bit、16bit)采集精度(FSB的0.01%+1LSB是什么含义?)采集速率(100KS/sorhiger)触发方式(Delay,About,Post)隔离、FIFO、Busmaster…•软件架构与应用开发方法驱动是如何开发和架构的有什么开发的平台与例程,各有什么特点怎样去开发ISACPCIPCIPC-104系统与总线架构ISA/EISA总线•ISA——IndustryStandardArchitecture以IBMPC总线规范为基础•EISA——ExtendedISAPCI总线•PCI——PeripheralComponentInterconnectSpecialInterestGroup(外围部件互联专业组),它是一种先进的局部总线,已经成为局部总线的新标准.CPCI总线•CompactPCI,中文又称紧凑型PCI。采用欧洲单槽或双槽结构为机架固定型板卡,同样具有插槽式结构,功能扩展方便,配置灵活。需要配备标准机架,适用于某些大型系统,如通信设备。PC-104总线•它时超小型PC微机所用的总线标准。即IEEEP996,采用ISA总线架构。Pc-104+总线PC/104增强标准,增加PCI总线定义。计算机总线技术ISA总线的特点•目前ISA总线具有16位数据宽度,最高工作频率位8MHz,•数据传输速率达到16MB/s•地址线为24条,可寻址16M字节。•它是在早期62线PC总线基础上再扩展一个32线插槽形成的。分成62线和36线两段,共计98线。98根线分成5类:地址线,数据线,控制线,时钟线,电源线。EISA总是再ISA总线的基础上,通过增加地址线,数据线和控制线来扩充的。支持32位地址,可寻址4GB地址空间,32位数据宽度,工作频率位8.3MHz数据传输可达33MB/s。PCI总线的特点总线时钟频率33.3MHz/66MHz,总线宽度32位,扩展到64位最大数据传输速率133MB/s,数据宽度升级到64位,数据传输速率可达266MB/s。·能自动识别外设。多总线共存:通过HOST-PCI,PCI-ISA/EISA桥接组件可以构成一个分层次的多总线系统。CompactPCI总线特点•标准欧洲卡尺寸,符合IEEE1101.1结构标准;•与PCI2.1电气,逻辑和软件功能完全兼容;•气密性、高密度2mm针-孔连接器,符合IEC-1076国际标准;•良好的抗振动和冲击特性;•金属前面板,便于安装、固定和指示;•现场I/O信号由板后通过针-孔连接器引出,弹性连接,抗腐蚀、抗振动性能好;•标准金属机箱(铝),EMC、ESD性能好,抗干扰能力强;•支持热插拔和热切换(HotSwap);•无源母板,标准插槽,可扩展性和伸缩性能好;•支持混合总线系统。80.0mm233.35mm160.0mmSBC单板电脑背板后面板I/O接口SBC把手热拔插指示触点KeyKeyCompactPCI规格及安装特性J5J4J3J2J1J2J1100mm160mm233.35mm160mm3U6UIEEE11011987年认可•定义机构与尺寸的公差以减小时间与制造成本•两种规格:3U与6U数据采集卡需要实现的功能模拟量输入模拟量输出数字量I/O计数/计频脉冲输出1.分辨率(12bit、16bit)模数转换器的转换位数,根据采集设定的量程,将模拟量线形转换成数据量,如选择-10~+10V的量程,则0001H(16bitA/D)对应于模拟量20V/2的16次方=0.305mv2.采集精度(FSB的0.01%+1LSB是什么含义?)因为采集的过程不仅只取决于板卡的分辨率,好比PC机的好坏不仅只取决于CPU一样,前段模拟信号的增益与运放对数据最终的精度非常重要,因此板卡必须给出采集精度的指标,如上所示得到20V*0.01%+0.305mv=2.305mv而且不同的量程对应于不同的采集精度。3.采集速率(100KS/sorhiger)根据采集的需求选择合适速率的板卡,同时要注意采集系统的瓶颈,并不完全取决去板卡,因为PCI总线的带宽仅有133MB/s。4.触发方式(Delay,About,Post)隔离、FIFO、Busmaster9054…采集精度与特殊要求板卡Block详解–计数、计频、PWM板卡Block详解–AI、AO、DIO、触发Chapter2驱动软件系统架构和原理研华采集卡应用软件系统架构3rd-PartySoftwareUsersHardware(PCL/PCIcards,ADAM,MIC,PCM)MicrosoftWindows(WindowsNT,Windows98,Windows2000,WindowsXP)Drivers(WDM)VB,VC++…ActiveDAQAdvantechLabviewDriverProgrammingUsersSystemSolutionUsersVisualBasic,VC++,C++Builder,DelphiFIXDriverCitectDriver………GeniDAQAStudioLabview研华采集卡驱动程序架构Application,ActiveDAQ,LabviewAdsapi32.dllADS1712.DLLADS1730.DLLADS1760.DLLADS1712.SYSADS1730.SYSADS1760.SYS既然有驱动,那驱动在什么地方?WDM驱动程序Windows2K模型软件要么执行在用户模式中,要么执行在内核模式中。当用户模式程序需要读取设备数据时,它就调用Win32API函数,如ReadFile。Win32子系统模块(如KERNEL32.DLL)通过调用平台相关的系统服务接口实现该API,而平台相关的系统服务将调用内核模式支持例程。在ReadFile调用中,调用首先到达系统DLL(NTDLL.DLL)中的一个入口点,NtReadFile函数。然后这个用户模式的NtReadFile函数接着调用系统服务接口,最后由系统服务接口调用内核模式中的服务例程,该例程同样名为NtReadFile。注:Windows三大模块GDI32.DLL,USER32.DLL,KERNEL32.DLL.WDM驱动程序可以把一个完整的驱动程序看作是一个容器,它包含许多例程,当操作系统遇到一个IRP时,它就调用这个容器中的例程来执行该IRP的各种操作。图中表现了这个概念。有些例程,例如DriverEntry和AddDevice,还有与几种IRP对应的派遣函数将出现在每一个这样的容器中。需要对IRP排队的驱动程序一般都有一个StartIo例程。执行DMA传输的驱动程序应有一个AdapterControl例程。大部分能生成硬件中断的设备,其驱动程序都有一个中断服务例程(ISR)和一个推迟过程调用(DPC)例程。驱动程序一般都有几个支持不同类型IRP的派遣函数,其中三个派遣函数是必须的。所以,WDM驱动程序开发者的一个任务就是为这个容器选择所需要的例程。WDM驱动程序•操作系统使用一种称为I/O请求包(IRP)的数据结构与内核模式驱动程序通信。粒子物理学里有关于宇宙的“标准模型”,WDM也是这样。易于安装易于诊断易于编程资料详细应用32位DLL驱动的优势•满足用户的需要插入硬件配置硬件测试硬件安装驱动开始编程阅读文档•目前Driver最新版本ver2.4安装过程:PCI安装过程:ISADASDriver支持平台•Adsapi32.dllExample、UtilityLibAdsapi32.dll更新VCAdsapi32.Lib不必重新编译VBDriver.bas不必重新编译DelphiDriver.bas不必重新编译BCBAdsapi32bcb.Lib必须重新编译•DRV_DeviceOpen通过指定的设备号(DeviceNum)来打开一个已经安装的设备,返回设备句柄DriverHandle以备后续操作。与指定设备相关的所有操作都必须使用指向该设备的句柄(DriverHandle),所以用户在使用与设备所分配资源相关的任何一项操作,如DIO、AO、AI等之前,必须先调用此函数。DRV_DeviceOpen(DeviceList[wDevice].dwDeviceNum,(LONGfar*)&DeviceHandle);•DRV_DeviceClose关闭由设备句柄DriverHandle指向的设备,释放为该设备分配的资源。所有与设备分配资源相关的操作,如:DIO、AO、AI等完成后需要关闭该设备,以释放由函数DRV_DeviceOpen为该设备分配的资源。DRV_DeviceClose((LONGfar*)&DriverHandle);DLLDrivers32-bitDLLDriverDataStructure32-bitDLLDriverDataStructure•AnalogInputstatus=DRV_DeviceOpen(Devicenum,&DeviceHandle);status=DRV_AIConfig(DeviceHandle,lpAIConfig);status=DRV_AIVoltageIn(DeviceHandle,lpAIVoltageIn);在设备句柄DriverHandle指向的设备上,读取指定AI(AnalogInput)通道的电压值。在lpAIVoltageIn指向的结构PT_AIVoltageIn中保存的参数包括:采样通道(chan)、GainCode(gain)、触发模式(TrigMode)和返回电压值(voltage)。typedefstructtagPT_AIVoltageIn{ushortChan;//NoteusedinfactushortGain;//ForsoftwarereferenceushortTrigmode;floatfar*voltage;}PT_AIVoltageIn,FAR*LPT_AIVoltageInDLLDrivers32-bitDLLDriverDataStructure•AnalogOutputstatus=DRV_DeviceOpen(Devicenum,&DeviceHandle);status=DRV_AIVoltageOut(DeviceHandle,lpAIVoltageOut);在设备句柄DriverHandle指向的设备上,以设置浮点型的电压值,来改变指定AO(AnalogOutput)通道的输出状态。在lpAOVoltageOut指向的结构PT_AOVoltageOut中保存的参数包括:指定的AO通道(chan)和所要设置的浮点型电压值(outputValue)。typedefstructtagPT_AIVoltageOut{ushortChan;floatOutputValue;}PT_AIVoltageOut,FAR*LPT_AIVoltageOutDLLDrivers•一旦开始数据采集操作,用户必须知道当前的采样状态,以便及时的把数据从采样缓存中传输到用户缓存,用户根据需要再做进一步的处理。有两种方法可以实现这个过程,一是允许驱动向用户发预定的事件(调用函数DRV_EnableEvent),并等待事件发生的通知(调用DRV_CheckEvent),当得到事件通知后,调用函数DRV_FAICheck查询当前的数据采集状态;二是通过时刻查询数据采集状态(反复调用DRV_FAICheck)。当有事件发
本文标题:[技术培训]数据采集设计与应用2
链接地址:https://www.777doc.com/doc-4391883 .html