AC61l1(SDK20)LabⅤIEW开发说明 本公司已在早期提供了一套完整的LabⅤIEW示例程序,其中包括了DA、 I/O和AD所包含的各项函数的详细使用方法。 在 Labview中,提供了一个名为 Call Library Function Node的节点来实现 对动态连接库的调用。该节点位于 Functions模板中的 Advanced字模板中 如图1所 Call Library Function Node 图1 LabVIEW中的 Call Library Function Node节点 用户只需找到动态连接库文件并将其加载进来,并选择函数名称、添加相应 参数即可。如图2所示 Library Name or Path ac6111 dl Browse Function Name AC6111_CreateDevice Run in UI Thread Calling Conventions stdcall (WINAPI) Parameter return type √ return type Type Numeric pError Parameter Before Data Type Unsigned 32-bit Integer Add a Parameter After Delete this Parameter Function Prototype unsigned long AC6111_CreateDevice( unsigned long instance, unsigned long *pError Cancel p 图2 Call Library Function Node节点设置
AC6111(SDK2.0)LabVIEW 开发说明 本公司已在早期提供了一套完整的 LabVIEW 示例程序,其中包括了 DA、 I/O 和 AD 所包含的各项函数的详细使用方法。 在 LabVIEW 中,提供了一个名为 Call Library Function Node 的节点来实现 对动态连接库的调用。该节点位于 Functions 模板中的 Advanced 字模板中。 如图 1 所示。 图 1 LabVIEW 中的 Call Library Function Node 节点 用户只需找到动态连接库文件并将其加载进来,并选择函数名称、添加相应 参数即可。如图 2 所示。 图 2 Call Library Function Node 节点设置
其中ⅤCDLL中的变量和 Labview变量的对应关系如下 Visual c/c++: Lab view HANDLE: U32 Type: Numeric; Data type: Unsigned 32-bit Integer; Pass: Value unsigned short: U16 *4H(Type: Array; Data type: Unsigned 16-bit Integer Array Format: Array Data Pointer *short: 116 4H( Type: Array; Data type: Singled 16-bit Integer; Array Fc ormat Array Data Pointer) unsigned long: U32 i( Type: Array; Data type: Unsigned 32-bit Integer; Array Format: Array Data Pointer *long: 132 3 A8(Type: Array; Data type: Singled 32-bit Integer; Array Format Array Data Pointer) int:132 3#i(Type: Array; Data type: Singled 32-bit Integer; Array Format array data Pointer *char Strin g struct: Cluster(Type: Adapt to Type; Data Format: Handles By Value; Function Prototype: void*) 目前,本公司在原有基础上将所有DLL函数的调用全部编译为SubⅥI的形 式,用户只需通过 Functions模板中左下角的 Select a vi(如图3所示)将所需 SubⅥ添加到 Block diagram中。无需用户使用 Call Library Function Node节点 自己设置DLL函数,并可避免用户在使用中的不必要的错误
其中 VC DLL 中的变量和 LabVIEW 变量的对应关系如下: Visual C/C++:LabView HANDLE:U32 Type:Numeric; Data type:Unsigned 32-bit Integer; Pass:Value) *unsigned short:U16 数组(Type:Array; Data type:Unsigned 16-bit Integer; Array Format:Array Data Pointer) *short :I16 数组(Type:Array; Data type:Singled 16-bit Integer; Array Format: Array Data Pointer) *unsigned long:U32 数组(Type:Array; Data type:Unsigned 32-bit Integer; Array Format: Array Data Pointer) *long:I32 数组(Type:Array; Data type:Singled 32-bit Integer; Array Format: Array Data Pointer) *int:I32 数组(Type: Array; Data type:Singled 32-bit Integer;Array Format: Array Data Pointer) *char:String struct:Cluster(Type:Adapt to Type; Data Format:Handles By Value; Function Prototype:void*) 目前,本公司在原有基础上将所有 DLL 函数的调用全部编译为 Sub VI 的形 式,用户只需通过 Functions 模板中左下角的 Select a VI(如图 3 所示)将所需 Sub VI 添加到 Block Diagram 中。无需用户使用 Call Library Function Node 节点 自己设置 DLL 函数,并可避免用户在使用中的不必要的错误
All F □口x lect a VI.. [23I 8_ 國旧 口皿 图3 Select 各SubⅥI说明如下: 驱动操作 AC6111 CreateDevice vi 功能:获得AC61l采集卡驱动句柄 参数 Instance:AC6lll板卡的序号,如0、1、2; pError:错误代码 返回值: dEvice(out):AC6l卡驱动句柄 备注:一般在用户程序启动后,可获取板卡句柄;其他 Sub vi的使用都根据句柄来识别 AC6lll。 AC6111 CreateDevice vi 功能:关闭AC6lll驱动句柄 参数 dEvice(in):输入端驱动句柄(驱动句柄由此输入); dEvice(out):输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值 备注:当用户程序退出之前,请关闭驱动句柄。 AC6lllⅤ ersion. vI 功能:读取驱动程序软件版本信息
图 3 Select a VI 各 Sub VI 说明如下: I、驱动操作 AC6111_CreateDevice.vi 功能:获得 AC6111 采集卡驱动句柄。 参数: instance :AC6111 板卡的序号,如 0、1、2; pError :错误代码; 返回值: hDevice(out) :AC6111 板卡驱动句柄 备注:一般在用户程序启动后,可获取板卡句柄;其他 Sub VI 的使用都根据句柄来识别 AC6111。 AC6111_CreateDevice.vi 功能:关闭 AC6111 驱动句柄。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注:当用户程序退出之前,请关闭驱动句柄。 AC6111_Version.vi 功能:读取驱动程序软件版本信息
参数 dEvice(in):输入端驱动句柄(驱动句柄由此输入) vErsion:版本信息字符串 dEvice(out):输出端驱动句柄(输岀与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一SubⅥI的输入端驱动句柄) 返回值 备注:该函数为厂家保留使用。 Il模数转换(AD) AC6111 INL vi 功能:初始化板卡,如设置相关参数,设置中断允许、事件通知等等。 参数 dEvice(in) 输入端驱动句柄(驱动句柄由此输入); 0:软件触发/1:硬件触发 CLKSL 0:转换应用内部时钟/1:外部时钟 IRPOL 0:触发上升边沿触发/1:下降边沿触发 CLKPOL 0:外部时钟上升边沿触发/1:下降边沿触发 SAMMODE 0:采样模式为 NORMAL/1:SH模式 start channel: 采样起始通道0~15 采样停止通道0~15 ad timer 采样时钟控制字10~65535(见注释1) DA输出模式控制字(见注释2) kFifo Notify Length:内核缓冲门限通知控制字;(小于内核缓冲的容量,缓冲的容 量2000000(保留为今后扩展使用) Irg enable 中断允许控制字;(0-禁止/1-允许) Event enable 事件通知允许控制字;(0-禁止,为今后扩展使用) Event 缓冲门限事件句柄:(保留为今后扩展使用) Event FifoFull 缓冲溢出事件句柄;(保留为今后扩展使用) dEvice(out):输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值 备注:所有的参数都是由此 Sub vi设定的。 注释1: ad timer范围12-65536,4M的时基,每个数表示0.25uS的时间长度 例: ad timer=12,当AD采样模式为 NORMAL模式时,每个通道的采样频率=[l1/(12*025)J通 道数。 注释2: da mode范围0-3 0:ch0、ch110V 2:ch010V、chl±10V 3:ch0、chl±10V
参数: hDevice(in) : 输入端驱动句柄(驱动句柄由此输入); pVersion : 版本信息字符串; hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注:该函数为厂家保留使用。 II、模数转换 (AD) AC6111_INI.vi 功能:初始化板卡,如设置相关参数,设置中断允许、事件通知等等。 参数: hDevice(in) : 输入端驱动句柄(驱动句柄由此输入); TRSL : 0:软件触发 / 1:硬件触发 CLKSL : 0:转换应用内部时钟 / 1:外部时钟 TRPOL : 0:触发上升边沿触发 / 1:下降边沿触发 CLKPOL : 0:外部时钟上升边沿触发 / 1:下降边沿触发 SAMMODE : 0:采样模式为 NORMAL / 1:SH 模式 start_ channel : 采样起始通道0 ~ 15 end_ channel : 采样停止通道0 ~ 15 ad_timer : 采样时钟控制字 10 ~ 65535(见注释 1) da_mode : DA 输出模式控制字(见注释 2) kFifo_Notify_Length : 内核缓冲门限通知控制字;(小于内核缓冲的容量,缓冲的容 量 2000000)(保留为今后扩展使用) Irq_Enable : 中断允许控制字;(0-禁止/1-允许) Event_Enable : 事件通知允许控制字;(0-禁止,为今后扩展使用) Event : 缓冲门限事件句柄;(保留为今后扩展使用) EventFifoFull : 缓冲溢出事件句柄;(保留为今后扩展使用) hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注:所有的参数都是由此 Sub VI 设定的。 注释 1:ad_timer 范围 12-65536, 4M 的时基,每个数表示 0.25uS 的时间长度。 例:ad_timer=12,当 AD 采样模式为 NORMAL 模式时,每个通道的采样频率=[1/(12*0.25)]/通 道数。 注释2:da_mode 范围 0-3 0:ch0、ch1 10V 1:ch0 10V 、ch1 10V 2:ch0 10V 、ch1 10V 3:ch0、ch1 10V
AC6111 STATE. vi 功能:查询硬件状态、缓冲状态。 参数 dEvice(in) 输入端驱动句柄(驱动句柄由此输入); HardwareState 板卡硬件状态字;(见注释3) Irg Enable :中断允许状态字:(0-禁止/-允许) Event enable 事件通知状态字;(0-禁止/1-允许) SoftFifoCapacity 缓冲区容量:(按采样点数) SoftFifoltem For read:缓冲区中已经存在的数据长度:(按采样点数) SoftFifoltem For write:缓冲区中的剩余空间。(按采样点数) dEvice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可 将此输出端驱动句柄传递给下一 Sub vi的输入端驱动句柄); 返回值 备注 注释3: D0:=0,FIFO空 D1:=0,FIFO半满 D2:=0,FIFO溢出 D3:0 D4: cntv:=1,计数器溢出 例: Hardware State&02H=0,即半满; HardwareState&04H=0,即溢出。(“H”代表十六进制 数值) AC6111 RUN. vi 功能:启动AD采样 参数: dEvice(in):输入端驱动句柄(驱动句柄由此输入); dEvice(out):输出端驱动句柄(输出与输入端驱动句柄相冋的驱动句柄,可将此输出 端驱动句柄传递给下→ Sub vi的输入端驱动句柄) 返回值: Ac6111 STOP vi 功能:停止AD采样,停止中断 参数 dEvice(in):输入端驱动句柄(驱动句柄由此输入) dEvice(out):输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值: 备注:
AC6111_STATE.vi 功能:查询硬件状态、缓冲状态。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); HardwareState :板卡硬件状态字;(见注释3) Irq_Enable :中断允许状态字;(0-禁止/1-允许) Event_Enable :事件通知状态字;(0-禁止/1-允许) SoftFifoCapacity :缓冲区容量;(按采样点数) SoftFifoItemForRead :缓冲区中已经存在的数据长度;(按采样点数) SoftFifoItemForWrite :缓冲区中的剩余空间。(按采样点数) hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可 将此输出端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: 注释 3: D0: =0,FIFO 空 D1: =0,FIFO半满 D2: =0,FIFO溢出 D3: 0 D4:cntov:=1,计数器溢出 例:HardwareState & 02H = 0,即半满;HardwareState & 04H = 0,即溢出。(“H”代表十六进制 数值) AC6111_RUN.vi 功能:启动 AD 采样。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: AC6111_STOP.vi 功能:停止 AD 采样,停止中断。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注:
AC6111 READ HARD FIFO 功能:从板载FIFO中读取数据 参数 dEvice(in):输入端驱动句柄(驱动句柄由此输入) ADData 输入端采样数据(数组) 读取的长度。长度应小于4096 ADData(out):输出端采样数据(数组); dEvice(out):输出端驱动句柄(输岀与输λ端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值 AC6111 READ KFIFO vi 功能:从中内核缓冲中读取数据 参数: dEvice(in):输入端驱动句柄(驱动句柄由此输入) ADData 输入端采样数据(数组) 读取的长度。长度应小于缓冲中可以读取的数据长度(该长度由 AC6l1 STATE函数获得) ADData(out):输出端采样数据(数组); dEvice(out):输出端驱动句柄(输岀与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值: Il数模转换(DA) AC6111 DA Mode 功能:设置DA电压输出模式字。 参数: dEvice(in):输入端驱动句柄(驱动句柄由此输入); DA模式字(见注释2) dEvice(out):输出端驱动句柄(输出与输λ端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下→ Sub vi的输入端驱动句柄) 返回值 Ac6111 DAO.V 功能:DA0通道电压输出。 参 dEvice(in):输入端驱动句柄(驱动句柄由此输入); da data :DA0通道输出数据;(0-4095);
AC6111_READ_HARD_FIFO.vi 功能:从板载 FIFO 中读取数据。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); ADData : 输入端采样数据(数组); length : 读取的长度。长度应小于 4096。 ADData(out) :输出端采样数据(数组); hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: AC6111_READ_KFIFO.vi 功能:从中内核缓冲中读取数据。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); ADData : 输入端采样数据(数组); length : 读取的长度。长度应小于缓冲中可以读取的数据长度(该长度由 AC6111_STATE 函数获得)。 ADData(out) :输出端采样数据(数组); hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: III、数模转换 (DA) AC6111_DA_Mode.vi 功能:设置 DA 电压输出模式字。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); mode :DA 模式字(见注释 2) hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: AC6111_DA0.vi 功能:DA 0 通道电压输出。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); da_data :DA 0 通道输出数据;(0-4095);
dEvice(out):输出端驱动句柄(输出与输λ端驱动句柄相冋的驱动句柄,可将此输出 端驱动句柄传递给下→ Sub vi的输入端驱动句柄) 返回值: 备注 AC6111 DALvi 功能:DA1通道电压输出。 参数 dEvice(in):输入端驱动句柄(驱动句柄由此输入); da data:DA1通道输出数据:(0-4095); dEvice(out):输出端驱动句柄(输出与输λ端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值 备注: Iv、数字量输入、输出函数(DO) AC6111 IO MODEv 功能:设置数字量模式控制字 参数: dEvice(in):输入端驱动句柄(驱动句柄由此输入); Tomoe 模式字(见注释4 dEvice(out):输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值: 备注: 注释4: da mode范围0-3 0:低8位、高8位均为输入 1:低8位输出、高8位输入 2:低8位输入、高8位输出 3:低8位、高8位均为输出 AC6111 DL vi 功能:数字量输入 参数: dEvice(in):输入端驱动句柄(驱动句柄由此输入); DIData 数字量输入数据 dEvice(out):输出端驱动句柄(输出与输λ端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下→ Sub vi的输入端驱动句柄) 返回值 备注: AC6111 DO vi 功能:数字量输出
hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: AC6111_DA1.vi 功能:DA 1 通道电压输出。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); da_data :DA 1 通道输出数据;(0-4095); hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: IV、数字量输入、输出函数(DIO) AC6111_IO_MODE.vi 功能:设置数字量模式控制字。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); iomode :模式字(见注释 4) hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: 注释4: da_mode 范围 0-3 0:低8位、高8位均为输入 1:低 8 位输出、高 8 位输入 2:低 8 位输入、高 8 位输出 3:低 8 位、高 8 位均为输出 AC6111_DI.vi 功能:数字量输入; 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); DIData :数字量输入数据 hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: AC6111_DO.vi 功能:数字量输出
参数 dEvice(in):输入端驱动句柄(驱动句柄由此输入); do data :数字量输出数据。 dEvice(out):输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值 备注: V、定时器、计数器函数( Timer Counter) AC6111 RCOUNTER vi 功能:读取计数器的数值 参数: dEvice(in):输入端驱动句柄(驱动句柄由此输入): counter data:读取的计数器值0-65535; dEvice(out):输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值 备 AC6111 WCOUNTER VI 功能:设置计数器初值。 参数 dEvice(in):输入端驱动句柄(驱动句柄由此输入); counter data:计数器初值数据0-65535 dEvice(out):输出端驱动句柄(输出与输λ端驱动句柄相冋的驱动句柄,可将此输出 端驱动句柄传递给下一SubⅥI的输入端驱动句柄) 返回值 备注 C6111 RTIMER vi 功能:读取定时器的数值 参数: dEvice(in):输入端驱动句柄(驱动句柄由此输入); timer data:定时器数值 dEvice(out):输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub vi的输入端驱动句柄) 返回值: 备注:
参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); do_data :数字量输出数据。 hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: V、定时器、计数器函数(Timer Counter) AC6111_RCOUNTER.vi 功能:读取计数器的数值; 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); counter_data :读取的计数器值 0-65535; hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: AC6111_WCOUNTER.vi 功能:设置计数器初值。 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); counter_data :计数器初值数据 0-65535; hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: AC6111_RTIMER.vi 功能:读取定时器的数值 参数: hDevice(in) :输入端驱动句柄(驱动句柄由此输入); timer_data :定时器数值; hDevice(out) :输出端驱动句柄(输出与输入端驱动句柄相同的驱动句柄,可将此输出 端驱动句柄传递给下一 Sub VI 的输入端驱动句柄); 返回值: 备注: