工控网首页
>

应用设计

>

简易PC机并口数据采集器设计

简易PC机并口数据采集器设计

2007/10/19 10:56:00
四川攀钢信息公司 胡建亨 熊波 邹俊良 本文提出一种利用3片MAXIM集成电路设计的PC机并口数据采集器.和在Windows下用VB6.0编程实现数据采集的方法。该采集器简单实用,价格低廉。适合于一般低速低频场合的应用.此方法还可以很容易地扩展到更高分辨率的数据采集场合。 将PC机作为上位机。来实现对外部信号的采集与控制,有下述四种方法:l串口方式。其特点是线路简单.有现成的软件可供使用。但是。传输速度要比并行通信 慢得多。2.USB方式。具有传输速度快、占用资源少及真正的即插即用等优点,可是开发难度较大。3.插卡方式。功能较齐全,价格也可接受。但每次使用都 必须开机箱。4.并口方式。价格便宜,不需开机。设计制作容易,使用方便:读者只需对本文提出的设计方法稍加改变,即可设计出不同的数据采集卡。另外,本 文提出的PC并口方式不需要编制复杂的硬件驱动程序。在Win-dows下用VC++编写简单的动态链接库与VB相结合,便可简单地实现数据采集。 一、 设计思想 PC机的打印机适配器采用CEN.YRONICS并行接口标准,提供并行数据线和选通、回答和忙等联络信号线.信号采用标准的TrL.电平。在硬件上不作 任何改动,只需换一个插头及连接线。就可用于其他的并行设备接口,简单易行。把打印机适配器用作非打印机接口时要做的工作是:更换插头连接线和重新编制输 出输入程序。 打印机适配器的作用是把PC机总线与打印机CENTRONICS标准总线的信号进行转换,建立对应的适配关系。因此,它一侧与PCdXT总线I/o口通道相连.另一侧与打印机CENTRONICS标准的插座相接。 本系统通过PC打印适配器发送控制数据和读人采集到的数据,通过PC打印适配器25芯D型插座与A/D转换芯片MAXl58ACPI相连。外部模拟信号由 MAXl58ACPI转换成数字信号,通过打印机25芯D型插座采集到PC中,由PC机进行处理。系统结构原理如附图所示。 二、硬件设计 1.芯片介绍本采集器由1片A/D转换芯片MAXl58ACPI和2片多路模拟开关MAX4066构成8位8通道模数转换器。单5V供电,内置跟踪保持电 路(TRACK/HOLD)、内部时钟(CLOCK)、地址输入(ADDRESS)和数据输出(DA-TA 0UT)2.5μS的每通道转换时间。MAX4066为4路模拟开关.1C控制110与10I的通断.2C控制210与201的通断,以此类推。在本系统 中.每片的lC到4C是连在一起的,以便同时控制高4位或低4位数据。这些器件可以同主机高速传输数据,根据实测。数据转换时间在16μs以下。 2.采集卡介绍使用打印口。主机与 打印口的通信通过3个I/O口进行.地址分别为:输出口(地址378H),输入口(地址379H).和输出口(地址37AH)。本采集卡只用到378H和379H.其引脚定义如附表所示,打印口与采集卡芯片的连接见附图。 工作过程:采集卡上电后。通过378H口给MAXl58ACPI的CS和RD一个低脉冲,以启动转换。大约经过600ns后INT变成低电平,表示转换结 束,这时,转换结果的8位数据将出现在DB0~DB7的数据总线上,接着。低4位的MKX4066的lC~4C变高,通过379H输入低4位数据,然后高 4位的MAX4066的lC~4C变高,通过379H输入高4位数据,最后高低4位数据组合成为完整的8位数据(0~255)。 三、采集方法 1.硬件访问方案VB 6.O不提供对硬件直接访问的功能。要控制低层硬件就必须用到动态连接库.因此本文利用VC++编制一个简单的动态链接库DLL,库中定义对输入输出端口 操作函数,然后在VB中,声明DLL函数,调用它们来完成输入输出操作。 首先。实现VC中的动态链接库col- lectdata.dll的设计,程序如下: UBRARY"COLLECTDATA" DESCRIPT0Nl/O DYNAMIC UNK LIBRARY EXPORTS PORT INPUT@l PORT OUTPUT@2 /*COLLECTDATA.H8*/ #INCLUDE"WINDOWS.H" INT WINAPI PORT INPUT(INT PORTNMMl: INT WINAPI PORT 0UTPUT fINT PORTNMM.INT PORTDATA); /*COLECTDATA.CPP*/ #INCI.UDE"COLLECTDATA.H" #INCLUDE"CONIO.H" INT WINAPI DLLMAIN (HIN. STANCE HINsTANCE.DWORD DWREASON,PVOID PVRESVEREDl {RETURN TRUE;} INT WINAPI PORT INPUT ONT PORTNUMl IRETURN INP(PORTNUM);1 INT WINAPI PORT 0UTPUT {lNT PORTM U M.INT PORTDATAl { 0UTP(PORTNUM PORTDATA); RETURN 0: } 编译CPP文件,生成DLL函数collectdata.dll,然后在VB中声明DLL函数: PRIVATE Declare Function PORT_INPon Lib "COLLECTDATA. DLL" (ByVal PoaNUM As Integer)As Byte PRIVATE Declare Function PoRT_OUTPort Lib "COLLECTDATA. DLL"(ByVal PortNUM As Integer,ByVal PORTDATA AS INTEGERl As INTEGER 然后按照MAXl58ACPI和MAX4066的通信规约,设计出对应的端口操作程序。 例如:数据输入P=port_input(&h379),执行完后P的值等于379H的值,数据输port_output(&h378,DATA),执行完后378H的值等于DATA的值。 2.界面的实现实现基本的数据采集功能后,用户可根据需要,使用VB编制一个操作界面。调用上述子程序即可。
投诉建议

提交

查看更多评论
其他资讯

查看更多

XS接地体在接地工程中的工艺改进

A-R轧管机主传动电气控制方案及西门子直流调速装置调试方法

单机架六辊可逆冷轧机电气自动化技术方案

开发免维护直流电源屏双革项目的技术方案

同步电机频繁损坏原因分析与改进对策