欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

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

    • 资源ID:3312823       资源大小:1.82MB        全文页数:18页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    实验一 CAN总线技术与iCAN模块实验实验报告 学院: 自动化学院 专业: 自动化专业 班级: 2010211410 姓名: 高娃 姚雷阳 学号:2011211975 2011211977 指导老师: 杨军 一实验名称:实验一 CAN总线技术与iCAN模块实验二实验设备:计算机、CAN总线系列实验箱、测控设备箱、万用表。三实验过程、实验内容、实验记录:(1)驱动程序安装USBCAN-2A接口卡的驱动程序需要自己手动进行安装,驱动程序已经存放于实验准备内容中。找到驱动程序,直接点击进行安装即可。安装完成后,在“管理->设备管理器->通用串行总线控制器”中查看驱动是否安装成功。注意:安装驱动程序过程中PC机不能连接USB电缆。(2)iCANTEST安装与运行 iCANTEST安装与运行后,利用iCANTest软件对iCAN系列各模块进行验证性测试,可以测试各模块是否可以通过USBCAN-2A接口卡与PC机正常连接与通信以及进行简单的测控操作。(3)各种iCAN模块的测试1. 打开iCANTest软件(老师,我们当时觉得安装这些过程太简单了,没意识到截图,所以引用了一些PPT上的图像,但后面测试部分的都是自己的截图,希望老师谅解。) 在工具栏中点击“系统配置”,在弹出的对话框中设置通信信息。如下图: 图 1 2. 点击“搜索”,则CAN总线中连接的所有模块应该被搜索出来,列表显示。包括模块设置的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 然后,选择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的电压值分别表示温度和湿度。图 15 实际温度:(5.596V÷500)÷(20mA-4mA)×50=34.975实际湿度:(4.740V÷500)÷(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文件中编写控制代码 对变量的定义: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 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()函数对CAN网络是否启动进行判断,返回为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(hSlave4055)!=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(hSlave4055,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_IsConnected(hSlave4055)=1) UpdateData(true);outvalue=strtol(m_invalue,NULL,16);/按十六进制进行读取if(outvalue >= 0 && outvalue <= 255) buf0=(unsigned short)strtol(m_invalue,NULL,16);Slave_SendData(hSlave4055,0x20,buf,1);/发送数据elseMessageBox("请输入00FF之间的十六进制数");else MessageBox("系统未启动或从站未连接,请查看后再进行操作");(5)iCAN4055模块自编程序运行结果与界面截图图 16 图 17 (6)2路模拟量输出模块iCAN4210的编程使用1. 在Sample4210.cpp文件中编写控制代码对变量的定义:ROUTECFG cfg; HANDLE hRoute=0; /新的ICAN网络HANDLE hSlave4210=0;/MACID=22. 添加每个控件消息响应函数的代码:启动按钮消息响应函数void CSample4210: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.iMasterCycle=500;/主站循环周期cfg.wMasterID=0; /主站ID Mgr_AddRoute(cfg,&hRoute);/添加iCAN网络if(Mgr_StartSys()!=ICANOK)/调用Mgr_StartSys()函数对CAN网络是否启动进行判断,返回为ICANOKMessageBox("系统启动失败");elseMessageBox("CAN网络已启动");链接按钮消息响应函数void CSample4210:OnButtonLink4210() / TODO: Add your control notification handler code hereif(Mgr_IsStarted()!=1) MessageBox("系统未启动或启动失败,请先启动CAN网络");else/ TODO: Add your control notification handler code hereRoute_AddSlave(hRoute,2,&hSlave4210);/添加从站4210;MACID=2if(Slave_Connect(hSlave4210)!=ICANOK)/判断从站4210是否链接成功MessageBox("4210连接失败"); elseMessageBox("4210连接成功");确定按钮消息响应函数void CSample4210:OnButtonCanok() if(Mgr_IsStarted()=1)&&(Slave_IsConnected(hSlave4210)=1)/如果系统启动成功且从站4210链接成功 unsigned char buf32=0; UpdateData(true);/更新数据if(m_setch0>=0.0&&m_setch0<=10.0)/如果通道0的数据在010之间 buf1=(unsigned short)(m_setch0/10)*65535; buf0=(unsigned short)(m_setch0/10)*65535)>>8;elseMessageBox("提示:请输入010V电压");if(m_setch1>=0.0&&m_setch1<=10.0)/如果通道1的数据在010之间 buf3=(unsigned short)(m_setch1/10)*65535; buf2=(unsigned short)(m_setch1/10)*65535)>>8;/将buf3向右移8位elseMessageBox("提示:请输入010V电压"); Slave_SendData(hSlave4210,0x60,buf,4);else MessageBox("系统未启动或从站未连接,请查看后再进行操作");(7) 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*/): 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;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.iMasterCycle=500;/主站循环周期cfg.wMasterID=0; /主站ID Mgr_AddRoute(cfg,&hRoute);/添加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 hereRoute_AddSlave(hRoute,3,&hSlave4017);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=(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);count=count+1;CDialog:OnTimer(nIDEvent);(9) iCAN4017模块自编程序运行结果与界面截图 图19

    注意事项

    本文(CAN总线技术与iCAN模块实验报告.doc)为本站会员(李主任)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开