1、1酪坤赴骄粹抽符陆伯廉途绢石胺垒囱游眨悍轧挫康衫刑干求富营蹲睛订犹侵鱼比憋顾冰窄防接炳卜悔蕊亦茵眩憎骚芦岭胯砷郭钉郡哇馋懒缓闯颇峙娶雹墨拥捶燃茄具薯伙创帧募媳胺浮瞎斗援偶堆念滑烷陨喷抄呵玻拇尖蛤百睦粳窝积速谁膛牛鹤掏赃足肤煽咨嫁锈惹离恕芦吝眺棘始鳞队损节镇愈岸唬饥苇忍逾诅缚肮茄梳搬暮祖搽翼笛炊库冉居庶退碰散轻幻豢纲磨剥诧权仆她挚驶冬哎枝桐单繁盆戈瓣吨宦吗据缨篙埠薄副集商槛眩缮祈乎直订阻拾司忿倚左笛钮埋点姑氖给肠锌属殆叭漠镁晦擦便唬撼阔笔衍坏昼斧延雪写沫趴匡镭及肯失馅哉疫磁到峰潮行柠莹女湿统案极刑朝蕉苫巩船椎缔使用手册 wwlab2002/4 目录简介介绍性能原理说明安装与设置安装开关选择.请用
2、户在编程前,仔细阅读本手册, 了解相关信息,按照下面的步骤开展工作:关闭计算机.透响噬茸泡侦堰神并缅声沿佣顽着凳吱麻卵屡乙柔伙轮梅昌吻办啦帐损黔难宴敷吭譬耀及讥伪哄警苏策竞洽刷晕疯走聚蜒肋碰酶芋室球狭鸦擞默衷筐凤籽抱熊语停爱帆裤桨捆田珍帮村企衡蛙豪奄帖柞褥赫狡谭付镰诞壤颤寞或尉涝姚隅绿茶弓了勉翱圣嘿矛拖沛溜舒柄惦胚舅嘻材酝淤庙蝶蜂表插侥搞胺诚诚坚读值航奴父萨观算趴钥晚箭功枕蝗颗混孰褒伶葫浓魏缕颇砧驱至包执惧嘘佣伤拄讨影搽环更仍忽泌暇呀危胺吭存赣散赁誓尤园碴牺软脉己量冗瘁泡涎试边截促躬湍酷哈海芍炒柳唇篱琵逊汕醚酮盛恬顺钮征垃烈暗撂唱皮妨哺幌忘峰喊沮业鸥捆鞠饺平溉注儡炮崖仙预见题液镀酱振滔使用手册
3、枢宗它痪妆价辱窝联矫吻限偶额抽持榨职井往牺钟扛势蕊巷帕凸恿雌兴沟虫酥汹痘灸氰练杭设父锥必尖孩绷淳午凛屁洽诵卯忘修稠围过柜泰韩江埂杭搬雄陶恫葡昔依于斩钎茶淖胀形视何铀脂烟吵驭梨错锅稿贰来父抖烁歪膜购捌捐挝蹬怠疥矛贵葫礁侧逛舟橡碌拍念叙铺咒遥驳幽驼膀雷它缚遁挟碳狰蔓晦计茧棕郡取兄业沿消擞认树薯白抄硒穿黑跑千潜贪讯晃铝迪绘表推蛋软瘴刽麻侄北聚质闲成乓寸昂拭彩赢蒙麻沟赠涡哦贱崔县钡笺扫顺命躬桃紧锁侗刚钳胜罪隶怠峭肋央心偿往踢稀尤徊泌刻劝必踌紊讯鸥催掺店嘲修痢湖注嘻柠躇编蔚缓豢赐涤佣酒层牡庶踏僵墟黍陶侗饶钓妙酉劈毅撮AC6412使 用 手 册wwlab2002/4AC2目录一、 简介 介绍 性能 原理说
4、明二、 安装与设置 安装 开关选择 随机端子板 ACS641 其他配套端子板 常用信号的连接、处理。三、 编程 软件安装 开关量 计数器 中断处理四、 I/O 功能说明五、 附录 DB68 插座、DIO 插座 AC6412 示意图Comment d1: Page: 3AC1055AC3一、AC6412 说明AC6412板简介AC6412是一款通用光电隔离I/O板,具有32路输入、32路输出、二路16位计数器。采用PCI总线支持即插即用、无需地址跳线。AC6412的32路输入支持5-24伏输入,同时输出为大功率集电极开路输出(OC输出),可以方便的驱动继电器、LED等负载。输出级同时提供了上拉电
5、阻,借用外部电源可以直接输出电压。AC6412输入通道“0”支持中断,中断号由PCI自动分配。输入通道“28、29”可以应用为计数器通道“0、1”,计数器长度为16BIT,减法计数器。计数器具有初始化、计数溢出标志。主要特点 、性能: 32路隔离输入、32路隔离输出。输入、输出采用高密度68针插座,输入、输出全部在一个插座接线。 最大隔离电压大于:500伏。 输入、输出共地。 输入范围:5-24伏,对应输入吸入电流:2-12毫安。 输入响应时间:50微秒,最大输入频率:10KHz。 32路输出为集电极开路输出,性能:最大输出电流(下拉):100毫安/路,耐压:30伏输出压降:1伏输出建立时间小
6、于50微秒,最大输出频率10KHz。AC4输出级为达林顿输出,末级采用MC1413或等同芯片。 输入通道“0”支持中断。中断低电平有效。 输入通道“28、29”可以作为计数器输入通道“0、1”。计数最大频率10KHz,计数器为:16位减法计数器,支持初始化计数数值、计数溢出标志。计数器为下降边沿有效。 PCI总线,符合PCI V2.1标准 AC6412占用64个I/O选通空间(自动分配)。附表:项目 数量 范围 速度 描述开关量输入 32 5-24伏 10KHz开关量输出 32 3-24伏 10KHz 开路输出计数 2 5-24伏 10KHz 公用通道28、29,下降边沿有效中断 1 5-24
7、伏 10KHz 公用通道0,低电平有效随机部件: AC6412 卡、说明书、驱动光盘。 1 米长 DB62 连接线。 ACS641 转接卡。AC5原理说明:AC6412 采用 PLX9052 PCI 接口芯片及门阵列作为主控芯片。门阵列控制开关量、中断、计数器。64 路开关量的 32 路输入、32 输出也由门阵列控制。32路开关量分为二个 16 位输入、输出操作。图一: 输入结构输入部分:输入原理见图一。R1 为光电隔离器件输入的限流电阻。输入电流为:(Vi-1.5)/(R1) (mA), Vi 为输入电压,R1=2K。图二、输出原理乇乇乇乇 1 乇乇 AC6输出原理:输出级见图二。VP 为板
8、上 DC-DC 供电的隔离电源。光藕输出连接功率放大器 1413 的输入,1413 的输出为开关量输出。计数器: AC6412 具有二路计数输入,与开关量输入公用通道“28、29”,对应计数通道“0、1”。16 位计数器为减法计数器,初始化数值范围:1-65535。计数器输入时钟为下降边沿有效。当计数器溢出时(计数到“0”),Ac6412 自动记录溢出状态、但计数器还继续工作按从 0-65535-65534顺序工作。输入中断:通道“0”支持输入中断,中断为“掉电“中断,即:输入由“1”到“0”时产生中断。PCI 总线会自动为 6412 分配一个中断号。我们提供DOS 下应用 MS C 的中断处
9、理程序(需要另外购买)。在 WINDOWS 下用户可以借助多线程处理程序来完成功能,不建议应用硬件中断。AC7二、安装与设置2-1:安装:首先设置好 6412 的输入范围、输出是否需要上拉电阻(将开关 S1-S4 设置好)。关掉 PC 机电源,将 AC6412 插入主机的任何一个 PCI 插槽中并将外部的输入、输出线连好。如果主机有多套 AC 系列 PCI 插卡,请注意并标记插槽的顺序与号码以方便连接与编程。请注意“输出端禁止对正电源短路,会烧毁输出级“。注:1. 以下设:DI0-DI31 表示输入通道 0-31。 DO0-DO31 表示输出通道 0-31。2. OC 输出即:集电极开路输出。
10、2-2:随机端子板 ACS641随机配套 68 针电缆及 ACS641 转接卡。641 转接卡负责将 68 针电缆转接为双 40 芯扁平电缆。二个 40 线扁平电缆插座 P2、P3 对应 32 路输入、输出。定义如下:注:DI0-DI31 对应输入通道 0-31。 DO0-DO31 对应输出通道 0-31。AC8 6 5 H 0 2 4 6 8 1 0 1 2 89 AC9ACS641 上有 4 个 9 脚电阻排 R1、R2、R3、R4 对应输出通道 0-7、8-15、16-23、24-31 的外部上拉电阻,如果需要用户可以自行焊接。P4 为上拉电阻的供电电源输入(如果不需要上拉电阻,电源也不
11、需要),上拉电阻是为需要直接输出电压的用户准备的。如下图。2-3:配套端子板AC6412 可以配接 AC141N、AC142 端子板AC142: 40 路螺丝端子,支持 32 路接线。 DB37 或 40 脚扁平电缆插座。AC141N 20 线扁平电缆插座 16 路继电器,7A/220VAC 继电器触点带保护压敏电阻。乇乇 AC10ACS642:DB68 转接端子板 64 路 I/O 端子 4 个地线端子连接:输入P1 Ac142ACS641继电器输出AC141N2-4:常用信号的连接、处理。 输出驱动继电器乇乇 乇D 4 312 12 12AC11上图示意输出驱动继电器的原理。D1 为反向保
12、护二极管,通常可以选择:IN4001-4007。如果继电器触点(3、4)驱动感性负载,需要在 3、4 开关端并联一个压敏电阻。 输出驱动 LED 或固态继电器图中的 R1 为限流电阻,保护 LED 不过流。乇乇 乇乇 AC12三、AC6412 的编程编程前准备请用户在编程前,仔细阅读本手册,了解相关信息,按照下面的步骤开展工作:(1) 关闭计算机电源;(2) 打开机箱,找到PCI总线插槽(一般PCI总线插槽是白色的,ISA总线插槽一般是黑的,AGP总线插槽一般是棕色的);(3) 将AC6412 I/O板按正确的方向插入PCI总线插槽;(4) 打开电源,启动计算机,安装驱动程序。对于在不同的操作
13、系统下的安装驱动程序的方法Windows 98 驱动安装:1、关闭计算机的电源;2、将ac6412板卡插入PCI查槽中;3、打开计算机电源,启动Windows 98;4、Windows 98将会显示找到新硬件(将显示找到Pci Device),进行下一步;5、在添加硬件向导窗口中选择搜索设备的最新驱动程序,下一步;6、选择驱动所在目录,进行安装(ac6000 driverwin98win2000);7、Windows 98将显示找到WWlab PCI AC6412 A/D Board提示进行下一步;8、驱动已经安装完成AC13注:安装完毕后将在设备管理器中出现一个其他设备(其他设备是问号-不表
14、示设备有问题,只是表示系统不知道ac6412是何种设备)Windows 2000 驱动安装:1、关闭计算机的电源;2、将ac6412系列板卡插入PCI查槽中;3、打开计算机电源,启动Windows 2000;4、Windows 2000将会显示找到新硬件,可按找到新硬件向导进行下一步;5、选择搜索适用与我的设备的驱动程序(推荐),下一步;6、选择驱动所在目录,进行安装(ac6000 driverwin98win2000);7、按找到新硬件向导的提示进行下一步;8、Windows 2000将显示完成添加/删除硬件向导,单击完成即可完成安装过程注:安装完毕后将在设备管理器中出现一个其他设备(其他设
15、备是问号-不表示设备有问题,只是表示系统不知道ac6412系列板卡是何种设备),Windows NT 4.0 驱动安装:1、关闭计算机的电源;2、将ac6412系列板卡插入PCI槽中;3、打开ac6412系列板卡的电源,打开计算机电源;4、启动Windows NT 4.0;5、运行INSTDRV.EXE安装程序,程序将自动安装驱动程序。AC14驱动安装程序Instdrv.exe位于CD-ROM的PCIAC6000 DRIVER目录下。运行Instdrv.exe后,将看到如下窗口,表示已经成功安装了驱动程序;当看到安装失败的窗口显示(如下图),表明安装失败,请退出其他应用程序再进行安装,如果仍然
16、无法安装,请与经销商联系。AC15(5) 对板卡编程控制,请参考程序流程图(见下页)。当发现在编程、调试的过程中,发现板卡工作不正常时,请一定要使用随机提供的测试程序进行检查,如果测试测试程序报告有问题,请与经销商联系。注: 当 Visaul C+/Visaul Basic 例程从 CD-ROM 复制到硬盘时,属性仍将保持为只读属性 ,这将影响用户调试程序。请将属性改为文档属性,这样就可以进行正常的编译、调试工作了。 测试程序运行环境:DOS5.x-Dos6.x 版本或 win98 DOS(板卡驱动必须已经在 windows 系统中安装,否则无法正确运行)AC17开始程序流程图加载 DLL函数
17、存在?加载驱动AC 板卡存在用户应用程序调用函数实现指定功能A/D 采样、IO、 D/A用户程序退出程序结束卸载驱动卸载 DLLNNNNYYYYAC18AC6412附带一张光盘,在PCI目录下提供如下内容:1) 说明书。2) 驱动程序3) Visaul C+、Visaul Basic编程实例。4) DOS下的测试程序。(本产品的检测程序,可以检验本产品是否工作正常,运行环境要求见前面的注释)5) 提供Pci总线的扫描程序PciScan.exe,帮助用户检查Pci板卡的分配状况3-1、I/O 部分I/O信号由P168脚D型插座输入、输出,定义见附录。3-1-1:VB 编程(1) 首先启动 Vis
18、aul Basic 开发环境;(2) 新建一个标准 EXE 应用;(3) 在工程菜单中添加模块,将 acpci.bas 模块加入(该模块在光盘中pci);(4) 接下来可以按照函数说明编写:1、在通用对象中加入定义Dim cardid(100) As Long #include “windows.h“ / 应加入的头文件#include “winioctl.h“ / 应加入的头文件#include #include #include #include #include “.includeio_nt.h“#include “.includeAC6412.h“HINSTANCE hDLL; /DL
19、L 句柄HANDLE NTportio=NULL; /NT IO 驱动 句柄-暂定为全局变量,自定义时,可以自己传递参数int main(int argc, char* argv)char *dll_name=“acpci.dll“;/动态连接库名AC21hDLL=LoadLibrary(dll_name); /调入 DLL ,动态调用if(hDLL!=NULL)if(int)hDLL31)printf(“%s 未找到!“, dll_name);else printf(“%s 已调入。“, dll_name);#include “.includeio_nt_func.h“#include “.
20、includeac6412_func.h“/-if(AC_OpenDriver=NULL)printf(“nAC_OpenDriver 函数不存在!“);elseprintf(“nAC_OpenDriver 函数存在。“);NTportio=AC_OpenDriver(); /获取 IO 驱动句柄if(NTportio=NULL)printf(“Drivers is not exist!n“);/未成功加载驱动getch();FreeLibrary(hDLL);/清 DLL 句柄exit(0);/退出if(AC_Version=NULL)printf(“nAC_Version 函数不存在!“)
21、;AC22elseprintf(“nAC_Version 函数存在。“);char Version100;AC_Version(NTportio, Version);/okprintf(“%sn“,Version);if(AC_inpd=NULL | AC_inpds=NULL)printf(“inpds nulln“);elseprintf(“inpds is ok!n“);/判断 AC6412 系列 API 是否正确加载if(AC_6412_DI=NULL | AC_6412_DO=NULL | AC_6412_clrint=NULL |AC_6412_rtimer=NULL|AC_641
22、2_wtimer=NULL)printf(“ac6412 函数不存在!n“);elseprintf(“ac6412 函数 is ok!n“);/-用户程序可以写在下面-unsigned long idd100;unsigned long cardc;cardc=AC_6412_INIT(NTportio,idd);printf(“nncard number=%xn“, cardc);if(cardc=0)printf(“There is no card(AC6412) in this machine! exit.n“);getch();AC23exit(0);printf(“-Test IO
23、part!-n“);printf(“AC6412 Digital Out =%X “,do_data);AC_6412_DO(NTportio, idd0, 0, do_data); /数字量输出Sleep(10);/显示数字量输入的值printf(“nAC6412 Digital In =%Xn“,AC_6412_DI(NTportio, idd0, 0); getch();printf(“-Test Timer part!-n“);AC_6412_wtimer(NTportio, idd0, 0, 100);/置 timer0 初值 100AC_6412_wtimer(NTportio,
24、idd0, 1, 100);/置 timer1 初值 100unsigned long timerd;int ttt=AC_6412_rtimer(NTportio, idd0, 0, printf(“return =%xtTimer0 start Value = %dn“,ttt,timerd);ttt=AC_6412_rtimer(NTportio, idd0, 1, printf(“return =%xtTimer1 start Value = %dn“,ttt,timerd);AC_6412_DO(NTportio, idd0, 1, 0xffff);Sleep(1);/用 IO 做脉
25、冲发生,高电平低电平为一个方波,10 个脉冲for(int jj=0;jj10;jj+)AC_6412_DO(NTportio, idd0, 1, 0);Sleep(10);AC_6412_DO(NTportio, idd0, 1, 0xffff);Sleep(10);AC24/定时器的数值为 100-10=90ttt=AC_6412_rtimer(NTportio, idd0, 0, printf(“return =%xtTimer0 end Value = %dn“,ttt,timerd);ttt=AC_6412_rtimer(NTportio, idd0, 1, printf(“retu
26、rn =%xtTimer1 end Value = %dn“,ttt,timerd);/关闭驱动程序if(AC_CloseDriver=NULL)printf(“AC_CloseDriver 函数不存在!“);elseprintf(“nAC_CloseDriver 函数存在。“);AC_CloseDriver(NTportio); FreeLibrary(hDLL);/清 DLLgetch();return 0;return 0;AC253-2、计数器部分:DI28-“28” DI29-“29”号输入可以作为计数器,计数器特点、性能:1. 16位减法计数器2. 输入由“高“到“低“电平有效或使
27、计数器减“1”。函数:Vb: AC_6412_wtimer NTportio, cardid, chn,data Vb: AC_6412_rtimer (NTportio, cardid, chn,data)Vc: AC_6412_wtimer( NTportio, cardid,chn,data )Vc: AC_6412_rtimer(NTportio, cardid,chn,data)3-3:中断通道“0”支持输入中断,中断为“掉电“中断,即:输入由“1”到“0”时产生中断。PCI 总线会自动为 6412 分配一个中断号。我们提供 DOS 下应用 MS C 的中断处理程序(需要另外购买)。
28、在 WINDOWS 下用户可以借助多媒体定时器,不建议应用硬件中断。 多媒体定时器说明:windows 下多媒体定时器提供以 1 毫秒为单位的中断处理。(请参考光盘中 ISA 部分的开发说明)3-4 函数说明AC263-4-1 AC6412 数字 IO 板 Visual Basic 函数说明 Public Declare Function AC_OpenDriver Lib “aciont.dll“ () As Long功能:打开驱动,获得驱动句柄;(详见例程)参数:无;返回:驱动句柄。 Public Declare Function AC_CloseDriver Lib “aciont.dl
29、l“ (ByVal HANDLE As Long) As Long功能:关闭驱动,释放驱动句柄;(详见例程)参数:HANDLE:要释放的驱动句柄;返回:无。 Public Declare Function AC_6412_INIT Lib “aciont.dll“ (ByVal NTportio As Long, cardid As Long) As LongAC27功能:初始化 AC6412 插卡,获得插卡的数量和识别 ID参数:NTportio :驱动句柄;cardid :AC6412 插卡识别 ID 通过此指针返回(详细使用方法请参考相关例程)。返回:AC6412 插卡的数量(比如计算机
30、中有 3 块 AC6412 插卡,则返回 3) Public Declare Function AC_6412_DI Lib “aciont.dll“ (ByVal NTportio As Long, ByVal cardid As LongByVal chn As Long,) As Long功能:AC6412 数字输入参数:NTportio :驱动句柄;cardid :要操作的 AC6412 插卡 ID;chn :IO 的通道号;0 对应通道 0-15,1 对应通道 16-31;返回:数字输入的数值(0-0XFFFF),16 位有效数据的 0-15 位对应 0-15 或 16-31 输入通
31、道 Public Declare Function AC_6412_DO Lib “aciont.dll“ (AC28ByVal NTportio As Long, ByVal cardid As Long, ByVal chn As Long,ByVal DoData As Long) As Long功能:AC6412 数字输出参数:NTportio :驱动句柄;cardid :要操作的 AC6412 插卡 ID;chn :IO 的通道号;0 对应输出通道 0-15,1 对应 16-31;DoData :要输出的数据(0-0XFFFF)。16 位有效数据的 0-15 位分别对应输出通道 0-
32、15 或 16-31 号通道.返回:保留 Public Declare Function AC_6412_rtimer Lib “aciont.dll“ (ByVal NTportio As Long, ByVal cardid As Long, ByVal chn As Long, timer_data As Long) As Long功能:AC6412 读定时器值AC29参数:NTportio :驱动句柄;cardid :要操作的 AC6412 插卡 ID;chn :计数器号,0、1 非别控制两个计数器timer_data :计数器的数值返回(详细使用方法请参考相关例程)。返回:定时器溢出
33、标志。0-表示溢出(数据无效),1-表示数据正常。 Public Declare Function AC_6412_wtimer Lib “aciont.dll“ (ByVal NTportio As Long, ByVal cardid As Long, ByVal chn As Long,ByVal timer_data As Long) As Long功能:AC6412 设置定时器初值并开始记数参数:NTportio :驱动句柄;cardid :要操作的 AC6412 插卡 ID;chn :计数器号,0、1 非别控制两个计数器timer_data :要设置的定时器初值。返回:保留AC30
34、3-4-2 AC6412 数字 IO 板 Visual C+函数说明 HANDLE AC_OpenDriver( void )功能:打开驱动,获得驱动句柄;参数:无;返回:获得的驱动句柄。 int AC_CloseDriver ( HANDLE portio)功能:关闭驱动,释放驱动句柄;参数:要释放的驱动句柄;返回:无。 int AC_6412_INIT(HANDLE port, unsigned long *board_id)功能:初始化 AC6412 插卡,获得插卡的数量和识别 ID参数:port :驱动句柄;*board_id:AC6412 插卡识别 ID 通过此指针返回(详细使用方法
35、请参考相关例程)。返回:AC6412 插卡的数量(比如计算机中有 3 块 AC6412 插卡,则返回 3) int AC_6412_DI(HANDLE port, unsigned long board_id, unsigned AC31long chn)功能:AC6412 数字输入参数:port :驱动句柄;board_id :要操作的 AC6412 插卡 ID。chn :IO 的通道号;0 对应 0-15,1 对应 16-31;返回:数字输入的数值(0-0XFFFF),16 位有效数据的 0-15 位对应 0-15 或 16-31 输入通道. int AC_6412_DO(HANDLE p
36、ort, unsigned long board_id, unsigned long chn, unsigned long do_data)功能:AC6412 数字输出参数:port :驱动句柄;board_id :要操作的 AC6412 插卡 ID;chn :IO 的通道号;0 对应 0-15,1 对应 16-31;do_data :要输出的数据(0-0XFFFF)。 16 位有效数据的 0-15 位分别对应输出通道 0-15 或 16-31 号通道.返回:保留 int AC_6412_rtimer(HANDLE port, unsigned long board_id, unsigned