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

上传人:ji****72 文档编号:26404557 上传时间:2017-12-26 格式:DOC 页数:18 大小:1.82MB
返回 下载 相关 举报
CAN总线技术与iCAN模块实验报告_第1页
第1页 / 共18页
CAN总线技术与iCAN模块实验报告_第2页
第2页 / 共18页
CAN总线技术与iCAN模块实验报告_第3页
第3页 / 共18页
CAN总线技术与iCAN模块实验报告_第4页
第4页 / 共18页
CAN总线技术与iCAN模块实验报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《CAN总线技术与iCAN模块实验报告》由会员分享,可在线阅读,更多相关《CAN总线技术与iCAN模块实验报告(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. 点击“搜索 ”,则 C

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

4、按钮作为 I/O 输入,连接指示灯和继电器作为I/O 输出。首先,连接好 24V 直流电源。图 8 图 9 然后,选择 1 个指示灯、1 个继电器连接 4055 模块的 DOUT0、DOUT1,选择 1 个按钮连接 4055 模块的 DIN0。图 10 最后,用鼠标点击 4055 窗口上的 DO 输出灯(对应 DOUT0、DOUT1) ,可控制指示灯的亮灭及继电器的动作。当目标箱上的按钮按下时,DI 的指示灯会变化(对应 DI0) 。图 11 将温湿度传感器连接至 4017A/D 模块。图 12图 13通过 4017A/D 模块的操作窗口,观察通道 0 和通道 1 的电压值,通过温湿度传感器的

5、参数说明,换算出温度和湿度值。图 14 通道 0 和通道 1 的电压值分别为:5.596V,4.740V;因为如下接线图所示,可知通道 0 和通道 1 的电压值分别表示温度和湿度。图 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

6、 char recbuf1;/接受数据的数据缓存区unsigned long len;int outvalue;int count;CString str;2.在 Sample4055.cpp 文件中编写控制代码对变量的定义:ROUTECFG cfg; HANDLE hRoute=0; /新的 ICAN 网络HANDLE hSlave4055=0;/数字量输入输出模块 4055,MACID=1CSample4055:CSample4055(CWnd* pParent /*=NULL*/): CDialog(CSample4055:IDD, pParent)buf0=0;recbuf0=0;co

7、unt=0;len=0;str=;3.添加每个控件消息响应函数的代码:启动按钮消息响应函数void CSample4055:OnStartsysButton1() / TODO: Add your 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;/主站循环

8、周期cfg.wMasterID=0; /主站 IDMgr_AddRoute(cfg,/添加 iCAN 网络if(Mgr_StartSys()!=ICANOK)/调用 Mgr_StartSys()函数对 CAN 网络是否启动进行判断,返回为 ICANOKMessageBox(系统启动失败);elseMessageBox(CAN 网络已启动);链接按钮消息响应函数void CSample4055:OnLink4055Button2() if(Mgr_IsStarted()!=1)MessageBox(系统未启动或启动失败,请先启动 CAN 网络);else/ TODO: Add your cont

9、rol notification handler code hereRoute_AddSlave(hRoute,1,/添加从站 4055,MACID=1if(Slave_Connect(hSlave4055)!=ICANOK)/判断从站 4055 是否连接成功MessageBox(4055 连接失败);elseMessageBox(4055 连接成功); SetTimer(1,1000,NULL);/设定开启定时循环,1 代表消息事件 id,1000 表示1000ms 即 1s定时器消息响应函数void CSample4055:OnTimer(UINT nIDEvent) /Timer 事件函

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

11、055 数字量输出端口值/ TODO: Add your control notification handler code hereif(Mgr_IsStarted()=1)&(Slave_IsConnected(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 位els

12、eMessageBox(提示:请输入 010V 电压);Slave_SendData(hSlave4210,0x60,buf,4);elseMessageBox(系统未启动或从站未连接,请查看后再进行操作);(7)iCAN4210 模块自编程序运行结果与界面截图图18(8)8 路模拟量输入模块 iCAN4017 编程使用1. 在生成的.h 头文件中添加使用到的变量的申明:public:unsigned char recbuf16;unsigned long len;int count;2. 在.cpp 文件中首先添加 iCAN 网络定义和申明以及变量的初始化操作。ROUTECFG cfg;HA

13、NDLE hRoute=0; /新的 ICAN 网络HANDLE hSlave4017=0;/AI 模块 4017,MACID=3CSample4017:CSample4017(CWnd* pParent /*=NULL*/): CDialog(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

14、;recbuf3=0;recbuf4=0;recbuf5=0;recbuf6=0;recbuf7=0;len=0;count=0;void CSample4017:OnBUTTONStartCANSys() / TODO: Add your 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.

15、iMasterCycle=500;/主站循环周期cfg.wMasterID=0; /主站 IDMgr_AddRoute(cfg,/添加 iCAN 网络if(Mgr_StartSys()!=ICANOK)/调用 Mgr_StartSys()函数对 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 hereRo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号