CAN总线技术与iCAN模块实验报告.doc

上传人:李主任 文档编号:3312823 上传时间:2019-08-11 格式:DOC 页数:18 大小:1.82MB
返回 下载 相关 举报
CAN总线技术与iCAN模块实验报告.doc_第1页
第1页 / 共18页
CAN总线技术与iCAN模块实验报告.doc_第2页
第2页 / 共18页
CAN总线技术与iCAN模块实验报告.doc_第3页
第3页 / 共18页
CAN总线技术与iCAN模块实验报告.doc_第4页
第4页 / 共18页
CAN总线技术与iCAN模块实验报告.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《CAN总线技术与iCAN模块实验报告.doc》由会员分享,可在线阅读,更多相关《CAN总线技术与iCAN模块实验报告.doc(18页珍藏版)》请在三一文库上搜索。

1、 实验一 CAN总线技术与iCAN模块实验实验报告 学院: 自动化学院 专业: 自动化专业 班级: 2010211410 姓名: 高娃 姚雷阳 学号:2011211975 2011211977 指导老师: 杨军 一实验名称:实验一 CAN总线技术与iCAN模块实验二实验设备:计算机、CAN总线系列实验箱、测控设备箱、万用表。三实验过程、实验内容、实验记录:(1)驱动程序安装USBCAN-2A接口卡的驱动程序需要自己手动进行安装,驱动程序已经存放于实验准备内容中。找到驱动程序,直接点击进行安装即可。安装完成后,在“管理-设备管理器-通用串行总线控制器”中查看驱动是否安装成功。注意:安装驱动程序过

2、程中PC机不能连接USB电缆。(2)iCANTEST安装与运行 iCANTEST安装与运行后,利用iCANTest软件对iCAN系列各模块进行验证性测试,可以测试各模块是否可以通过USBCAN-2A接口卡与PC机正常连接与通信以及进行简单的测控操作。(3)各种iCAN模块的测试1. 打开iCANTest软件(老师,我们当时觉得安装这些过程太简单了,没意识到截图,所以引用了一些PPT上的图像,但后面测试部分的都是自己的截图,希望老师谅解。) 在工具栏中点击“系统配置”,在弹出的对话框中设置通信信息。如下图: 图 1 2. 点击“搜索”,则CAN总线中连接的所有模块应该被搜索出来,列表显示。包括模

3、块设置的MACID。图 2 3. 图示为搜索完成后的显示状态,在从站列表中将所有模块予以显示。点击某个模块,则弹出该模块的操作窗口。 图 3 4. 点击“启动”,再点击“全部上线”。在从站列表中所有上线的模块标志变成绿色的三角,表示该模块上线成功。图 4 5. 试验各个模块的基本输入输出功能。点击继电器模块2404的4个输出,听到继电器动作声音。图 5 连接4210D/A模块的通道0到4017A/D模块的通道5,输入0x8000对应得到5V的电压输出。图 6图 7 使用40558入/8出模块连接按钮作为I/O输入,连接指示灯和继电器作为I/O输出。首先,连接好24V直流电源。图 8 图 9 然

4、后,选择1个指示灯、1个继电器连接4055模块的DOUT0、DOUT1,选择1个按钮连接4055模块的DIN0。图 10 最后,用鼠标点击4055窗口上的DO输出灯(对应DOUT0、DOUT1),可控制指示灯的亮灭及继电器的动作。当目标箱上的按钮按下时,DI的指示灯会变化(对应DI0)。图 11 将温湿度传感器连接至4017A/D模块。图 12图 13通过4017A/D模块的操作窗口,观察通道0和通道1的电压值,通过温湿度传感器的参数说明,换算出温度和湿度值。图 14 通道0和通道1的电压值分别为:5.596V,4.740V;因为如下接线图所示,可知通道0和通道1的电压值分别表示温度和湿度。图

5、 15 实际温度:(5.596V500)(20mA-4mA)50=34.975实际湿度:(4.740V500)(20mA-4mA)100%RH=59.25%RH(4)有关iCAN4055功能模块的简单功能实现的整体代码1. 在生成的类头文件Sample4055dlg.h中的类CSample4055中添加申明变量:public:unsigned char buf1;/发送数据的数据缓存区unsigned char recbuf1;/接受数据的数据缓存区unsigned long len;int outvalue;int count;CString str;2. 在Sample4055.cpp文件

6、中编写控制代码 对变量的定义:ROUTECFG cfg; HANDLE hRoute=0; /新的ICAN网络HANDLE hSlave4055=0;/数字量输入输出模块4055,MACID=1CSample4055:CSample4055(CWnd* pParent /*=NULL*/): CDialog(CSample4055:IDD, pParent)buf0=0;recbuf0=0;count=0;len=0;str=;3. 添加每个控件消息响应函数的代码:启动按钮消息响应函数void CSample4055:OnStartsysButton1() / TODO: Add your c

7、ontrol notification handler code herecfg.iCardType=4;/使用usbcan2接线口cfg.iCardInd=0;/卡序号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网

8、络是否启动进行判断,返回为ICANOKMessageBox(系统启动失败);elseMessageBox(CAN网络已启动);链接按钮消息响应函数void CSample4055:OnLink4055Button2() if(Mgr_IsStarted()!=1) MessageBox(系统未启动或启动失败,请先启动CAN网络);else/ TODO: Add your control notification handler code hereRoute_AddSlave(hRoute,1,&hSlave4055);/添加从站4055,MACID=1if(Slave_Connect(hSla

9、ve4055)!=ICANOK)/判断从站4055是否连接成功MessageBox(4055连接失败); elseMessageBox(4055连接成功); SetTimer(1,1000,NULL);/设定开启定时循环,1代表消息事件id,1000表示1000ms即1s定时器消息响应函数void CSample4055:OnTimer(UINT nIDEvent) /Timer事件函数/ TODO: Add your message handler code here and/or call defaultif(nIDEvent=1) len=1;Slave_GetDIData(hSlave

10、4055,recbuf,&len); /读取4055数字量输入端口数据str.Format(0x%02x,recbuf0);m_getDI.SetWindowText(str);count=count+1; CDialog:OnTimer(nIDEvent); 设置按钮消息响应函数,设置4055DO通道控制状态值void CSample4055:OnButtonSetvalue() /设定4055数字量输出端口值/ TODO: Add your control notification handler code hereif(Mgr_IsStarted()=1)&(Slave_IsConnec

11、ted(hSlave4055)=1) UpdateData(true);outvalue=strtol(m_invalue,NULL,16);/按十六进制进行读取if(outvalue = 0 & outvalue =0.0&m_setch08;elseMessageBox(提示:请输入010V电压);if(m_setch1=0.0&m_setch18;/将buf3向右移8位elseMessageBox(提示:请输入010V电压); Slave_SendData(hSlave4210,0x60,buf,4);else MessageBox(系统未启动或从站未连接,请查看后再进行操作);(7)

12、iCAN4210模块自编程序运行结果与界面截图 图18(8) 8路模拟量输入模块iCAN4017编程使用1. 在生成的.h头文件中添加使用到的变量的申明:public:unsigned char recbuf16;unsigned long len;int count;2. 在.cpp文件中首先添加iCAN网络定义和申明以及变量的初始化操作。ROUTECFG cfg;HANDLE hRoute=0; /新的ICAN网络HANDLE hSlave4017=0;/AI模块4017,MACID=3CSample4017:CSample4017(CWnd* pParent /*=NULL*/): CD

13、ialog(CSample4017:IDD, pParent)/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_INITrecbuf0=0;recbuf1=0;recbuf2=0;recbuf3=0;recbuf4=0;recbuf5=0;recbuf6=0;recbuf7=0;len=0;count=0;void CSample4017:OnBUTTONStartCANSys() / TODO: Add y

14、our control notification handler code herecfg.iCardType=4;/使用usbcan2接线口cfg.iCardInd=0;/卡序号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()函数

15、对CAN网络是否启动进行判断,返回为ICANOKMessageBox(系统启动失败);elseMessageBox(CAN网络已启动);void CSample4017:OnButtonLink4017() / TODO: Add your control notification handler code hereif(Mgr_IsStarted()!=1) MessageBox(系统未启动或启动失败,请先启动CAN网络);else/ TODO: Add your control notification handler code hereRoute_AddSlave(hRoute,3,&h

16、Slave4017);if(Slave_Connect(hSlave4017)!=ICANOK)MessageBox(4017连接失败); elseMessageBox(4017连接成功);SetTimer(1,1000,NULL);void CSample4017:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call defaultif(nIDEvent=1) len=16; Slave_GetAIData(hSlave4017,recbuf,&len); m_valuech0=(doubl

17、e)(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);count=count+1;CDialog:OnTimer(nIDEvent);(9) iCAN4017模块自编程序运行结果与界面截图 图19

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1