IOC-0640PCI总线I/O扩展卡 用 户 手 册
Version 1.3
IOC0640用户手册 Version 1.3
目录
0 关于本手册 (1)
1 引言 (2)
2 硬件系统概述 (3)
2.1 硬件结构尺寸 (4)
2.2 硬件配置 (4)
2.3 硬件接口电路 (6)
2.3.1 通用数字输入信号接口INPUT (6)
2.3.2 通用数字输出信号接口OUTPUT (6)
2.4 硬件安装 (8)
3 驱动程序安装 (9)
3.1 驱动程序概况 (9)
3.2 驱动程序安装步骤 (9)
4 软件系统概述 (12)
4.1 驱动程序概况: (12)
4.2 WIN98/2000/NT下IOC‐0640的中断机制 (12)
4.3 演示程序 (15)
4.4 I/O控制函数库说明 (15)
4.4.1 初始化函数 (16)
4.4.2 通用I/O控制函数 (16)
4.4.3 板卡中断函数 (17)
4.4.4 I/O口中断设置函数 (18)
4.4.5 I/O口软件滤波函数 (20)
4.4.6 运动函数错误码说明 (20)
4.5 例子程序 (21)
5 演示软件及应用 (22)
6 用户系统开发 (23)
6.1 基于WINDOWS平台的应用软件结构 (23)
6.2 V ISUAL B ASIC环境下编程 (24)
6.3 V ISUAL C++环境下编程 (26)
7 附录 (30)
7.1 硬件信号接线板端口定义表 (30)
7.2 硬件信号接线盒端口定义表 (31)
7.3 版次说明 (32)
技术支持热线:0755-******** 网址:https://www.wendangku.net/doc/7017237521.html,
2
0关于本手册
本手册旨在帮助你学习IOC-0640控制卡的使用,包括软件函数的调用,参数的设置,硬件接口的接线和应用例程软件的编写等。本手册总共分七大章节:
第一章:引言。关于本产品的大概描述和关于本产品的相关申明。
第二章:硬件系统概述。关于本产品硬件相关介绍,包括详细硬件结构尺寸,输出口电平设置,接口电路的接线和硬件的安装。
第三章:驱动程序的安装。介绍IOC-0640驱动程序的详细安装步骤。
第四章:软件系统概述。关于本产品软件相关介绍,包括本产号所支持的的系统驱动程序,演示软件的描述,函数库详细说明和例子子程序的说明。
第五章:演示软件及应用。介绍演示软件的使用和操作。
第六章:用户系统开发。详细介绍用户在VB和VC开发环境下的简单的应用软件的开发。
第七章:附录。提供详细硬件信号接口表。
1引言
雷赛IOC-0640控制卡是一款基于ASIC技术的高性能,高可靠的PCI总线I/O控制卡,最大支持47路通用输入,48路通用输出,支持输入口中断功能。输入输出均采用光电隔离和滤波技术,可以有效隔离外部电路的干扰,以提高系统的可靠性,并且软件有专用的可调用的滤波函数进行软件滤波。
同时雷赛公司为IOC-0640设计了一套易学易用、功能丰富的I/O函数库,大大缩短了用户应用软件开发、调试时间。随卡免费提供的MOTION0640测试软件,可以演示和测试IOC-0640的绝大多数控制功能,方便客户在系充开发时的调试。
特别申明:
本手册版权归深圳市雷赛控制技术有限公司所有,未经雷赛公司书面许可,任何人不得翻印、翻译和抄袭本手册中的任何内容。涉及IOC-0640控制卡软件的详尽资料以及每个函数的介绍和范例,请参阅IOC-0640控制卡软件使用手册。本手册中的信息资料仅供参考。由于改进设计和功能等原因,雷赛公司保留对本资料的最终解释权;内容如有更改,恕不另行通知!
2硬件系统概述
雷赛IOC-0640是一款兼容PCI V2.2标准的32Bit PCI标准半长卡,具体外形图如下:
图2-1 IOC-0640控制卡外观图
雷赛IOC-0640卡为用户提供了最多47路通用数字输入信号和最多48路的通用输出信号,所有输入输出信号接口均采用光电隔离和滤波技术,这样可以有效隔离外部电路的干扰,以提高系统的可靠性,并且软件有专用的滤波函数进行软件滤波,所有输出口可以进行初始电平的设置。硬件系统框图如图2-2所示:
IOC-0640控制卡的硬件系统框图:
图2-2 IOC-0640控制卡系统框图
2.1 硬件结构尺寸
结构尺寸如下:
图2-3 IOC-0640控制卡结构尺寸图
2.2 硬件配置
IOC-0640控制卡上面有2个拨码开关,分别是SW10和SW11。通过它可以设置通用输出口初始
电平的状态,以下是设置的详细说明:
SW10是 OUT1~OUT24上电初始电平的选择开关:选择“OFF”时输出初始电平为低,选
择”ON”时输出初始电平为高。如图2.4所示:
图2.4 拨码开关SW10的设置示意图
SW10的第1位:OUT1~OUT6初始电平设置位。 SW10的第2位:OUT7~OUT12初始电平设置位。 SW10的第3位:OUT13~OUT18 初始电平设置位。 SW10的第4位:OUT19~OUT24 初始电平设置位。
OFF
ON
SW11是 OUT25~OUT48上电初始电平的选择开关:选择“OFF”时输出初始电平为低,选
择”ON”时输出初始电平为高。如图2.5所示:
图2-5 拨码开关SW11的设置示意图
SW11的第1位:OUT25~OUT30 初始电平设置位。 SW11的第2位:OUT31~OUT36 初始电平设置位。 SW11的第3位:OUT37~OUT42 初始电平设置位。 SW11的第4位:OUT43~OUT48 初始电平设置位。
OFF
SW11
ON
2.3 硬件接口电路
IOC-0640卡为用户提供了最多47路通用数字输入信号和最多48路的通用输出信号,所有输入输出信号接口均采用光电隔离和滤波技术,这样可以有效隔离外部电路的干扰,以提高系统的可靠性,并且软件有专用的滤波函数进行软件滤波。
2.3.1通用数字输入信号接口INPUT
IOC-0640卡为用户提供了最多32路通用数字输入信号,用于开关信号、传感器信号或其它信号的输入。其接口电路加有光电隔离元件,可以有效隔离外部电路的干扰,以提高系统的可靠性。
通用数字输入信号接口原理图如图2-4所示:
图2-4 INPUT 信号输入原理图
2.3.2通用数字输出信号接口OUTPUT
IOC-0640控制卡为用户提供了最多48路通用数字输出信号,由ULN2803驱动,可用于对继电器、电磁阀、信号灯或其它设备的控制。其接口电路都加有光电隔离元件,可以有效隔离外部电路的干扰,提高了系统的可靠性。
OUT1~OUT48端口可设置上电时的初始电平,详见:2.2 硬件配置
IOC-0640卡的通用数字输出信号控制常用元器件的接法如下:
1、通发光二极管
通用数字输出端口控制发光二极管时,需要接一限流电阻R,限制电流在10MA左右,电阻值大约在2K到5K左右,根据使用的电源来选择,电压越高,使用的电阻值越大些。原理图如图2-5所示:
图2-5 输出口接发光二极管
2、灯丝型指示灯:
通用数字输出端口控制灯丝型指示灯时,为提高指示灯的寿命,需要接预热电阻R,电阻值的大小,以电阻接上后,输出口为1时,灯不亮为原则。原理图如图2-6所示:
图2-6 输出口接灯丝型指示灯
3、小型继电器:
继电器为感性负载,必须并联一个续流二极管,以保护IOC-0640卡的输出口驱动元件ULN2803。继电器接线图如图2-7:
图2-7 接小型继电器的原理图
注意: 1. 在使用通用数字输出端口时,切勿把外部电源直接
接至通用数字输出端口上,否则,会损坏ULN2803。
2.4 硬件安装
雷赛(LeiSai)IOC-0640控制卡硬件结构遵从32bit PCI卡结构标准,其安装方法类同普通32bit PCI卡的安装,具体参考步骤如下:
1)打开IOC-0640的包装, 参考3.1章节的说明,按照实际应用的需求,完成硬件配置。
2)使用辅助接口的用户,请将辅助接口与IOC0640对应的插座连接,并确保连接牢固,可靠。
3)触摸地线,完全释放操作员身上的静电,带好防静电手套。
4)确定PC机已经关闭,以及一切与PC相连的设备也已关闭。
5)打开PC机的机箱。
6)选择一个靠近处理器的32bit PCI插槽,将IOC0640垂直插入插槽中。
7)将IOC-0640用螺钉紧固在PC机机箱上,确保紧固、可靠。
8)使用辅助接口的用户,请将辅助接口也用螺钉紧固在PC机机箱上,确保紧固、可靠。
9)盖上PC机机箱,至此硬件安装完毕!
3驱动程序安装
3.1 驱动程序概况
雷赛公司为IOC-0640用户配套提供Windows NT/2000/XP/7等操作系统环境下的卡的驱动程序和运动控制函数动态链接库,为客户在不同的应用系统中能开发出适合自己的应用控制系统。
3.2 驱动程序安装步骤
雷赛(LeiSai)IOC-0640运动控制卡的驱动程序遵从32bit PCI卡驱动标准,其安装方法类同普通32bit PCI卡驱动程序的安装方法。下面以Windows XP操作系统下的安装为例:
1)确保已经通读本手册,并参照2.4硬件安装将IOC-0640硬件安装好。
2)启动PC机,进入Windows XP操作系统。
3)操作系统系统提示发现新硬件,并弹出图3-1所示的“找到新硬件安装向导”界面。
4)将IOC-0640所配光盘放入光驱中,
5)选择“从列表或指定位置安装(高级)(S)”,点击“下一步”,系统将弹出“找到新硬件安
装向导”另一界面,如图3.2
图3-1 新的硬件安装向导界面
6)在图3-2所示的向导中,点选“在这些位置中搜索最佳驱动程序”并勾选上“在搜索中包括这个位
置”,点击浏览。
7)在弹出的“浏览文件夹”的窗口中,找到光盘中IOC-0640 \INF目录后,点击“确定”按钮后系
统将弹出“找到新硬件安装向导”另一界面,如图3.3所示:
图3-2浏览并选择安装文件夹INF
8)在图3-3中,点击“下一步”按钮后系统将弹出“找到新硬件安装向导”另一界面,如图3.4:
图3-3 开始安装驱动软件
9)如图3-4所示,向导正在安装LeiSai IOC-0640运动控制卡的驱动程序。
图3-4 安装驱动软件进行中
10)等待安装完成,显示如图3-5所示界面,点击完成。
图3-5 完成IOC-0640控制卡的安装
11)至此雷赛(LeiSai)IOC-0640运动控制卡的驱动程序安装完成,可以正常使用了。
4软件系统概述
雷赛(LeiSai)IOC-0640控制卡软件系统包括:软件驱动程序,中断说明,演示程序, I/O控制函数库,例子程序。
4.1驱动程序概况:
雷赛公司为IOC-0640用户配套提供Windows NT/2000/XP/7等操作系统环境下的卡的驱动程序和运动控制函数动态链接库,为客户在不同的应用系统中能开发出适合自己的应用控制系统,卡驱动程序具体安装方法请参考:3 驱动程序安装
4.2WIN98/2000/NT下IOC-0640的中断机制
IOC-0640的中断机制如图4-1所示,IO中断触发板卡中断,然后板卡向上位机提出中断请求,最后上位机执行中断服务程序对中断处理。IOC0-640中断功能默认为关闭,因此使用IOC0640的中断功能之前,其板卡中断必须打开,同时至少要有一路IO中断是打开的。
图4-1 IOC0640中断响应机制
IOC-0640卡全部输入口都支持中断功能,中断触发方式支持上升沿触发或下降沿触发,触发方式可以通过软件设置,默认为上升沿触发。
中断服务程序开放给用户自己编写,在设置板卡中断的时候挂接。中断服务程序中必须要清除中断,否则中断一直有效导致中断服务程序持续执行。读取IO的中断状态,则中断解除。
受系统效率和中断频率的影响,并不保证每次中断都能激活上位机的中断服务程序,当中断频率很高,而操作系统线程调度慢时,有可能出现多次中断堆叠。一般要求中断频率<=10KHz。
详细编程可参考以下代码(在VC++环境下编写),代码的功能是当输入口1有中断时,打开输出口1:
//定义中断服务程序的参数结构(用户可以根据自己的需要定义)
typedef struct IOC0640_OPERATE_DATA
{
WORD cardno; // number of card
WORD bitno; // number of IO bit
WORD on_off; // bit data
} IOC0640_OPERATE_DATA,*IOC0640_OPERATEDATA_HANDLE;
//全局变量
IOC0640_OPERATE_DATA m_data;
//开启中断函数代码
void CIOC0640 Dlg::OnBnIntEnable()
{
UpdateData();
//使能IO中断
ioc_config_intporten(0, 0, 0xffffffff);
//设置中断服务程序参数
m_data.bitno = 1;
m_data.cardno = 0;
m_data.on_off = 1;
//使能板中断,并挂接中断服务程序ioc_int_callback
ioc_int_enable(nCardNo, ioc_int_callback, (PVOID) &m_data); }
//关闭中断函数代码
Void CIOC0640 Dlg::OnBnIntDisable()
{
ioc_int_disable(nCardNo);
}
//中断服务程序
UINT ioc_int_callback(PVOID operate_data)
{
IOC0640_OPERATEDATA_HANDLE m_OperateData= (IOC0640_OPERATEDATA_HANDLE) operate_data; DWORD status;
//读取中断状态,同时解除中断
status = ioc_read_intportstatus(nCardNo,0);
if(status&0x1)//输入口1中断有效
{ //打开输出口1
ioc_write_outbit(m_OperateData->cardno, m_OperateData->bitno, m_OperateData->on_off);
return 0;
}
}
4.3演示程序
IOC-0640控制卡演示软件的设计,大大简化了用户的调试过程。将IOC-0640的软件CD盘插进计算机光驱,在相应的目录下,例如“演示界面”,将其全部拷贝到计算机硬盘的任意指定位置后,运行motion0640.exe,即可对控制卡的各项主要功能进行检测、学习、还可以借此软件对您的整个自动化系统I/O进行初步的调试,详细资料参考: 5.演示软件及应用。
4.4 I/O控制函数库说明
雷赛(LeiSai)为客户能够开发适合自己的应用控制系统,提供了丰富的I/O功能函数,用户可以根椐自己系统的需要灵活调用不同的I/O函数。
IOC-0640卡的控制函数库包括5类18个库函数。在本节中,我们对这些函数分类进行详细的说明。如前所述,用户在具体应用中很可能只需调用函数库中的部分函数便可满足其实际需求。
库函数列表如下:
函数名描述
初始化函数
ioc_board_init 初始化控制卡
ioc_board_close 关闭控制卡
通用I/O控制函数ioc_read_inbit 读取输入口的状态ioc_write_outbit 设置输出口的状态ioc_read_outbit 读取输出口的状态ioc_read_inport 读取输入端口的值ioc_read_outport 读取输出端口的值ioc_write_outport 设置输出端口的值
板卡中断设置函数
ioc_int_enable 允许控制卡中断
ioc_int_disable 禁止控制卡中断
I/O口中断设置函数ioc_config_intbitmode 设置输入口的中断使能和触发方式ioc_read_intbitmode 读取输入口的中断使能和触发方式ioc_read_intbitstatus 读取输入口的中断状态
ioc_config_intporten 设置输入端口的中断使能
ioc_config_intportlogic设置输入端口的中断触发方式
ioc_read_intportmode 读取输入端口的中断使能和触发方式ioc_read_intportstatus读取输入端口的中断状态
滤波函数ioc_set_filter 设置输入口滤波
下面我们对这些函数分类进行详细说明:
4.4.1 初始化函数
int ioc_board_init(void)
功能:为控制卡分配系统资源,并初始化IOC0640卡。
参数:无
返回值:卡数,(0 - 7),其中0表示没有卡
void ioc_board_close(void)
功能:关闭IOC0640卡,释放系统资源
参数:无
返回值:无
4.4.2 通用I/O控制函数
int ioc_read_inbit(WORD cardno, WORD bitno)
功能:读取指定控制卡的某一位输入口的电平状态
参数: cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)bitno 指定输入口位号(取值范围:1-47)
返回值:0表示低电平;1表示高电平
WORD ioc_write_outbit(WORD cardno, WORD bitno,WORD on_off)
功能:对指定控制卡的某一位输出口置位
参数: cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)bitno 指定输出口位号(取值范围:1-48)
on_off 输出电平:0-表示输出低电平,1-表示输出高电平。返回值:错误代码
int ioc_read_outbit(WORD cardno, WORD bitno)
功能:读取指定控制卡的某一位输出口的电平状态
参数: cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)
bitno 指定输入口位号(取值范围:1-47)
返回值:0表示低电平;1表示高电平。
long ioc_read_inport(WORD cardno,WORD m_PortNo)
功能:读取指定控制卡的全部通用输入口的电平状态
参数:cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)
m_PortNo 端口号,范围(0-1)
返回值:m_PortNo 为0时,bit0 – bit31位值分别代表第1 – 32号输入端口值。
m_PortNo 为1时,bit0 – bit14位值分别代表第33 – 47号输入端口值。
long ioc_read_outport(WORD cardno,WORD m_PortNo)
功能:读取指定控制卡的全部通用输出口的电平状态
参数:cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)
m_PortNo 端口号,范围(0-1)
返回值:m_PortNo 为0时,bit0 – bit31位值分别代表第1 – 32号输出端口值。
m_PortNo 为1时,bit0 – bit15位值分别代表第33 – 48号输出端口值。
DWORD ioc_write_outport(WORD cardno,WORD m_PortNo, DWORD port_value)
功能:指定控制卡的全部通用输出口的电平状态
参数:cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)
m_PortNo 端口号,范围(0-1)
port_value m_PortNo 为0时,bit0 – bit31位值分别代表第1 – 32号输出端口值。
m_PortNo 为1时,bit0 – bit15位值分别代表第1 – 48号输出端口值。
返回值:错误代码
4.4.3板卡中断函数
DWORD ioc_int_enable(WORD cardno, IOC0640_OPERATE funcIntHandler, PVOID operate_data) 功能:允许指定控制卡的中断
参数:cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)
funcIntHandler 中断回调函数指针,
函数指针类型: UINT (*IOC0640_OPERATE)(PVOID operate_data)
operate_data 回调函数传递参数
返回值:错误代码
DWORD ioc_int_disable(WORD cardno)
功能:禁止指定控制卡的中断
参数:cardno指定控制卡号, 范围(0 -N - 1 ,N为卡数)
返回值:错误代码
4.4.4 I/O口中断设置函数
DWORD ioc_config_intbitmode(WORD cardno, WORD bitno,WORD enable,WORD logic)
DWORD ioc_read_intbitmode(WORD cardno, WORD bitno,WORD *enable,WORD *logic)
功能:设置/读取指定控制卡输入口的使能设置和触发方式。
参数:cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)
bitno: 输入口位号(1-47)
enable 输入口中断使能,0-无效,1有效
logic 输入口中断触发逻辑,0-表示中断信号上升沿有效,1-表示中断信号下降沿有效。返回值:错误代码
int ioc_read_intbitstatus(WORD cardno, WORD bitno)
功能:读取指定控制卡输入口的中断状态
参数: cardno 指定控制卡号, 范围(0 -N - 1 ,N为卡数)
bitno 指定输入口位号(取值范围:1-47)
返回值:输入口中断状态:0-无效,1有效
DWORD ioc_config_intporten(WORD cardno,WORD m_PortNo, DWORD port_en)