97can总线实验报告

2024-09-22

97can总线实验报告(精选4篇)

1.97can总线实验报告 篇一

实 验 报 告

课程名称

《现场总线技术》

题目名称

现场实验报告

学生学院

信息工程学院

专业班级

学生学号

学生姓名

指导教师

2015 年 1 月 1 日

实验一

0 STEP7 V5.0 编程基础及 S7--C 300PLC 组态

一、实验目的

通过老师讲解 STEP7 软件和硬件组态的基础知识,使同学们掌握使用 STEP7 的步骤和硬件组态等内容,为后续实验打下基础。

二、实验 内容 1、组合硬件和软件 STEP7 V5.0 是专用于 SIMATIC S7-300/400 PLC 站的组态创建及设计 PLC 控制程序的标准软件。按照以下步骤:

(1)运行 STEP7 V5.0 的软件,在该软件下建立自已的文件。

(2)对SIMATIC S7-300PLC站组态、保存和编译,下载到 S7-300PLC。

(3)使用 STEP7 V5.0 软件中的梯形逻辑、功能块图或语句表进行编程,还可应用 STEP7 V5.0 对程序进行调试和实时监视。

2、使用 STEP7 V5.0 的步骤

设计自动化任务解决方案 生成一个项目 下载到 CPU 进行调试诊断 硬件组态 程序生成 程序生成 硬件组态

图 1-1 STEP7 的基本步骤

3、启动 SIMATIC 管理器并创建一个项目(1)新建项目 首先在电脑中必须建立自己的文件:File → New →写上 Name(2)通信接口设置 为保证能正常地进行数据通信,需对通信接口进行设置,方法有 2 种:

1)所有程序

SIMATIC

STEP 7

设置 PG/PC 接口

PC Adapter(Auto)

属性

本地连接

USB/COM(根据适配器连接到计算机的方式选择); 2)SIMATIC 管理器界面

选项

PC Adapter(Auto)

属性

本地连接

USB/COM(根据适配器连接到计算机的方式选择)。

(3)硬件组态 在自己的文件下,对 S7-300PLC 进行组态,一般设备都需有其组态文件,西门子常用设备的组态文件存在 STEP7 V5.0 中,其步骤如下; 插入 →站点 →

SIMATIC 300 站点 ;  选定 SIMATIC 300(1)的Hardwork(硬件)右边 Profi

标准 → SIMATIC 300 将轨道、电源、CPU、I/O 模块组态到硬件中:

轨道:RACK-300 →

Rail;,插入电源:选中(0)UR 中 1 1, 插入电源模块 PS-300 →

PS307 5A;

插入 CPU:选中(0)UR 中 2 2,插入 CPU 模块 CPU-300→CPU315-2DP→配置 CPU 的型号(CPU 模块的最下方);  插入输入/输出模块 DI/DO:

1)选中(0)UR 中 4,插入输入/输出模块 SM-300

→ DI/DO→ 配置

输入/输出模块的型号(CPU 模块的最上方); 2)S7-300 PLC 中有些 CPU 自带输入/输出模块,此时不需进行 DI/DO组态。

(4)S7-300PLC CPU 的开关与指示灯 S7-300PLC CPU 的开关与显示灯如图 1-1 所示 模式选择器:

MRES:

模块复位功能。

STOP:

停止模式,程序不执行。

RUN:

程序执行,编程器只读操作。

RUN-P:

程序执行,编程器读写操作。

指示灯:

S F: 组错误:CPU 内部错误或带诊断功能错误。

BF: 组错误: 总线出错指示灯(只适用于带有 DP

接口的 CPU)。出错时亮。

FRCE:

FORCE:指示至少有一个输入或输出被强

制。

DC5V: 内部 5VDC 电压指示。

RUN:

当 CPU 启动时闪烁,在运行模式下常亮。

STOP:

在停止模式下常亮,有存储器复位请求时慢速闪烁。正在执行存储器复位时快速闪烁,由于存储器卡插入需要存储器复位时慢速闪烁。

(5)编程 图 1-5

CPU 开关与指示灯 图 1-1

CPU 开关与指示灯

S7-300PLC 采用模块化的编程结构,包含有通用的 OB 组织块,通用的 FC、FB 功能与功能块,西门子提供的 SFC,SFB 系统功能块,DB 数据块,各个模块之间可以相互调用。OB1 是其中的循环执行组织块,程序首先并一直在 OB1 中循环运行,在 OB1 中可以调用其它的程序块执行。

在 S7

Program 下的 Block 中,选定并打开 OB1,用梯形逻辑、功能块图或语句表编程,再保存编译和下载,即可执行程序。

(6)程序的清除(存储器复位):

图 1-2 编程界面 A、模式选择器放在 STOP 位置 B、模式选择器保持在 MERS 位置,直到 STOP 指示灯闪烁两次(慢速)

C、松开模式选择器(自动回到 STOP 位置)

D、模式选择器保持在 MERS 位置(STOP 指示灯快速闪烁)

E、松开模式选择器(自动回到 STOP 位置)

(7)运行并监控 将 CPU 打到 STOP 模式,下载整个 SIMATIC 300 站点。再将 CPU打到 RUN 模式,打开监视,程序运行状态可在 OB1 上监视到。

三、思考题 一.为什么要进行硬件组态?

PLC 是一种模块化的结构,电源、cpu、i/o 等模块都是单独成块的。而 PLC 组态是对硬件进行配置,简单的说就是告诉系统你配置了哪些东西,这样系统才能去连接你的东西。

二.硬件组态和程序生成有先后之分吗?哪种比较方便些? 没有先后之分。先进行硬件组态,然后是下载用户程序方便些。这样STEP7 在硬件组态编辑器中会显示可能的地址。而且有了系统数据块后,如果你的程序中硬件组态与你的实际硬件一致,就可以在 SIMATIC管理器中,直接选中 Blocks,然后执行下载,在提示你是否也下载系统数据块时,只要点击 Yes,就把硬件组态信息和用户程序一起下载到 CPU 中。

四、实验心得 在这次的实验中,从中了解 STEP7 V5.0 的软件,并学会在该软件下建立自已的文件,对 PLC 站组态、保存和编译,并且下载到 PLC,用软件中的梯形逻辑进行编程,还用软件进行实时监视。开始没找到正确的硬件进行组态,然后在师姐的指导下,找到完全和硬件一致的进行组态,之后的还是比较容易。

实验 二

S7-300PLC 之间的 MPI 通讯

一、实验目的 熟悉现场总线网络 MPI 网络通讯的基本原理和 STEP7 硬件组态,掌握 S7-300PLC 编程和两个 PLC 之间 MPI 网络通讯的具体方法。

二、实验内容 (1)要求:对 PLC 及 MPI 网络组态,采用 STEP 7 V5.x 编程,以 MPI 网络通讯的方式,在第二台 S7-300 的程序中编译一组密码,在第一台 S7-300 上输入八位的开关信号。如果开关信号与密码不同,则第二台 PLC 的某个输出点上的输出信号闪烁;如果开关信号与密码相同,则这个输出点上的输出信号长亮。根据需要添加实验内容和使用 PLC 内部的系统功能。

(2)实验主要仪器设备和器材:S7-300 可编程控制器,开关装置,S7-300 适配器,装有 STEP7 软件的工控机(或电脑)。

(3)实验方法、步骤及结构测试:

图 2-1 MPI 通讯示意图 具体实验步骤如下:

1、硬件连接 应用带连接头的屏蔽双绞线,通过 PLC 中的 MPI 接口进行连接,SIEMENS300(2)CPU SIEMENS300(1)CPU 全局数据

将实际线路连好,开关输入量也接好;同时全部清除两台 S7-300PLC原有的程序,并打到 STOP 挡,为硬件组态和编程作好准备。

2、组态硬件 利用 SIMATIC 管理器,在项目中为要连网的设备生成硬件站之后利用硬件组态工具逐个打开这些站。

1)打开 SIMATIC Manager,在“文件”选择“新建”。在空白处点击右键选中“插入新对象”,再选 SIMATIC 300。

2)进行组态 第一台设备:根据实际硬件配置组态。

第二台设备:根据实际硬件配置组态。

3)选“站点”,进行“保存和编译”。

3、设定 MPI 地址 组态硬件时,必须定义CPU连接在MPI网络上,并分配各自MPI地址。

1)在 SIMATIC 300(1)选中 Hardware(硬件)。

2)双击,选 CPU315-2DP。

3)双击,选属性。

4)选定 MPI(1),并设定其地址。

在硬盘上保存 CPU 的配置参数,然后分别下装到每一 CPU 中(点到点)。

4、检查网络

1)网络组态 分别在两台 PLC 硬件组态中,选菜单栏中的“选项”,然后选“组

态网络”,进行组网。选中 MPI(I)双击,将两台 PLC 组网。

用 Profibus 电缆连接 MPI 节点,可以用多条 MPI 线连接。在这里用一条 MPI 线连接即可,这样就可以与所有 CPU 建立在线连接。打开网络组态查看,还可用 SIMATIC 管理中 PLC 下的“Accessible Nodes”功能来测试连接状态。

5、设计程序 编译程序 进入程序设计时,可按以下步骤:选 SIMATIC 300(1)→CPU 315-2DP→S7 Program(1)→Blocks→OB1,双击后可开始编写程序。

第一台 S7_300 的程序框图:

读取八位开关信号 IB0,传递到 MB0:

MOVE EN

ENO IN

OUT 第二台 S7-300 的程序框图:

输入密码,输入固定数据 1280,传送到 MW2:

MOVE EN

ENO IN

OUT

开关信号数据 MW6 与密码数据 MW2 对比:

IB0 MB0 1280 MW2

CMP==1 IN1

IN2

CMP<>1 IN1

IN2

输出为 Q0.0。输出信号灯闪烁:

第二台 CPU 的时钟存储器,地址 M100 此时闪光频率为 1Hz,周期=1s,灯通=0.5s,灯闭=0.5s 程序框图

M100

Q124.5 6、生成全局数据表 应用“定义全局数据”工具可以生成一个全局数据表。将数据表编译两次然后下装到 CPU 中。

根据程序可知,数据从第一个 CPU 中的 MB0 发送到第二个 CPU中的 MW6,编译两次后,下载。

生成全局数据表步骤如下:

1)选择 MPI 网 回到前面的项目界面双击 MPI 网→选项→定义全局数据,产生或打开全局数据表。

2)分配 CPU MW2 MW6 MW2 MW6

点击 GDID 后的空格右键弹出 CPU→点击 CPU→双击 SIMATIC

300(1)→双击 CPU 3)填入发送和接收数据(注明发送方)

填入 MB0→选“选作发送器”→在后一空格用右键弹出 CPU→点击 CPU→双击 SIMATIC

300(2)→双击选中另一个 CPU→点击下一空格填入 MW6→编译→关闭→点击“查看”→选“扫描速率”及“全局数据状态”→编译→关闭→退出。

4)下载程序

定义完全局数据后下载程序。在下载程序前应先清除原有的程序。SIMATIC 300(1)→下载。

5)运行及结果 A、将两台 S7-300PLC 的开关打到 RUN 挡,S7-300CPU 上的其它灯是不亮的,这时全局数据开始自动循环交换。

B、在第一台 PLC 上输入八位开关量 IB0,数据传递到 MB0,通过 MPI 网络,运行全局数据表,数据从第一台 PLC 的 MB0 传送到第二台 PLC 的 MW6。MW6 上的数据与第二台 PLC 的 MW2 中C、密码数据相比较后,在第二台 PLC 的输出点 Qxxx.x 输出结果。若信号与密码相同,第二台 PLC 输出灯 Qxxx.x 亮。

三、思考题 1、在下载程序前如何清除原来的程序? 现在 PLC 把新的程序下载进去,会自动覆盖原本的程序的。如果要直接清除的话,则可通过复位清除寄存器内容,先把模式选择器放在STOP 位置,然后模式选择器保持在 MERS 位置,直到 STOP 指示灯闪烁两次,再松开模式选择器,模式选择器保持在 MERS 位置,此时 STOP 指示灯快速闪烁,然后松开模式选择器就可以了。

2、下载程序时应注意什么问题? A 硬件组态没有错误,组态都错了,下进去也没用。

B最好先下新硬件组态信息,然后保证按键打到STOP档位再下程序。

C 在进行了新的组态编译时,必须点击 Yes,即把新的硬件组态信息也下载到 CPU 中,否则新的硬件组态和旧的用户程序将产生冲突。

3、密码数据在开关量上是如何表示的?试着把密码设为小于 256 的数,再运行程序看结果如何?为什么? 如果字节数据转换成字,则 MB0、MB1 分别变成 MW6 的高 8 位和低 8位,MB1 没有则补 0,MB0 传送到 MW6 中变成高 8 位。如果小于 256,则输出信号长亮,因为密码相同了啊。

四、实验心得 在这次实验中,学会了 PLC 两个 PLC 之间 MPI 网络通讯的方法,同时学会了用梯形图编程,如果是简单的程序基本能自己编好。实验中开始没懂程序原理,难点就在那个密码表示,后来请教师姐才懂的。

实验三 三

S7-300PLC 之间的 DP 通讯

一、实验目的

熟悉现场总线 DP 网络通讯的基本原理,掌握 S7-300 编程和两个 PLC 之间 DP 网络通讯的具体方法。

二、实验内容

1)要求:对 PLC 及 DP 网络组态,采用 STEP 7 V5.0 编程,以 DP 网络通讯的方式,在第二台 S7-300(从站)的程序中编译一组(三个)两字节的密码,分别为 256,512,1280,在第一台 S7-300(主站)上输入 16 位的开关信号。如果开关信号与其中一组密码相同,则第一台 PLC 的一个指定的相应输出点上的输出信号亮,即输入信号是256,则 Q4.0 亮,输入信号是 512,则 Q4.1 亮,输入信号是 1280,则 Q4.2 亮;否则没有灯亮。

2)实验主要仪器设备和材料:S7-300 可编程控制器,开关装置,S7-300适配器,装有 STEP7 软件的工控机。

3)实验方法、步骤及结构测试:

1、硬件连接 将两台的 DP 口通过 PROFIBUS 电缆连接,开关输入量接在主站的DI 模块上;同时将两台 PLC 全部清除原有程序,打到 STOP 挡,为硬件组态和编程作好准备。

SIEMENS300(1)主站

交换区 PROFIBUS-DP SIEMENS300(1)从站

交换区

图 3-1 DP 通讯示意图 4)组态硬件(1)新建项目 在 STEP7 中创建一个新项目,然后选择“插入”站点Simatic 300 站点,插入两个 S7 300 站,这里命名为 Simatic 300(master)和 Simatic 300(slave)。再选择“插入”“站点”PROFIBUS。如图 3-2 所示。当然也可完成一个站的配置后,再建另一个。

(2)组态硬件 从站和主站硬件根据实际选定,原则上要先组态从站。双击 Simatic 300(slave)“Hardware(硬件)”,进入硬件组态窗口,在功能按钮栏中点击“Catalog”图标打开硬件目录,按硬件安装次序和订货号依次插入机架、电源、CPU 和输入/输出模块等进行硬件组态,主从站的硬件组态原理一样。

5)参数设定 硬件组态后,双击 DP(X2)插槽,打开 DP 属性窗口点击属性按钮进入 PROFIBUS 接口组态窗口,进行参数设定。

(1)从站设定:在“属性 DP ”对话框中选择“工作模式” 标签,将 DP 属性设为从站(Slave)。然后点击“常规”标签,点击“属

性”按钮,之后点击 Network Settings 标签,对其它属性进行配置,如:站地址、波特率等。设定完成之后,点击”保存”即可,不要进行编译。

(2)主站设定:在“属性 DP ”对话框中选择 “工作模式”标签,将 DP 属性设为主站(Master)。然后点击“常规”标签,点击“属性”按钮,对其它属性进行配置,如:站地址、波特率等。注意:这里的主站地址跟从站的地址不能重复,且同一个站的 MPI 地址和 DP地址要保持一致。

(3)连接从站:在硬件组态(HW Config)窗口中,打开窗口右侧硬件目录,选择“ PROFIBUS DPConfigured Stations”文件夹,将 CPU31x 拖拽到主站系统 DP 接口的 PROFIBUS 总线上,这时会弹出 DP 从站连接属性对话框,选择所要连接的从站后,点击“连接”按钮,再点击“确认”。注 注:如果有多个从站存在时,要一一连接。

(4)设定交换区地址 双击从站,选择“组态”标签,打开 I/O 通信接口区属性设置窗口,进行设置。或者进入“从站属性“窗口,如果没有出现表格,则要点击下面的“新建”,分两次输入表格。

地址类型:

选择“Input”对应输入区,“Output”对应输出区。

地址:

设置通信数据区的起地址。

长度:

设置通信区域的大小,最多 32 字节。本例设为 8 字节。

单位:

选择是按字节(byte)还是按字(word)来通信。

一致性:

选择“Unit”是按在“Unit”中定义的数据格式发送,即

按字节或字发送。

从站与主站设置完成后,点击“编译存盘”按钮,编译无误后即完成从站和主站的组态设置。

6)检查网络 点击“组态网络”图标

。打开网络组态查看,是否成功。

7)设计程序

输入三个 16 位的密码:

256,512,1280 结束 从站

主站 给定一个 16 位的开关量信号 开关量是 256 开关量是 512 开关量是1280 Q4.0 亮 Q4.1 亮 Q4.2 亮 结束 图 3-2 程序框图

8)程序清单

输入零字节的任一位闭合,使能接通。IW0的值传送到 QW10。

图 3-4 从站中密码设定

图 3-3 主站程序

9)运行及实验结果 输入开关量 1,则 Q4.0 亮;输入开关量 2,则 Q4.1 亮;输入开关量 5,则 Q4.2 亮,输入其它量时,信号与密码不同,无灯亮。

三、思考题

1.指出 PROFIBUS 中,DP 与 MPI 通信的特点与区别。

MPI:多点通信的接口,是一种适用于少数站点间通信的网络,多用于连接上位机和少量PLC之间近距离通信。MPI的通信速率为19.2K~12Mbit/s。在 MPI 网络上最多可以有 32 个站。MPI 允许主-主通信和主-从通信。

DP:允许构成单主站或多主站系统。在同一总线上最多可连接 126 个站点。通讯波特率最大支持 12MB,距离可达 1200M。包括以下三种不同类型设备:一级 DP 主站、二级 DP 主站、DP 从站。

2.简述数据交换过程以及数据交换区的设置方法。

由主机数据交换区的数据通过总线传送到从机的数据交换区。双击从站,选择组态标签,打开 I/O 通信接口区属性设置窗口,进行设置。或者进入从站属性窗口,如果没有出现表格,则要点击下面的新建,分两次输入表格。

3.在不改变交换区地址的情况下,QW10-QW16,IW20-IW24 可以用 M寄存器区取代吗?说明原因。

可以,取代的话还会使程序简单,不过功能也会变得简单罢了。

四、实验心得

在这次实验中,熟悉现场总线 DP 网络通讯的基本原理,弄懂了两个PLC 之间 DP 网络通讯的方法,同时又用梯形图编程,加强了编程能力。实验中 DP 通讯还是比较复杂,主要是有很多细节,常常要请教师姐,看来要多用和多了解才行。

2.97can总线实验报告 篇二

关于CAN的介绍,官方给出了一份文档,点击下载。经过了好几遍的通读之后,对他的基本步骤及意图有了一些了解,但是有一点让我感到疑惑——所有的步骤都是在PC上完成的,但是最后的使用是在ARM上,我并没有看到哪一步对ARM板进行了操作,那么最后如何实现呢?要了解这个问题,首先简单看看文档的操作步骤。

首先我们需要将ARM板上的CAN模块启动,调节SW8,将profile设置为1。SW8在显示屏接线的下方,如下图所示:

ARM开发板运行linux系统并且不修改canutil工具源码

如果你的ARM是运行的linux系统,那么恭喜你,TI的linux源码中已经集成了CANUTIL工具,可以直接使用。但是默认CAN驱动好像是未打开的,例如:在ARM终端

root@am335x-evm:~# canconfig can0 bitrate 50000 Cannot find device can0 failed to set bitrate of can0 to 50000

提示找不到can0设备,说明内核中未加入CAN驱动,那么我们需要配置驱动,方法如下:

在内核根目录输入

gedit Makefile

找到如下片段:

export KBUILD_BUILDHOST :=(SUBARCH)ARCH?=(SUBARCH)

CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:”%”=%)

修改为:

export KBUILD_BUILDHOST := $(SUBARCH)

ARCH ?= arm

CROSS_COMPILE ?= arm-eabi-

此步骤目的是使当前内核编译模式为ARM平台。

接下来输入:

make menuconfig

按照图示步骤依次选择:

1. [*] Networking support —>

2. <*> CAN bus subsystem support —>

3. CAN Device Drivers —>

4. <*> Bosch D_CAN devices —>

注意把这里的D_CAN打上星号。

5. Generic Platform. Bus based D_CAN driver

同样将这一项打上星号。

好了,驱动配置完毕,下面执行Make指令,随后将生成好的内核镜像制作到SD卡中,重新启动开发板,那么CAN0设备就可以使用了。

可以尝试通过以下指令进行配置和收发:

1. 配置can0波特率为50000 ,开启三采样模式vcD4NCjxwcmUgY2xhc3M9”brush:java;“>canconfig can0 bitrate 50000 ctrlmode triple-sampling on打开can0设备

canconfig can0 start

发送数据

cansend can0 -i 0x10 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88

接收数据

candump can0

ARM开发板运行android系统或者要重新编译canutil工具

如果你是用的android或者你想对CAN工具进行修改重新编译,那么还需要继续下面的步骤。

首先同样需要在内核中配置CAN驱动,并将Profile Selection设置成1,方法同上。

然后下载源码,官方说明中是需要下载三种源码(点击可下载):

- iproute2

- libsocket

- canutil

但是这里我只需要用到最后一个canutil即可,

下载完成之后,首先配置环境变量,如下:

export GNUEABI=arm-arago-linux-gnueabiexport CC=$GNUEABI-gccexport LD=$GNUEABI-ldexport NM=$GNUEABI-nmexport AR=$GNUEABI-arexport RANLIB=$GNUEABI-ranlibexport CXX=$GNUEABI-c++export PREFIX=$FILESYS_PATH/usrexport CROSS_COMPILE_PREFIX=$PREFIXexport PATH=$TOOL_CHAIN_PATH/bin:$PATHexport LIBSOCKETCAN_INSTALL_DIR=$LIBSOCKETCAN_PATH/installexport PKG_CONFIG_PATH=$LIBSOCKETCAN_PATH/configexport LD_LIBRARY_PATH=${LIBDIR}:${LD_LIBRARY_PATH}export LD_RAN_PATH=${LIBDIR}:${LD_RAN_PATH}export LDFLAGS=-Wl,--rpath -Wl,$LIBSOCKETCAN_INSTALL_DIR/libexport INCLUDES=-I$LIBSOCKETCAN_INSTALL_DIR/include

其中PREFIX 是目标目录,可以自行设置。

然后进入canutils-4.0.6文件夹,输入以下指令:

./configure --host=arm-arago-linux --prefix=$PREFIX --enable-debug

之后会根据目标平台生成相应的Makefile。接着依次执行:

make

make install

完毕之后,会在PREFIX/usr/bin下找到如下四个文件:

cansend , candump , cansequence , canecho

PREFIX/usr/sbin下找到如下一个文件:

canconfig

将这几个文件复制到android系统的/system/bin目录下(需要root权限)。这样我们就可以执行这5个命令了。

但这时候如果直接执行,可能会出现如下错误:

root@android:/ # cansend/system/bin/sh: cansend: No such file or directory

这说明cansend这个应用程序是动态编译的,本地缺少需要的库文件。可以在PC上通过命令readelf查看需要的库文件。

root@MC:~/android/can/usr/bin# readelf -l cansendElf file type is EXEC (Executable file)Entry point 0x8679There are 8 program headers, starting at offset 52Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align EXIDX 0x001074 0x00009074 0x00009074 0x00008 0x00008 R 0x4 PHDR 0x000034 0x00008034 0x00008034 0x00100 0x00100 R E 0x4 INTERP 0x000134 0x00008134 0x00008134 0x00019 0x00019 R 0x1[Requesting program interpreter: /lib/ld-linux-armhf.so.3] LOAD 0x000000 0x00008000 0x00008000 0x01080 0x01080 R E 0x8000 LOAD 0x001080 0x00011080 0x00011080 0x00158 0x00170 RW 0x8000 DYNAMIC 0x00108c 0x0001108c 0x0001108c 0x000e8 0x000e8 RW 0x4 NOTE 0x000150 0x00008150 0x00008150 0x00044 0x00044 R 0x4 GNU_STACK0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4

看到最中间显示的一句话:

[Requesting program interpreter: /lib/ld-linux-armhf.so.3]

这里需要ld-linux-armhf.so.3库文件才能使用cansend命令。这里也是android和linux在文件系统上的一个差异,android系统无法直接运行由交叉编译器动态编译出来的应用程序。这里可以参考我的另一篇博客——

Android系统如何运行动态编译的程序 。将ARM-linux系统中的库文件复制到android系统的/lib目录下即可。

这时候,我们可以利用canconfig来配置can设备,也可以通过cansend、cansequence来发送数据,通过candump来接收数据,具体指令集可以参考官方文档。

3.97can总线实验报告 篇三

摘要:提出一种使用USB接口实现CAN总线网络与计算机连接的方案。讨论了CAN总线与计算机之间的硬件接口电路,同时分析了固件编程方法及USB驱动程序设计思路。

关键词:USB CAN总线 固件编程 适配器

现场总线作为二十世纪80年代发展起来的新兴技术,在工业现场已有了广泛的应用。在比较有影响力的几种现场总线中,CAN总线以其突出的优点不仅大量应用于工业现场,而且在楼宇自动化、智能终端设备等民用领域也有了长足的发展。

现场总线网络技术的实现需要与计算机相结合。以往CAN总线网络与计算机的连接采用RS232、ISA或PCI接口。但是随着计算机接口技术的发展,ISA接口已经逐渐被淘汰;RS232接口数据传输率太低;PCI虽然仍是高速外设与计算机接口的主要渠道,但其主要缺点是占用有限的系统资源、设计复杂、需有高质量的驱动程序保证系统的稳定,且无法用于便携式计算机的扩展。随着USB1.1、USB2.0规范的相继制定,为外设与计算机的接口提出了新的发展方向。USB的主要特点有:外设安装简单,可实现热插拨;通讯速率高,USB1.1全速传送速率为12Mbps,与标准串行端口相比,大约快100倍;支持多设备连接;提供内置电源。

本文给出一种在Windows2000下使用USB1.1协议实现CAN总线适配器的设计方法。整个设计主要开发适配器的固件及计算机的驱动程序、应用程序,以达到用USB接口连接现场CAN总线网络的目的。

图1

1 适配器硬件接口设计

适配器硬件电路由微控制器、CAN总线接口、USB总线接口和DC-DC隔离电源模块等组成。原理框图如图1所示。

微控制器P89C51RD2是Philips公司生产的增强型MCS-51兼容单片机,片内集成64KB闪存和1KB扩展RAM,双数据指针,4级中断优先级,7个中断源,(本网网收集整理)内置看门狗,可编程时钟输出,在6时钟模式下工作,速度是标准51单片机的两倍。此时外部最高频率可达20MHz。在高速、大程序容量、中小规模数据处理场合是一款非常理想的单片机型。

CAN总线接口使用Philips公司的独立CAN总线控制器SJA1000,并由光耦6N136进行总线隔离。SJA1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制,符合CAN2.0A和2.0B规范,最高速率可在达1Mbps。CAN总线收发器采用PCA82C250。

PDIUSBD12是Philips公司推出的全速USB接口器件,完全兼容USB1.1规范。图1中D+引脚信号电平通过器件SoftConnect命令内部上拉,从而向主机表示为一个全速设备。EOT引脚自动检测USB接口的VBUS电压以确定USB电缆是否连接到了主机。SUSPEND是双向引脚,用以向微控制器指示器件是否挂起。当有USB总线事件发生时,引脚向微控制器发出中断信号。PDIUSBD12支持总线复用和非复用两种并行接口模式,以方便连接不同类型的微控制器。图1中采用总线复用方式,当用奇数地址访问PDIUSBD12时被认为是命令,偶数地址访问则被认为是数据读写。

各器件都需要外部时钟信号,而且它们自身也都有可编程的时钟输出功能,这就给系统的时钟设计带来了便利。图1中微控制器6时钟运行模式下,外部为12MHz晶振。P89C51RD2的P1.1引脚产生6MHz方波作为PDIUSBD12的.输入时钟;通过PDIUSBD12的SetMode寄存器编程使CLKOUT输出时钟频率为24MHz,作为SJA1000的外部输入时钟。

2 软件设计

软件设计包括微控制器的固件设计和计算机端USB驱动程序两部分。

2.1 微控制器固件编程

固件编程是USB数据传输系统中终端设备程序设计的一个重要概念。微控制器通过固件是程序与计算机进行数据交换。固件设计的目的是:使PDIUSBD12在USB上达到最大的传输速率;增加系统的可扩展性和硬件无关性。

固件要实现的内容:一是对SJA1000初始化,接收CAN总线送来的数据,收集CAN网络状态信息,并将主机的数据下发到CAN网络;二是对PDIUSBD12初始化,完成USB总线连接过程,并组织CAN网络和主机之间的数据传送。设计中采用KeilC51软件编译环境,C51和ASM混合编程方式。

SJA1000和PDIUSBD12都有完善的中断机制,微控制器可以通过读它们的中断寄存器获得总线事件。为了提高固件的运行效率,主程序对系统进行实始化后开放中断,在中断服务程序中对事件进行分析和必要的处理,并设置相应的变量标志和数据缓冲区。主程序则循

环查询变量标志,调用相应的子程序进行处理。这种程序结构使得主程序能够在前台处理各种数据传送任务,同时又可以通过中断在后台及时处理总线事件。

2.1.1 CAN协议实现

SJA1000支持BasicCAN和PeliCAN两种协议模式。在适配器设计中采用了BasicCAN模式。中断设为电平中断方式,SJA1000中断服务程序框图如图2所示。

2.1.2 USB1.1协议实现

PDIUSBD12支持所有的四种USB数据传输方式。在适配器的设计中使用了控制传输、中断传输和批量传输。控制传输中只用来传递控制信息,固定使用端点0;中断传输使用端点1,用来传送CAN网络状态信息;批量传输用来实现主机和CAN网络节点之间的数据传送,使用端点2。图3是PDIUSBD12中断服务程序框图。

2.2 驱动程序设计

USB驱动程序属于WDM(Windows driver module)类型。WDM驱动程序是分层的,引入了FDO(Function Device Object)和PDO(Physical Device Object)两个新类来描述硬件,每一个物理硬件有一个PDO,但是可以有多个FDO,在驱动程序中直接操作的是PDO和FDO。系统通过全局唯一标识符GUID实现驱动程序的识别。应用程序和WDM驱动程序通信时,系统为每个用户请求打包形成一个I/O请求包发送到驱动程序。

图4是Windows中USB的通信层次结构模型。图4系统软件方块中的底部是Windows系统提供的驱动程序,包括主控制器驱动程序(OPENHCI.SYS或者UHCD.SYS)、HUB驱动程序(USBHUB.SYS)是一个类驱动程序(USBD.SYS)。

Windows2000下驱动程序的设计工具是VC++和Win2000DDK,但是直接使用DDK编程有相当大的难度。目前有第三方软件厂商提供了一些驱动程序开发工具,如Jungo公司的WinDriver、Compuware公司的DriverStudio等。这些工具仍然是基于WindowsDDK的,但是进行了新的封装,提供了驱动程序设计向导。

适配器设计中采用了DriverStudio作为驱动程序开发工具。利用其中的DriverWorks一步步地作出选择并修改少量参数,即可生成驱动程序框架和测试台应用程序框架,对USB设备的通用性部分支持得很好。在程序框架,对USB设备的通用性部分支持得很好。在VC++中对向导生成的代码作修改,并对设备特殊功能部分添加处理代码,然后用VC++编译为*.SYS文件,就是一个完整的驱动程序。SoftIce是DriverStudio的另一个调试工具,可以对驱动程序进行操作系统内核级的跟踪与调试。

生成驱动程序后,编写相应的INF文件是重要的一步。INF文件在操作系统发现新硬件之后向系统指明应该安装的驱动程序、系统向设备提供的服务以及注册表项要修改的内容。

4.97can总线实验报告 篇四

深入研究了CAN网络协议的技术规范,根据J1939应用层协议制订了相应的.通信协议,设计了基于P87C591单片机的CAN总线灯光控制系统网络.试验结果表明,所设计的灯光控制系统局域网络运行状况良好,满足使用要求.

作 者:郭俊飞 李军伟 郑玉英 GUO Jun-fei LI Jun-wei ZHENG Yu-ying 作者单位:郭俊飞,李军伟,GUO Jun-fei,LI Jun-wei(山东理工大学,交通与车辆工程学院,山东,淄博,255049)

郑玉英,ZHENG Yu-ying(福建经济学校,福建,福州,350007)

上一篇:有关表弟的小学作文:淘气的表弟下一篇:车险年度工作总结