K-845 光隔开关量输入输出接口卡使用说明书 北京科瑞兴业科技有限公司 北京科瑞兴业科技有限公司 地址 : 北京市海淀区知春里 28 号开源商务写字楼 212 213 室 邮政编码 :100086 电话 :010-51650651 010-62527214 传真 :010-62657424 http://www.krxgk.com Sales E-mail: sgq@krxgk.com Tech Support E-mail: lilanzhen007@126.com
K-845 开关量输入输出卡技术说明书 1. 概述 K-845 开关量输入输出卡是为 PC-BUS ISA 总线的 486/586 系列的原装机 兼容机及工控机而设计的接口卡, 它适用于工业现场开关状态变化的输出和采集 考虑到在开关量的输入输出中 开 和 关 暂态对计算机干扰十分强烈及现场强电的干扰, 本卡采用了光电隔离技术, 使计算机与现场信号之间全部隔离, 提高了抗干扰能力 本卡有 16 路开关量输入,16 路开关量输出 2. 主要技术指标 2.1 16 路开关量输入 ( 采用共阴输入方式 ) 2.2 输入信号电平范围 :TTL~48V 2.3 16 路开关量输出 ( 达林顿 OC 输出方式 ) 2.4 最大输出电流 : 200mA, 可直接驱动继电器 2.5 各路信号之间, 各路信号与接口卡之间隔离电平 :500V 2.6 本卡共占用主机连续 2 个 I/O 地址口 3. 工作原理 K-845 卡由 16 路输出寄存器,16 路输入寄存器几部分组成 3.1 布局图如下 : 输出驱动输入限流电阻 J1 光 输出寄存器 隔 输入寄存器 地址选择 3.2 开关量输入部分 : 本卡的开关量输入部分采用 74LS245 作为输入寄存器, 外部信号采用共低端输入方式, 经过限流电阻和光电隔离后, 送入输入寄存器 16 路开关量输入信号均可以由 CPU 巡检方式读出, 即 CPU 通过直接读取 I/O 口的数据, 判断输入信号的状态 2
3.3 开关量输出部分 : 本卡的开关量输出部分采用 74LS377 作为输出寄存器, 输出驱动器件 ULN2003 中内部带有吸收二极管, 可有效地吸收感性负载启动时产生的达 600mA 的峰值电流 16 路开关量输出信号均带锁存 主机对一个 I/O 地址执行一次写操作, 就送出了一组 8 路信号 4. 操作说明 本卡的开关量输入信号分两组, 每组 8 路, 共 16 路, 均可以主机巡检方式工作 开关量输出信号也分两组, 每组 8 路, 通过锁存器输出 4.1 本卡 I/O 地址分配 : 地址开关的设置 : 本卡共占用主机连续 2 个 I/O 端口, 通过拨动卡上的地址开关 W6 而设定, 各位代表的意义如下 : ON ON 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 (a) 300H (b) 218H 4.2 本卡各 I/O 地址表示功能如下表 : 端口地址与功能表 端口操作地址操作命令功能 BASE+0 IOR / IOW 读 / 写输入输出前 8 通道数据 BASE+1 IOR / IOW 读 / 写输入输出后 8 通道数据 4.3 输入输出插座接口定义 : 输入输出插座接口定义见下表 : 输入输出插座接口定义表 插座引脚号 信号定义 插座引脚号 信号定义 1 Dout1 20 Dout2 2 Dout3 21 Dout4 3 Dout5 22 Dout6 4 Dout7 23 Dout8 5 Dout9 24 Dout10 6 Dout11 25 Dout12 3
插座引脚号信号定义插座引脚号信号定义 7 Dout13 26 Dout14 8 Dout15 27 Dout16 9 输出供电电源 28 数字地 10 数字地 29 Din1 11 Din2 30 Din3 12 Din4 31 Din5 13 Din6 32 Din7 14 Din8 33 Din9 15 Din10 34 Din11 16 Din12 35 Din13 17 Din14 36 Din15 18 Din16 37 数字地 19 数字地 4.4 开关量输入信号的操作 : +5V 外部信号 R* GND 4.7K TLP 521-4 74LS 245 ( 数据线 ) 外设 K-845 卡 GND 当外部输入信号为低电平时, 没有电流使光电耦合器的二极管发光, 所以光电耦合器的三极管截止, 八缓冲器输出端为 1, 通过三态门读入计算机数据线 而当外部输入信号为高电平时, 电流通过 R* 流过光电耦合器的二极管使二极管发光, 此时光电耦合器的三极管导通, 八缓冲器输出端为 0, 通过三态门读入计算机数据线 电阻网络 R* 可由用户根据现场信号电平幅度而自行更换 ( 出厂时 470Ω ) 4
U in -U R R* 选用的原则如下 : R * = (KΩ ) I 其中 Uin 为现场信号高电平电压值,UR 是加在光耦器上的电压值 I 是流过发光二级管电流, 一般值 3~20mA 左右 推荐用户输入信号和 R* 值如表 3: 表 3 输入信号高电平 R* 值 3V~6V 470Ω 6V~12V 1KΩ 12V~24V 2.4KΩ 24V~48V 4.7KΩ 各档的门槛电压比较接近各档电压的下限值, 门槛电压以下的电平被认为是低电平, 所以有较高的抗噪声干扰的能力 读 16 路开关量输入信号的端口与数据对应关系如下 : 端口地址操作命令 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 基地址 +0 IOR Din8 Din7 Din6 Din5 Din4 Din3 Din2 Din1 基地址 +1 IOR Din16 Din15 Din14 Din13 Din12 Din11 Din10 Din9 4.5 开关量输出信号的操作 : 开关状态的输出, 采用了锁存方式, 输出驱动器采用 ULN2003, 可直接驱动继电器 +5V 电源 10K 负载 数据线 锁存器 74LS377 光耦 TLP521-4 输出端驱动器 ULN2003 GND K-845 卡外设 5
当数据线送 1 时, 八 D 锁存器 (74LS377) 输出为高电平, 光耦 (TLP521-4) 的二极管有电流流过, 使光耦的三极管导通, 此时达林顿驱动器 (ULN2003) 输出截止, 即输出端为高电平 ; 当数据线送 0 时, 八 D 锁存器 (74LS377) 输出为低电平, 光耦 (TLP521-4) 的二极管没有电流流过, 这时光耦的三极管截止, 此时达林顿驱动器 (ULN2003) 输出导通, 即输出端为低电平 写 16 路开关量输出信号的端口与数据的对应关系如下 : 端口地址操作命令 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 基地址 +0 IOW Dout8 Dout7 Dout6 Dout5 Dout4 Dout3 Dout2 Dout1 基地址 +1 IOW Dout16 Dout15 Dout14 Dout13 Dout12 Dout11 Dout10 Dout9 5. 编程举例 5.1 BASIC 语言 : 5.1.1 开关量输入 : A=INP(&H300) B=INP(&H301) 5.1.2 开关量输出 : OUT(&H300),0 OUT(&H301),255 ; 读 1~8 路开关量输入状态 ; 读 9~16 路开关量输入状态 ;1~8 路开关量输出全部导通 ;9~16 路开关量输出全部截止 5.2 汇编语言 : 5.2.1 开关量输入 : MOV DX,300H IN AL,DX ; 读 1~8 路开关量输入状态 MOV DX,301H IN AL,DX ; 读 9~16 路开关量输入状态 5.2.2 开关量输出 : MOV DX,300H MOV AL,0 OUT DX,AL MOV DX,301H MOV AL,0FFH OUT DX,AL ;1~8 路开关量输出全部导通 ;9~16 路开关量输出全部截止 6
5.3 C 语言 : 5.3.1 开关量输入 : #include "stdio.h" #include "dos.h" #include "conio.h" main() /* 清屏 */ { int i,j,base; /* 定义过程变量 */ clrscr(); /* 清屏 */ base=0x300; /* 设卡基地址 =300H */ i=inportb(base); /* 读 1~8 路开关量输入状态 */ j=inportb(base+1); /* 读 9~16 路开关量输入状态 */... 5.3.2 开关量输出 : #include "stdio.h" #include "dos.h" #include "conio.h" main() /* 清屏 */ { int base; /* 定义过程变量 */ clrscr(); /* 清屏 */ base=0x300; /* 设卡基地址 =300H */ outportb(base,0); /* 1~8 路开关量输出全部导通 */ outportb(base+1,0xff); /* 9~16 路开关量输出全部截止 */... 7
6.VB6.0 编程说明 6.1 for Win95 97&98 首先在模块中作如下声明 : Declare Sub out_port Lib "k800.dll" (ByVal nport As Integer, ByVal cvalue As Byte) Declare Function in_port Lib "k800.dll" (ByVal nport As Integer) As Byte ( 注意 : 具体编程时应考虑 k800.dll 所在的路径 ) 然后在应用程序中便可以直接调用这两个函数 具体使用方法说明如下 : 1. 开关量输出 : 例 1:1~8 路开关量输出全送 0, 9~16 路开关量输出全送 1 的编程举例 ( 假定基地址为 300H) Call out_port(768, 0) ;1~8 路开关量输全送 0 Call out_port(769, 255) ;9~16 路开关量输全送 1 2. 开关量输入 : 例 2: 读 16 路开关量输入状态 ( 假定基地址为 300H) In1_8= in_port(768) ; 读 1~8 路开关量输入状态 In9_16 = in_port(769) ; 读 9~16 路开关量输入状态 ( 其中 In1_8 和 In9_16 均为 Byte 型变量 ) 6.2 for Windows2000&WindowsNT 驱动程序文件 (for Windows NT, 2000) 包括 : Setup.exe 安装文件 K800.dll 应用程序接口 K800.sys 设备驱动程序 Readme.doc 接口函数说明 * 注 : 前三个文件名不能做改动 执行 Setup.exe 将驱动程序安装到系统中, 应用程序可以声明 K800.dll 中的函数调用 编程举例与 6.1 相同 8
7. 保修 本产品自售出之日起两年内, 凡用户遵守贮存 运输及使用要求, 而产品质量低于技术 指标的, 凭保修单免费维修 因违反操作规定和要求而造成损坏的, 需交纳器件和维修费 8. 产品成套性 8.1 K-845 光隔离开关量输入输出接口卡壹块 8.2 北京科瑞兴业公司产品光盘壹张 8.3 37 芯 D 型插头壹套 9