1、2、学习USBCAN-2A接口卡的使用及安装,安装USBCAN-2A接口卡的驱动程序。3、根据实验指导书中的手动设置iCAN模块MACID的方法手动设置各模块的MACID。4、使用提供的iCANTest测试软件工具来测试各模块的功能及用法,利用测试工具与模块之间通信。5、学习了解iCAN主站函数库中的主要操作函数及其应用。6、学习利用VC或者VB编程来对iCAN系列各模块进行操作。四:实验过程:1、驱动程序安装: USBCAN-2A接口卡的驱动程序需要自己手动进行安装,驱动程序已经存放于实验准备内容中。找到驱动程序,直接点击进行安装即可。安装完成后,在“管理-设备管理器-通用串行总线控制器”中
2、查看驱动是否安装成功。注意:安装驱动程序过程中PC机不能连接USB电缆。2、iCANTEST安装与运行: 连接设备后,打开iCANTEST软件,点击“系统配置”,设置设备类型为USBCAN2,点击“启动”-“上线”,试验各模块的功能。点击“全部下线”,将断开主机与所有模块的连接。3、各种iCAN模块的测试4、指示灯,按钮,温湿度传感器的连接5、测试运行记录与截屏图:iCAN模块测试运行记录与截图。图(1) iCANTEST界面 iCAN4055模块界面如图(2)。DI输入由测控设备箱中的开关控制,DO输出控制设备箱上的灯泡亮灭。图(2) iCAN4055模块界面 iCAN4210模块如图(3)
3、。iCAN4210模块为2路模拟量输出模块。将该模块的输出通道0与iCAN4017模块的输入通道3相连,可观察到改变iCAN4210的通道0设定值时,iCAN4017的通道3显示值会随之变化。(通道0为0x8000时,通道3显示为5.000V。)图(3) iCAN4210模块界面 iCAN4017模块如图(4)。iCAN4017模块为8路模拟量输入模块。将该模块的通道0与通道1与测控设备箱的温湿度传感器相连,可由通道0和1的电压值推导出传感器测出的环境温度和湿度。由于实验时使用的温湿度传感器温度测量部分故障,所以通道0显示0.000V,湿度测量部分正常,通道1显示为6.182V。图(4) iC
4、AN4017模块界面6、自编程序主要功能(1)添加一个输入编辑框和一个按钮控件,通过输入0x00-0xFF之间的十六 进制数来控制iCAN4055的DO通道的输入;再设置一个编辑框edit控件来读取iCAN4055的8位数字量输入通道的状态。(2)设置两个输入编辑框控件,来分别设置iCAN4210两个通道的输出。(3)设置4个编辑框edit控件来分别读取iCAN4017前四个通道ch0、ch1、ch2、 ch3的模拟量输入值。7、自编程序运行结果与截图(课上未做,课下做了界面和程序)图(5) iCAN4055模块界面 图(6) iCAN4017模块界面8、主要程序部分(1) 有关iCAN405
5、5功能模块的简单功能的实现的整体代码如下:首先在生成的类头文件Sample4055dlg.h中的类CSample4055中添加申明变量:public: unsigned char buf1;/发送数据的数据缓存区 unsigned char recbuf1;/接受数据的数据缓存区 unsigned long len; int outvalue; int count; CString str;在Sample4055.cpp文件中编写控制代码:首先添加对变量的定义:ROUTECFG cfg;HANDLE hRoute=0; /新的ICAN网络HANDLE hSlave4055=0;/数字量输入输出
6、模块4055,MACID=1CSample4055:CSample4055(CWnd* pParent /*=NULL*/) : CDialog(CSample4055:IDD, pParent) buf0=0; recbuf0=0; count=0; len=0; str=;(2)添加每个控件消息响应函数的代码:void CSample4055:OnStartsysButton1() / TODO: Add your control notification handler code here cfg.iCardType=4;/使用usbcan2接线口 cfg.iCardInd=0;/卡序号
7、 cfg.iCANInd=0;/CAN通道选择(0表示0通道;1表示1通道) cfg.wCANBaud=0x001c;/波特率的设定0x001c(500kbps) cfg.iMasterCycle=500;/主站循环周期 cfg.wMasterID=0; /主站ID Mgr_AddRoute(cfg,&hRoute);/添加iCAN网络 if(Mgr_StartSys()!=ICANOK)/调用Mgr_StartSys()函数对CAN网络是否启动进行判断,返回为ICANOK MessageBox(系统启动失败); elseCAN网络已启动OnLink4055Button2() if(Mgr_I
8、sStarted()!=1) MessageBox(系统未启动或启动失败,请先启动CAN网络 Route_AddSlave(hRoute,1,&hSlave4055);/添加从站4055,MACID=1 if(Slave_Connect(hSlave4055)!=ICANOK)/判断从站4055是否连接成功4055连接失败4055连接成功 SetTimer(1,1000,NULL);/设定开启定时循环,1代表消息事件id,1000表示1000ms即1sOnTimer(UINT nIDEvent) /Timer事件函数 Add your message handler code here and
9、/or call default if(nIDEvent=1) len=1;Slave_GetDIData(hSlave4055,recbuf,&len); /读取4055数字量输入端口数据str.Format(0x%02x:%d,recbuf0,count); m_getDI.SetWindowText(str); count=count+1; CDialog:OnTimer(nIDEvent); OnButtonSetvalue() /设定4055数字量输出端口值 if(Mgr_IsStarted()=1)&(Slave_IsConnected(hSlave4055)=1) UpdateD
10、ata(true); outvalue=strtol(m_invalue,NULL,16);/按十六进制进行读取 if(outvalue = 0 & outvalue =0.0&m_setch08;提示:请输入010V电压 if(m_setch1m_setch1 Slave_SendData(hSlave4210,0x60,buf,4);(4)8路模拟量输入模块iCAN4017首先,在生成的.h头文件中添加使用到的变量的申明。 unsigned char recbuf16;在.cpp文件中首先添加iCAN网络定义和申明以及变量的初始化操作。HANDLE hSlave4017=0;/AI模块40
11、17,MACID=3CSample4017:CSample4017(CWnd* pParent /*=NULL*/) CDialog(CSample4017: /AFX_DATA_INIT(CSample4017) m_valuech0 = 0.0; m_valuech1 = 0.0; m_valuech2 = 0.0; m_valuech3 = 0.0; m_counter = 0; /AFX_DATA_INIT recbuf1=0; recbuf2=0; recbuf3=0; recbuf4=0; recbuf5=0; recbuf6=0; recbuf7=0;void CSample40
12、17:OnButtonLink4017() Route_AddSlave(hRoute,3,&hSlave4017); if(Slave_Connect(hSlave4017)!4017连接失败4017连接成功OnTimer(UINT nIDEvent) Slave_GetAIData(hSlave4017,recbuf,& m_valuech0=(double)(recbuf0*16*16+recbuf1)-0x8000)*10/(double)0x8000; m_valuech1=(double)(recbuf2*16*16+recbuf3)-0x8000)*10/(double)0x8000; m_valuech2=(double)(recbuf4*16*16+recbuf5)-0x8000)*10/(double)0x8000; m_valuech3=(double)(recbuf6*16*16+recbuf7)-0x8000)*10/(double)0x8000; m_counter=count; UpdateData(false);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1