CAN总线技术与iCAN模块实验报告_第1页
CAN总线技术与iCAN模块实验报告_第2页
CAN总线技术与iCAN模块实验报告_第3页
CAN总线技术与iCAN模块实验报告_第4页
CAN总线技术与iCAN模块实验报告_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

------------------------------------------------------------------------CAN总线技术与iCAN模块实验报告实验一CAN总线技术与iCAN模块实验实验报告学院:自动化学院专业:自动化专业班级:2010211410姓名:高娃姚雷阳学号:20112119752011211977指导老师:杨军一.实验名称:实验一CAN总线技术与iCAN模块实验二.实验设备:计算机、CAN总线系列实验箱、测控设备箱、万用表。三.实验过程、实验内容、实验记录:(1)驱动程序安装USBCAN-2A接口卡的驱动程序需要自己手动进行安装,驱动程序已经存放于实验准备内容中。找到驱动程序,直接点击进行安装即可。安装完成后,在“管理->设备管理器->通用串行总线控制器”中查看驱动是否安装成功。注意:安装驱动程序过程中PC机不能连接USB电缆。(2)iCANTEST安装与运行iCANTEST安装与运行后,利用iCANTest软件对iCAN系列各模块进行验证性测试,可以测试各模块是否可以通过USBCAN-2A接口卡与PC机正常连接与通信以及进行简单的测控操作。(3)各种iCAN模块的测试1.打开iCANTest软件(老师,我们当时觉得安装这些过程太简单了,没意识到截图,所以引用了一些PPT上的图像,但后面测试部分的都是自己的截图,希望老师谅解。)在工具栏中点击“系统配置”,在弹出的对话框中设置通信信息。如下图:图12.点击“搜索”,则CAN总线中连接的所有模块应该被搜索出来,列表显示。包括模块设置的MACID。图2图示为搜索完成后的显示状态,在从站列表中将所有模块予以显示。点击某个模块,则弹出该模块的操作窗口。图34.点击“启动”,再点击“全部上线”。在从站列表中所有上线的模块标志变成绿色的三角,表示该模块上线成功。图4试验各个模块的基本输入输出功能。※点击继电器模块2404的4个输出,听到继电器动作声音。图5※连接4210D/A模块的通道0到4017A/D模块的通道5,输入0x8000对应得到5V的电压输出。图6图7※使用4055—8入/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功能模块的简单功能实现的整体代码在生成的类头文件Sample4055dlg.h中的类CSample4055中添加申明变量:public: unsignedcharbuf[1];//发送数据的数据缓存区 unsignedcharrecbuf[1];//接受数据的数据缓存区 unsignedlonglen; intoutvalue; intcount; CStringstr;在Sample4055.cpp文件中编写控制代码对变量的定义:ROUTECFGcfg;HANDLEhRoute=0;//新的ICAN网络HANDLEhSlave4055=0;//数字量输入输出模块4055,MACID=1CSample4055::CSample4055(CWnd*pParent/*=NULL*/) :CDialog(CSample4055::IDD,pParent){ buf[0]=0; recbuf[0]=0; count=0; len=0; str="";}添加每个控件消息响应函数的代码:※启动按钮消息响应函数voidCSample4055::OnStartsysButton1(){ //TODO:Addyourcontrolnotificationhandlercodehere cfg.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;//主站IDMgr_AddRoute(cfg,&hRoute);//添加iCAN网络 if(Mgr_StartSys()!=ICANOK)//调用Mgr_StartSys()函数对CAN网络是否启动进行判断,返回为ICANOK { MessageBox("系统启动失败"); } else { MessageBox("CAN网络已启动"); }}※链接按钮消息响应函数voidCSample4055::OnLink4055Button2(){ if(Mgr_IsStarted()!=1) {MessageBox("系统未启动或启动失败,请先启动CAN网络"); } else { //TODO:Addyourcontrolnotificationhandlercodehere Route_AddSlave(hRoute,1,&hSlave4055);//添加从站4055,MACID=1 if(Slave_Connect(hSlave4055)!=ICANOK)//判断从站4055是否连接成功 { MessageBox("4055连接失败"); }else { MessageBox("4055连接成功"); }SetTimer(1,1000,NULL);//设定开启定时循环,1代表消息事件id,1000表示1000ms即1s }}※定时器消息响应函数voidCSample4055::OnTimer(UINTnIDEvent)//Timer事件函数{ //TODO:Addyourmessagehandlercodehereand/orcalldefault if(nIDEvent==1) {len=1;Slave_GetDIData(hSlave4055,recbuf,&len);//读取4055数字量输入端口数据str.Format("0x%02x",recbuf[0]); m_getDI.SetWindowText(str); count=count+1; CDialog::OnTimer(nIDEvent);} }※设置按钮消息响应函数,设置4055DO通道控制状态值voidCSample4055::OnButtonSetvalue()//设定4055数字量输出端口值{ //TODO:Addyourcontrolnotificationhandlercodehere if((Mgr_IsStarted()==1)&&(Slave_IsConnected(hSlave4055)==1)){ UpdateData(true); outvalue=strtol(m_invalue,NULL,16);//按十六进制进行读取 if(outvalue>=0&&outvalue<=255) {buf[0]=(unsignedshort)strtol(m_invalue,NULL,16); Slave_SendData(hSlave4055,0x20,buf,1);//发送数据 } else { MessageBox("请输入00~FF之间的十六进制数"); } } else {MessageBox("系统未启动或从站未连接,请查看后再进行操作"); }}(5)iCAN4055模块自编程序运行结果与界面截图图16图17(6)2路模拟量输出模块iCAN4210的编程使用1.在Sample4210.cpp文件中编写控制代码对变量的定义:ROUTECFGcfg;HANDLEhRoute=0;//新的ICAN网络HANDLEhSlave4210=0;//MACID=2添加每个控件消息响应函数的代码:※启动按钮消息响应函数voidCSample4210::OnBUTTONStartCANSys(){ //TODO:Addyourcontrolnotificationhandlercodehere cfg.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;//主站IDMgr_AddRoute(cfg,&hRoute);//添加iCAN网络 if(Mgr_StartSys()!=ICANOK)//调用Mgr_StartSys()函数对CAN网络是否启动进行判断,返回为ICANOK { MessageBox("系统启动失败"); } else { MessageBox("CAN网络已启动"); }}※链接按钮消息响应函数voidCSample4210::OnButtonLink4210(){ //TODO:Addyourcontrolnotificationhandlercodehere if(Mgr_IsStarted()!=1) {MessageBox("系统未启动或启动失败,请先启动CAN网络"); } else { //TODO:Addyourcontrolnotificationhandlercodehere Route_AddSlave(hRoute,2,&hSlave4210);//添加从站4210;MACID=2 if(Slave_Connect(hSlave4210)!=ICANOK)//判断从站4210是否链接成功 { MessageBox("4210连接失败"); }else { MessageBox("4210连接成功"); } }}※确定按钮消息响应函数voidCSample4210::OnButtonCanok(){ if((Mgr_IsStarted()==1)&&(Slave_IsConnected(hSlave4210)==1))//如果系统启动成功且从站4210链接成功{ unsignedcharbuf[32]={0};UpdateData(true);//更新数据 if(m_setch0>=0.0&&m_setch0<=10.0)//如果通道0的数据在0~10之间 {buf[1]=(unsignedshort)(m_setch0/10)*65535;buf[0]=(unsignedshort)((m_setch0/10)*65535)>>8; } else { MessageBox("提示:请输入0~10V电压"); } if(m_setch1>=0.0&&m_setch1<=10.0)//如果通道1的数据在0~10之间{buf[3]=(unsignedshort)(m_setch1/10)*65535;buf[2]=(unsignedshort)((m_setch1/10)*65535)>>8;//将buf[3]向右移8位 } else { MessageBox("提示:请输入0~10V电压"); }Slave_SendData(hSlave4210,0x60,buf,4); } else {MessageBox("系统未启动或从站未连接,请查看后再进行操作"); }}iCAN4210模块自编程序运行结果与界面截图图188路模拟量输入模块iCAN4017编程使用1.在生成的.h头文件中添加使用到的变量的申明:public: unsignedcharrecbuf[16]; unsignedlonglen; intcount;2.在.cpp文件中首先添加iCAN网络定义和申明以及变量的初始化操作。ROUTECFGcfg;HANDLEhRoute=0;//新的ICAN网络HANDLEhSlave4017=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_INIT recbuf[0]=0; recbuf[1]=0; recbuf[2]=0; recbuf[3]=0; recbuf[4]=0; recbuf[5]=0; recbuf[6]=0; recbuf[7]=0; len=0; count=0;}voidCSample4017::OnBUTTONStartCANSys(){ //TODO:Addyourcontrolnotificationhandlercodehere cfg.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;//主站IDMgr_AddRoute(cfg,&hRoute);//添加iCAN网络 if(Mgr_StartSys()!=ICANOK)//调用Mgr_StartSys()函数对CAN网络是否启动进行判断,返回为ICANOK { MessageBox("系统启动失败"); } else { MessageBox("CAN网络已启动"); }}voidCSample4017::OnButtonLink4017(){ //TODO:Addyourcontrolnotificationhandlercodehere if(Mgr_IsStarted()!=1) {MessageBox("系统未启动或启动失败,请先启动CAN网络"); } else { //TODO:Addyourcontrolnotificationhandlercodehere Route_AddSlave(hRoute,3,&hSlave4017); if(Slave_Connect(hSlave4017)!=ICANOK) { MessageBox("401

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论