CANopen IO模块基本通信测试.docx
- 文档编号:11297888
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:23
- 大小:1.21MB
CANopen IO模块基本通信测试.docx
《CANopen IO模块基本通信测试.docx》由会员分享,可在线阅读,更多相关《CANopen IO模块基本通信测试.docx(23页珍藏版)》请在冰豆网上搜索。
CANopenIO模块基本通信测试
思泰CANopenIO模块基本通信测试
前言:
F1键的妙用
当您在使用PCAN-view时,如果遇到某个操作功能不太清楚是什么含义,比如某个按键的操作功能是什么,应该怎么查看呢?
快捷方法:
您只需要在操作当前页面下按F1键,就可快捷地打开相应的操作帮助文档,比如,在Connect窗口下按下F1键,即可查阅该窗口下大部分名词的含义,以及一些操作的步骤。
1.思泰CANopenIO模块简介
本文档选用的是SYSTEC(思泰)CANopenIO-X116DI/8DO模块进行通信实操,因此模块简介也以该模块的配置为标准进行。
1.1IO规格及CANopen特性
1.1.1IO规格
·数字输出:
24VDC/500mA的8通道输出;高压端配置有监测及保护功能的断路器;过热保护功能
·数字输入:
24VDC,16通道输入;通道隔离功能;每4个通道共享1个接地端
1.1.2CANopen特性
·遵循通信文档CiA301DSV4.02;
·遵循设备文档CiA401DSV2.1;
·遵循文档CiA401DSV2.1的标准指示灯信号;
·遵循文档CiA305DSV1.1的LSS层;
·配备2个TPDO与2个RPDO;
·动态的、可修改的PDO链接与映射;
·配备SDO服务器;
·配备生命守护(lifeguarding)、节点守护、心跳报文生产等功能;
·配备5个心跳报文消费者;
·配备紧急报文生产者;
·具备最小启动能力(MinimumBoot-upcapability);
·具备最小NMT启动主端的功能(MinimumNMTboot-upmasterfunction);
1.2供电电压及运行环境条件
·操作电压:
24V±20%;
·电流消耗:
<70mA;
·操作温度:
-20°Cto+70°C;
·贮存温度:
-20°Cto+90°C;
·体积(长x宽x高单位:
mm):
95x70x58;
·安装方式:
DIN导轨安装;
·外壳防护等级:
IP20;
·重量:
约130g;
1.3设备引脚及含义
图:
设备俯视图来源:
《systecCANopenIOdatasheet》
16进制编码旋钮(上图中下方蓝色模块)含义:
Node-ID:
允许使用者配置该IO模块的Node-ID号,可配置0x1-0x7F(1-127);当Node-ID配置为0x00时,设备将在复位或重新上电时,恢复出厂设置。
Baud-rate:
允许使用者在该处配置该IO模块的波特率,如下所示:
0=1Mbit/s;1=800kbit/s;2=500kbit/s;3=250kbit/s;4=125kbit/s
5=100kbit/s;6=50kbit/s;7=20kbit/s;8=10kbit/s
表:
设备引脚含义来源:
《systecCANopenIOdatasheet》
2.CANopen通信链路搭建
2.1物理连接部分
1PEAKsystemCAN总线监视软件,PCAN-view;
2PEAKsystemUSB--CAN转换器
3DB9母口总线;
4SYSTEC(思泰)CANopenIO-X116DI/8DO模块;
524V直流电源。
2.2PCAN-view软件部分
PCAN-view是由PEAK提供的CAN总线驱动程序,可以模拟CANopen主站进行数据收发。
各物品连接到位后,打开软件,会自动弹出连接窗口:
其中一些参数含义如下:
1Bitrate:
规定软件收发数据的比特率,须与IO模块的比特率设置相同,否则传输数据时将报错;
2BusTimingRegister:
16进制显示的总线定时寄存器(BTR0BTR1)的值;此值在选择比特率时将自动改变,无需手动设置;
3Filtersettings:
报文过滤设置,可选择接收标准类型还是扩展类型的报文,以及设置软件可收发数据的节点ID范围;
这里我们进行如上图的设置,并将IO模块的旋钮部分进行如下设置:
结合上一节中IO模块的旋钮含义部分,此时IO模块收发速率为125kbit/s,节点ID号为2。
3.基本通信测试
3.1NMT网络管理
3.1.1NMT简介
NMT(Networkmanagement)网络管理是CANopen网络中的管理方式,主站通过NMT进行发号施令,保证整个网络的可靠性、可控性。
因此每个CANopen从站节点都必须具备NMT惯例的相应代码,这是节点具备CANopen协议的最基本的要素。
每个CANopen节点从上电开始有6种状态:
来源:
《CANopen轻松入门》
每种状态的含义如下:
初始化(Initializing):
节点上电后对功能部件包括CAN控制器进行初始化;
应用层复位(ApplicationReset):
节点中的应用程序复位(开始),比如开关量输出、模拟量输出的初始值
通讯复位(Communicationreset):
节点中的CANopen通讯复位(开始),从这个时刻起,此节点就可以进行CANopen通讯了。
预操作状态(Pre-operational):
节点的CANopen通讯处于操作就绪状态,此时此节点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作;
操作状态(operational):
节点收到NMT主机发来的启动命令后,CANopen通讯被激活,PDO通信启动后,按照对象字典里面规定的规则进行传输,同样SDO也可以对节点进行数据传输和参数修改;
停止状态(Stopped):
节点收到NMT主机发来的停止命令后,节点的PDO通信被停止,但SDO和NMT网络管理依然可以对节点进行操作。
其命令报文总结格式如下:
3.1.2NMT命令改变IO模块运行状态
IO模块上电后,可以观察到Run指示灯处于闪烁状态,根据思泰提供的设备操作手册,可得知这是处在预操作状态的指示,参考的是CiA303-3V1.0子协议。
来源:
《systecCANopenIOdatasheet》
我们需要发送命令,将模块转换为操作状态后,才能进行下一步的测试操作。
在PCAN-view中进行如下操作:
点击创建新消息的按钮后,弹出编辑传输消息的窗口,编辑发送内容后点击OK,即可创建报文,并在Transmit区域中可观察到该报文。
其中一些参数含义如下:
1CycleTime:
设定报文的传输周期,若为正数,软件会每隔设定好的周期发送该报文,实现周期传输;否则使用者可单击空格进行发送,实现单次传输;
2Paused:
若不勾选,且CycleTime同时设定为正数,则点击OK后该报文立刻进入周期传输状态;
3ID:
功能号,填写内容决定了该条报文拥有何种功能;000指示该条报文为NMT命令报文;
4Length:
报文数据域长度,可选择0-8,单位为字节;NMT命令的数据域长度固定为2;
5Data:
报文数据域,根据功能号的不同,其含义也不同;NMT命令中,第0个字节表示命令指示,01h表示该NMT命令为将模块转换为运行状态;第1个字节表示目标模块节点ID号,00h表示该NMT命令为广播报文,所有节点均适用。
在Transmit区域点击该报文,单击空格键后,即可发送该报文:
同时也可观察到Receive区域接收到了一条回应报文,这是IO模块的回应报文,指示IO模块已经切换到操作状态,模块的Run指示灯也变成了常量状态。
3.2PDO通信测试
3.2.1PDO简介
PDO协议是CANopen中的一种单向传输方式,用于实时数据传输,其传输形式如下:
PDO分为TPDO(发送PDO)和RPDO(接收PDO),一个CANopen站点可以从自身的TPDO发送数据到另一个站点相应的RPDO之中。
CiA301子协议已经预定义TPDO和RPDO的CAN-ID,如下图所示:
表:
PDO的CAN-ID定义,来源:
《CANopen轻松入门》
同时每个PDO在对象字典中,都有自己的通信参数描述其通信特性,举例如下图所示:
表:
PDO的通信参数,来源:
《思泰操作手册L-1070e》
CiA301子协议已经预定义每个PDO通信参数的对象字典索引值,上图所示的TPDO1通信参数的对象字典索引为1800h,子索引00h、01h、02h、03h、05h分别代表了不同的含义:
00h,LargestSubindexsupported:
最大支持的子索引个数;即1800h下有多少个子索引;
01h,COB-IDusedbyPDO:
PDO所使用的COB-IB;
02h,TransmissionType:
传输类型,其值可选,详解在下文中进行;
03h,InhibitTime:
生产禁止约束时间,单位:
0.1ms;描述该PDO不可以在指定的一段时间内连续发送;
05h,Eventtimer:
事件定时器触发的时间,单位:
ms;即计数器,每隔一定时间数值+1,与02h结合,可规定PDO循环发送的时间;
3.2.2通信测试
创建一条新报文后如下编写报文,其含义为软件向从站的RPDO1发送一条8字节数据域为全1的报文,点击报文后,单击空格,即可进行PDO报文发送:
而由于PDO的单向传输特性,仅从此次PDO传输我们无法得知接受站点是否正确收到PDO数据,只能使用另外的手段(如SDO读取、观察相应IO的行为等)得知数据是否接收到位。
3.3SDO通信测试
3.3.1SDO简介
SDO协议是CANopen中的一种双向传输方式,用于非实时数据传输,如配置信息的读写。
具体而言又可以分为快速SDO与普通SDO,其区别在于前者能在一次来回传输完所需的信息,后者则需要分段传输所需信息。
因为实际应用时几乎用不到普通SDO,所以此处以快速SDO为例,进行操作的示例。
CANopen中规定了SDO传输报文的格式,按照格式填写报文信息,即可进行SDO通信,其部分报文格式总结如下:
图:
SDO命令报文格式-1
图:
SDO命令报文格式-2
3.3.2通信测试
接下来我们进行SDO读取节点对象字典内容的操作,创建报文后,如下编写报文:
其中查找厂商提供的datasheet,可以得知节点的1000h索引处的内容为设备类型号码:
点击报文,单击空格后,可以在Receive区域接收到返回的报文信息:
可以观察到582h处收到了一条信息为4300100091010300的报文,比对报文格式,可知此次从1000h处读取并返回了4个字节的数据,且数据为00030191。
如此便完成了一次SDO读对象字典的操作,而有关SDO写对象字典的操作,将在下面几节中提到。
3.4修改TPDO映射参数
3.4.1PDO映射参数简介
前面我们简要介绍了PDO传输方式,并通过报文编辑器,实现了主站向从站发送了自己填写的数据。
那么问题来了,当并非通过PCAN模拟主站PDO发送,或是从站向主站发送数据时,其报文数据域里携带的是什么数据?
这就涉及到了PDO的映射参数。
映射参数与通信参数类似,都是PDO所持有的,描述其自身特性的东西。
映射参数的内容,是PDO所发送数据的索引值,如下图所示:
图:
PDO映射参数举例,来源:
《CANopen轻松入门》
类比C语言,笔者认为映射参数与二重指针的概念十分相似。
即映射参数是一个二重指针,其内容(索引值)是一个一重指针(地址),指向了真正要传输的数据。
图:
TPDO1映射参数,来源:
《思泰操作手册L-1070e》
映射参数的子索引00h,描述的是该映射参数下有效映射的个数,即余下子索引01h~08h有多少个指向的数据能够发送出去,如00h内的值为3,则01h~03h内索引指向的数据能够被该PDO发送,并且数据的排布顺序也是根据子索引的顺序排布。
同时,一条CAN报文的数据域总共只有8字节(64位),因此所有映射参数映射的内容,其总大小不能超过64位。
3.4.2修改步骤
节点的PDO映射参数修改需要使用SDO写值到节点的对象字典当中,其修改步骤如下:
禁用该PDO的COB-ID→清零映射个数→写映射参数→填写映射个数→使能该COB-ID
我们仍以TPDO1为例,演示如何修改PDO的映射参数。
1禁用COB-ID
在禁用/使能COB-ID时,我们还需要提前了解COB-ID的组成和各个位的功能:
图:
TPDO的COB-ID结构
valid:
0表示PDO存在或有效;1表示PDO不存在或无效;
RTR:
0表示此PDO允许RTR;1表示此PDO不允许RTR;
frame:
0表示11位CAN-ID有效;1表示29位CAN-ID有效;
CAN-ID:
功能码;
在禁用/使能COB-ID时,我们只需使用SDO,将valid的第一位翻转即可。
在PCAN中,编辑如下报文:
报文含义即,向索引1800h01h处写入4字节数据80000182h,数据将valid位置1,禁用了该COB-ID。
点击该报文,单击空格发送,PCANReceive区域582h收到写成功响应,即成功禁用该COB-ID。
2清零映射个数
在PCAN中,编辑如下报文:
报文含义即,向索引1A00h00h处写入1字节数据00h,数据将映射个数置零。
点击该报文,单击空格发送,PCANReceive区域582h收到写成功响应,即成功清零映射个数。
3修改映射参数
在PCAN中,编辑如下报文:
报文含义即,向索引1A00h01h处读取数据。
点击该报文,单击空格发送,PCANReceive区域582h收到读成功响应,为4字节数据60000108h,即发送数据的索引值为6000h01h,长度为8位(1字节),结合设备的datasheet,可以了解到该处数据的含义,即模块0~7号输入口的输入情况:
现在我们改为在该TPDO发送8-15号输入口的输入情况,编辑如下报文:
报文含义即,向索引1A01h01h处写入4字节数据60000208h,映射参数改为映射至索引6000h02h处的8位数据,即8-15号输入口的输入情况。
点击该报文,单击空格发送,PCANReceive区域582h收到写成功响应,即成功写入。
再次读取该处数据,可观察到映射参数已经改变:
4填写映射个数
在PCAN中,编辑如下报文:
报文含义即,向索引1A00h00h处写入1字节数据01h,数据将映射个数置1。
点击该报文,单击空格发送,PCANReceive区域582h收到写成功响应,即成功将映射个数置1。
5使能COB-ID
在PCAN中,编辑如下报文:
报文含义即,向索引1800h01h处写入4字节数据80000182h,数据将valid位置0,使能了该COB-ID。
点击该报文,单击空格发送,PCANReceive区域582h收到写成功响应,即成功使能该COB-ID。
如此便完成了PDO映射参数的修改,当该设备节点通过该PDO发送数据时,发送的便是修改后的索引值处的数据内容。
3.5TPDO事件驱动循环传输测试
3.5.1PDO传输模式简介
上文简要介绍了PDO通信参数各部分的含义,其中就包含传输模式(TransmissionType)。
而关于TPDO传输模式的具体含义,CiA301中做出了如下的解释:
来源:
协议文档《CiA301》
其含义为,当该值处于:
00h:
非同步传输模式;
01h~F0h:
参照PDO通信参数下的同步起始值,收到(同步起始值×该值)数量的同步报文后,进行一次传输;
FCh:
同步传输模式(远程帧专用);
FDh:
事件触发传输模式(远程帧专用);
FEh:
事件触发传输模式(制造商特定事件);
FFh:
事件触发传输模式(设备子协议CiA401特定事件);即利用设备自身内部的定时器,定时发送报文。
表:
PDO的通信参数,来源:
《思泰操作手册L-1070e》
结合厂商的datasheet,该IO模块没有子索引06h,即同步设定值,因此只能进行事件触发的循环通信测试。
3.5.2操作步骤
执行TPDO事件驱动循环传输测试的操作步骤如下:
禁用该COB-ID→写传输模式、驱动时间→启用该COB-ID
使能/禁用COB-ID的操作与上文相同,在此不再赘述。
1写传输模式、驱动时间
在PCAN中,编辑如下报文:
报文含义即,向索引1800h02h处写入1字节数据FFh,将TPDO1的传输模式改变为事件触发模式;向索引1800h05h处写入2字节数据1000h,设定定时器触发时间为256ms,即每隔256ms传输一次报文。
使能该COB-ID后,即可观察到数据以256ms左右的间隔(存在抖动)源源不断地输送至182h处:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CANopen IO模块基本通信测试 IO 模块 基本 通信 测试
![提示](https://static.bdocx.com/images/bang_tan.gif)