北邮现场总线实验报告文档格式.docx

上传人:b****6 文档编号:18623359 上传时间:2022-12-29 格式:DOCX 页数:15 大小:136.91KB
下载 相关 举报
北邮现场总线实验报告文档格式.docx_第1页
第1页 / 共15页
北邮现场总线实验报告文档格式.docx_第2页
第2页 / 共15页
北邮现场总线实验报告文档格式.docx_第3页
第3页 / 共15页
北邮现场总线实验报告文档格式.docx_第4页
第4页 / 共15页
北邮现场总线实验报告文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

北邮现场总线实验报告文档格式.docx

《北邮现场总线实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《北邮现场总线实验报告文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

北邮现场总线实验报告文档格式.docx

2、学习USBCAN-2A接口卡的使用及安装,安装USBCAN-2A接口卡的驱动程序。

3、根据实验指导书中的手动设置iCAN模块MACID的方法手动设置各模块的MACID。

4、使用提供的iCANTest测试软件工具来测试各模块的功能及用法,利用测试工具与模块之间通信。

5、学习了解iCAN主站函数库中的主要操作函数及其应用。

6、学习利用VC或者VB编程来对iCAN系列各模块进行操作。

四:

实验过程:

1、驱动程序安装:

USBCAN-2A接口卡的驱动程序需要自己手动进行安装,驱动程序已经存放于实验准备内容中。

找到驱动程序,直接点击进行安装即可。

安装完成后,在“管理->

设备管理器->

通用串行总线控制器”中查看驱动是否安装成功。

注意:

安装驱动程序过程中PC机不能连接USB电缆。

2、iCANTEST安装与运行:

连接设备后,打开iCANTEST软件,点击“系统配置”,设置设备类型为USBCAN2,点击“启动”->

“上线”,试验各模块的功能。

点击“全部下线”,将断开主机与所有模块的连接。

3、各种iCAN模块的测试

4、指示灯,按钮,温湿度传感器的连接

5、测试运行记录与截屏图:

iCAN模块测试运行记录与截图。

(1)iCANTEST界面

iCAN4055模块界面如图

(2)。

DI输入由测控设备箱中的开关控制,DO输出控制设备箱上的灯泡亮灭。

(2)iCAN4055模块界面

iCAN4210模块如图(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)iCAN4017模块界面

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)有关iCAN4055功能模块的简单功能的实现的整体代码如下:

首先在生成的类头文件Sample4055dlg.h中的类CSample4055中添加申明变量:

public:

unsignedcharbuf[1];

//发送数据的数据缓存区

unsignedcharrecbuf[1];

//接受数据的数据缓存区

unsignedlonglen;

intoutvalue;

intcount;

CStringstr;

在Sample4055.cpp文件中编写控制代码:

首先添加对变量的定义:

ROUTECFGcfg;

HANDLEhRoute=0;

//新的ICAN网络

HANDLEhSlave4055=0;

//数字量输入输出模块4055,MACID=1

CSample4055:

:

CSample4055(CWnd*pParent/*=NULL*/)

:

CDialog(CSample4055:

IDD,pParent)

{

buf[0]=0;

recbuf[0]=0;

count=0;

len=0;

str="

"

;

}

(2)添加每个控件消息响应函数的代码:

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;

//主站ID

Mgr_AddRoute(cfg,&

hRoute);

//添加iCAN网络

if(Mgr_StartSys()!

=ICANOK)//调用Mgr_StartSys()函数对CAN网络是否启动进行判断,返回为ICANOK

{

MessageBox("

系统启动失败"

);

}

else

CAN网络已启动"

OnLink4055Button2()

if(Mgr_IsStarted()!

=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即1s

OnTimer(UINTnIDEvent)//Timer事件函数

Addyourmessagehandlercodehereand/orcalldefault

if(nIDEvent==1)

len=1;

Slave_GetDIData(hSlave4055,recbuf,&

len);

//读取4055数字量输入端口数据

str.Format("

0x%02x:

%d"

recbuf[0],count);

m_getDI.SetWindowText(str);

count=count+1;

CDialog:

OnTimer(nIDEvent);

}

OnButtonSetvalue()//设定4055数字量输出端口值

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);

//发送数据

请输入00~FF之间的十六进制数"

系统未启动或从站未连接,请查看后再进行操作"

(3)2路模拟量输出模块iCAN4210的编程使用

实验代码如下:

首先添加所用变量的申明:

HANDLEhSlave4210=0;

//MACID=2

控制代码:

voidCSample4210:

OnBUTTONStartCANSys()

OnButtonLink4210()

Route_AddSlave(hRoute,2,&

hSlave4210);

if(Slave_Connect(hSlave4210)!

=ICANOK)

4210连接失败"

4210连接成功"

OnButtonCanok()

(Slave_IsConnected(hSlave4210)==1))

unsignedcharbuf[32]={0};

if(m_setch0>

=0.0&

m_setch0<

=10.0)

buf[1]=(unsignedshort)(m_setch0/10)*65535;

buf[0]=(unsignedshort)((m_setch0/10)*65535)>

>

8;

提示:

请输入0~10V电压"

if(m_setch1>

m_setch1<

buf[3]=(unsignedshort)(m_setch1/10)*65535;

buf[2]=(unsignedshort)((m_setch1/10)*65535)>

}

Slave_SendData(hSlave4210,0x60,buf,4);

(4)8路模拟量输入模块iCAN4017

首先,在生成的.h头文件中添加使用到的变量的申明。

unsignedcharrecbuf[16];

在.cpp文件中首先添加iCAN网络定义和申明以及变量的初始化操作。

HANDLEhSlave4017=0;

//AI模块4017,MACID=3

CSample4017:

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

recbuf[1]=0;

recbuf[2]=0;

recbuf[3]=0;

recbuf[4]=0;

recbuf[5]=0;

recbuf[6]=0;

recbuf[7]=0;

voidCSample4017:

OnButtonLink4017()

Route_AddSlave(hRoute,3,&

hSlave4017);

if(Slave_Connect(hSlave4017)!

4017连接失败"

4017连接成功"

OnTimer(UINTnIDEvent)

Slave_GetAIData(hSlave4017,recbuf,&

m_valuech0=((double)(recbuf[0]*16*16+recbuf[1])-0x8000)*10/(double)0x8000;

m_valuech1=((double)(recbuf[2]*16*16+recbuf[3])-0x8000)*10/(double)0x8000;

m_valuech2=((double)(recbuf[4]*16*16+recbuf[5])-0x8000)*10/(double)0x8000;

m_valuech3=((double)(recbuf[6]*16*16+recbuf[7])-0x8000)*10/(double)0x8000;

m_counter=count;

UpdateData(false);

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

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1