思泰CANopen IO模块基本通信测试(三)

3.基本通信测试

3.1 NMT网络管理

3.1.1 NMT简介

NMT(Network management)网络管理是CANopen网络中的管理方式,主站通过NMT进行发号施令,保证整个网络的可靠性、可控性。因此每个CANopen从站节点都必须具备NMT惯例的相应代码,这是节点具备CANopen协议的最基本的要素。每个CANopen节点从上电开始有6种状态:

来源:《C AN open轻松入门》

每种状态的含义如下:

初始化(Initializing):节点上电后对功能部件包括 CAN 控制器进行初始化;

应用层复位(Application Reset):节点中的应用程序复位(开始),比如开关量输 出、模拟量输出的初始值

通讯复位(Communication reset):节点中的CANopen通讯复位(开始),从这个时 刻起,此节点就可以进行CANopen通讯了。

预操作状态(Pre-operational):节点的CANopen通讯处于操作就绪状态,此时此节 点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作;

操作状态(operational):节点收到NMT主机发来的启动命令后,CANopen通讯被 激活,PDO通信启动后,按照对象字典里面规定的规则进行传输,同样SDO也可以 对节点进行数据传输和参数修改;

停止状态(Stopped):节点收到NMT主机发来的停止命令后,节点的PDO通信被 停止,但SDO和NMT网络管理依然可以对节点进行操作。

其命令报文总结格式如下:

3.1.2 NMT命令改变IO模块运行状态

IO模块上电后,可以观察到Run指示灯处于闪烁状态,根据思泰提供的设备操作手册,可得知这是处在预操作状态的指示,参考的是CiA 303-3 V1.0子协议。

来源:《systec  CAN open  IO datasheet》

我们需要发送命令,将模块转换为操作状态后,才能进行下一步的测试操作。在PCAN-view中进行如下操作:

点击创建新消息的按钮后,弹出编辑传输消息的窗口,编辑发送内容后点击OK,即可创建报文,并在Transmit区域中可观察到该报文。其中一些参数含义如下:

  • Cycle Time:设定报文的传输周期,若为正数,软件会每隔设定好的周期发送该报文,实现周期传输;否则使用者可单击空格进行发送,实现单次传输;
  • Paused:若不勾选,且Cycle Time同时设定为正数,则点击OK后该报文立刻进入周期传输状态;
  • ID:功能号,填写内容决定了该条报文拥有何种功能;000指示该条报文为NMT命令报文;
  • Length:报文数据域长度,可选择0-8,单位为字节;NMT命令的数据域长度固定为2;
  • Data:报文数据域,根据功能号的不同,其含义也不同;NMT命令中,第0个字节表示命令指示,01h表示该NMT命令为将模块转换为运行状态;第1个字节表示目标模块节点ID号,00h表示该NMT命令为广播报文,所有节点均适用。

在Transmit区域点击该报文,单击空格键后,即可发送该报文:

同时也可观察到Receive区域接收到了一条回应报文,这是IO模块的回应报文,指示IO模块已经切换到操作状态,模块的Run指示灯也变成了常量状态。

3.2 PDO通信测试

3.2.1 PDO简介

PDO协议是CANopen中的一种单向传输方式,用于实时数据传输,其传输形式如下:PDO分为TPDO(发送PDO)和RPDO(接收PDO),一个CANopen站点可以从自身的TPDO发送数据到另一个站点相应的RPDO之中。

CiA 301子协议已经预定义TPDO和RPDO的CAN-ID,如下图所示:

PDO的CAN-ID定义, 来源:《C AN open轻松入门》

同时每个PDO在对象字典中,都有自己的通信参数描述其通信特性,举例如下图所示:

PDO的通信参数, 来源:《思泰操作手册 L-1070 e》

CiA 301子协议已经预定义每个PDO通信参数的对象字典索引值,上图所示的TPDO1通信参数的对象字典索引为1800h,子索引00h、01h、02h、03h、05h分别代表了不同的含义:

00h,Largest Subindex supported:最大支持的子索引个数;即1800h下有多少个子索引;

01h,COB-ID used by PDOPDO所使用的COB-IB;

02h,Transmission Type:传输类型,其值可选,详解在下文中进行;

03h,Inhibit Time生产禁止约束时间,单位:0.1ms;描述该PDO不可以在指定的一段时间内连续发送;

05h,Event timer事件定时器触发的时间,单位:ms;即计数器,每隔一定时间数值+1,与02h结合,可规定PDO循环发送的时间;

3.2.2 通信测试

创建一条新报文后如下编写报文,其含义为软件向从站的RPDO1发送一条8字节数据域为全1的报文,点击报文后,单击空格,即可进行PDO报文发送:

而由于PDO的单向传输特性,仅从此次PDO传输我们无法得知接受站点是否正确收到PDO数据,只能使用另外的手段(如SDO读取、观察相应IO的行为等)得知数据是否接收到位。

3.3 SDO通信测试

3.3.1 SDO简介

SDO协议是CANopen中的一种双向传输方式,用于非实时数据传输,如配置信息的读写。具体而言又可以分为快速SDO与普通SDO,其区别在于前者能在一次来回传输完所需的信息,后者则需要分段传输所需信息。因为实际应用时几乎用不到普通SDO,所以此处以快速SDO为例,进行操作的示例。

CANopen中规定了SDO传输报文的格式,按照格式填写报文信息,即可进行SDO通信,其部分报文格式总结如下:

SDO命令报文格式-1
SDO命令报文格式-2

3.3.2 通信测试

接下来我们进行SDO读取节点对象字典内容的操作,创建报文后,如下编写报文:

其中查找厂商提供的datasheet,可以得知节点的1000h索引处的内容为设备类型号码: 

点击报文,单击空格后,可以在Receive区域接收到返回的报文信息:

可以观察到582h处收到了一条信息为43 00 10 00 91 01 03 00的报文,比对报文格式,可知此次从1000h处读取并返回了4个字节的数据,且数据为00 03 01 91。

如此便完成了一次SDO读对象字典的操作,而有关SDO写对象字典的操作,将在下面几节中提到。

3.4 修改TPDO映射参数

3.4.1 PDO映射参数简介

前面我们简要介绍了PDO传输方式,并通过报文编辑器,实现了主站向从站发送了自己填写的数据。那么问题来了,当并非通过PCAN模拟主站PDO发送,或是从站向主站发送数据时,其报文数据域里携带的是什么数据?这就涉及到了PDO的映射参数。

映射参数与通信参数类似,都是PDO所持有的,描述其自身特性的东西。映射参数的内容,是PDO所发送数据的索引值,如下图所示:

PDO映射参数举例, 来源:《C AN open轻松入门》

类比C语言,笔者认为映射参数与二重指针的概念十分相似。即映射参数是一个二重指针,其内容(索引值)是一个一重指针(地址),指向了真正要传输的数据。

TPDO1映射参数, 来源:《思泰操作手册 L-1070 e》

映射参数的子索引00h,描述的是该映射参数下有效映射的个数,即余下子索引01h~08h有多少个指向的数据能够发送出去,如00h内的值为3,则01h~03h内索引指向的数据能够被该PDO发送,并且数据的排布顺序也是根据子索引的顺序排布。

同时,一条CAN报文的数据域总共只有8字节(64位),因此所有映射参数映射的内容,其总大小不能超过64位。

3.4.2 修改步骤

节点的PDO映射参数修改需要使用SDO写值到节点的对象字典当中,其修改步骤如下:

禁用该PDO的COB-ID→清零映射个数→写映射参数→填写映射个数→使能该COB-ID

我们仍以TPDO1为例,演示如何修改PDO的映射参数。

  • 禁用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中,编辑如下报文:

报文含义即,向索引1800h 01h处写入4字节数据80 00 01 82 h,数据将valid位置1,禁用了该COB-ID。点击该报文,单击空格发送,PCAN Receive区域582h收到写成功响应,即成功禁用该COB-ID。

  • 清零映射个数

在PCAN中,编辑如下报文:

报文含义即,向索引1A00h 00h处写入1字节数据00 h,数据将映射个数置零。点击该报文,单击空格发送,PCAN Receive区域582h收到写成功响应,即成功清零映射个数。

  • 修改映射参数

在PCAN中,编辑如下报文:

报文含义即,向索引1A00h 01h处读取数据。点击该报文,单击空格发送,PCAN Receive区域582h收到读成功响应,为4字节数据60 00 01 08 h,即发送数据的索引值为6000h 01h,长度为8位(1字节),结合设备的datasheet,可以了解到该处数据的含义,即模块0~7号输入口的输入情况:

现在我们改为在该TPDO发送8-15号输入口的输入情况,编辑如下报文:

报文含义即,向索引1A01h 01h处写入4字节数据60 00 02 08 h,映射参数改为映射至索引 6000h 02h处的8位数据,即8-15号输入口的输入情况。点击该报文,单击空格发送,PCAN Receive区域582h收到写成功响应,即成功写入。

再次读取该处数据,可观察到映射参数已经改变:

  • 填写映射个数

在PCAN中,编辑如下报文:

报文含义即,向索引1A00h 00h处写入1字节数据01 h,数据将映射个数置1。点击该报文,单击空格发送,PCAN Receive区域582h收到写成功响应,即成功将映射个数置1。

  • 使能COB-ID 

在PCAN中,编辑如下报文:

报文含义即,向索引1800h 01h处写入4字节数据80 00 01 82 h,数据将valid位置0,使能了该COB-ID。点击该报文,单击空格发送,PCAN Receive区域582h收到写成功响应,即成功使能该COB-ID。

如此便完成了PDO映射参数的修改,当该设备节点通过该PDO发送数据时,发送的便是修改后的索引值处的数据内容。

3.5 TPDO事件驱动循环传输测试

3.5.1 PDO传输模式简介

上文简要介绍了PDO通信参数各部分的含义,其中就包含传输模式(Transmission Type)。而关于TPDO传输模式的具体含义,CiA 301中做出了如下的解释:

来源:协议文档《CiA   301》

其含义为,当该值处于:

00 h:非同步传输模式;

01 h~F0 h:参照PDO通信参数下的同步起始值,收到(同步起始值×该值)数量的同步报文后,进行一次传输;

FC h:同步传输模式(远程帧专用);

FD h:事件触发传输模式(远程帧专用);

FE h:事件触发传输模式(制造商特定事件);

FF h:事件触发传输模式(设备子协议CiA 401特定事件);即利用设备自身内部的定时器,定时发送报文。

PDO的通信参数, 来源:《思泰操作手册 L-1070 e》

结合厂商的datasheet,该IO模块没有子索引06h,即同步设定值,因此只能进行事件触发的循环通信测试。

3.5.2操作步骤

执行TPDO事件驱动循环传输测试的操作步骤如下:

禁用该COB-ID→写传输模式、驱动时间→启用该COB-ID

使能/禁用COB-ID的操作与上文相同,在此不再赘述。

  • 写传输模式、驱动时间

在PCAN中,编辑如下报文:

报文含义即,向索引1800h 02h处写入1字节数据FF h,将TPDO1的传输模式改变为事件触发模式; 向索引1800h 05h处写入2字节数据10 00h,设定定时器触发时间为256ms,即每隔256ms传输一次报文。

使能该COB-ID后,即可观察到数据以256ms左右的间隔(存在抖动)源源不断地输送至182h处:

关于虹科: 

虹科是一家在工业自动化领域,特别是工业总线通讯行业经验超过10年的高科技公司。虹科工业通讯事业部与世界知名的工业通讯专家【PEAK-System,Hilscher,Kunbus,SYS TEC,Koenig-Pa,Port,Copa-data,TenAsys,SoC-e、RELYUM】等深度合作,提供业内顶尖水平的工业总线协议软硬件解决方案,协议类型包含【CAN、CANopen、EtherCAT、Profibus、Profinet、Ethernet/IP、TSN】等,产品类型包含代码、软件、芯片、板卡、模块等。虹科工业通讯以客户需求为导向,以技术能力为基础,为国内企业提供最适合的产品和最满意的服务。特别是在工业4.0的大环境下,虹科工业通讯与时俱进,推出了TSN(时间敏感网络)的解决方案,后者将在推动万物互联的潮流中扮演着如高速公路般的连接作用。

如果你想获取更多详细的技术资料请联系:[email protected]或者关注公众号(FieldBus-Hongke)

若需要更多帮助,欢迎联系我们

作者:虹科工业通讯---梁桦圳

排版:虹科工业通讯---黄怡

猜你喜欢

转载自blog.csdn.net/weixin_47677928/article/details/108276323