「操作演示」CANOpen通讯使用指南
qiyuwang 2025-04-08 17:52 5 浏览 0 评论
CANOpen有两种通讯方式:SDO和PDO。SDO通常由主站发送用于读取从站信息或配置从站PDO运行方式,从站接收到消息后需要应答,如下图所示。
PDO为生成者消费者模式,消息发出后不需要等待回复,一条消息可以有多个消费者。从站进入操作模式后会按照配置的通讯参数周期发送PDO消息或事件触发发送PDO。如果配置了SYNC功能,收到指定个数的同步帧后发送PDO。当然主站也可发送PDO消息。如下图所示:
拨动广成的CANOpen IO设备的拨码开关,将节点号设置为2,波特率设置为10k。如下图所示:
设备上电后会向主站先后发送两条帧ID为0x700+NOD_ID,数据为00(设备处于初始化状态)和7F(设备处于预操作状态)的消息,如下图所示:
此时设备处于预操作状态,在ECAN Tools选择CANOpen选项,点击添加从站ID为2。选择NMT功能选项,选择“start remoteb node”后点击NMT,如下图所示:
此时上位机会发送一条帧ID为000,数据为01(运行状态)02(节点2,如果广播则为00)的数据。此时节点2的IO设备会开始通过PDO(生产者消费者模式)发送帧ID为182,数据长度为2字节的消息,其两字节数据对应16个DI口,若DI有输入对应位置1。注意此功能为广成自定义,并非标准cia301协议。效果如下图所示:
当然使用CAN工具手动发送数据也是一样的效果,如下图所示:
阅读EDS文件可知索引2000h子索引01h可知设置其中的值可以改变TPDO1的inhibit time(禁止时间)。禁止时间的作用是设置PDO发送的最小间隔。这里使用手动发送SOD(一问一答模式)进行演示。
手动发送时将帧ID设置为602(600代表是SDO功能+节点号2),第一个数据2B代表写入两字节。注意后面的数据低字节在前,所以2000h索引写做0020h,写入的数据1FF写做01FF。发送后从站返回帧ID为582数据头为60的一条消息,代表刚才的写入成功。重新进入操作状态后,观察此时的从站发送的PDO数据的时间戳,变为了511us即1FF。但是要注意的是标准的cia301协议中,禁止时间的单位是100us。如何使用SDO读取和写入长度超过4字节的数据见详细文档。
想要配置DO口的输出状态需要从站在操作状态下,主站向从站发送帧ID为0X200+NOD_ID长度为2字节的PDO消息。如下图所示,发送数据为0F 00此时0-3DO口全部打开(低字节在前)。
由于广成的此产品PDO功能不全,接下来用举例子的方式解释如何使用SDO配置PDO功能。刚才说过2000索引01字索引中的数据可以改变DI数据的PDO发送最小间隔,现在假设这个数据是可以映射的。下图是各个TPDO和RPOD的COB-ID、通讯参数、映射参数的数值。
观察上图COB-ID,可知RPDO1被用来读取数据,配置DO口的输出状态,因为刚才就是使用主站控制发送帧ID为202的PDO数据来控制DO口状态的。现在我们使用从站的RPDO2来读取主站发送的的帧ID为302的TPDO数据,从而控制从站TPDO1数据(即DI口输入情况)的返回速率。
通讯对象的可配置参数如下图所示,注意RPDO和TPDO的通讯对象可配置的参数范围和意义不完全相同,详情见详细文档和cia301文档。
这里作为简单演示,我们只用修改1401索引01字索引中COB-ID数据,使用SDO的方法将其配置为302。其它子索引中的数据假设合理能正常通讯,其具体含义和作用见详细文档和cia301文档。映射对象1601索引中的数据构成很简单,1601索引00子索引中存放的值代表:除了00子索引外还有多少子索引,有多个子索引的00子索引中存放的值都是这个意义。
由于要修改的数据只有一处,且存放在2000索引01子索引数据为16位,所以只需要使用SDO向1601索引01子索引写入 0x20000110(最后的10代表存放16位数据,如果是08代表8位数据,20代表32位数据)即可,然后向1601 00索引写入01。如果要存入的数据有多个地址继续增加1601的子索引个数,并将00子索引的值改为对应个数即可。但是要注意所以映射索引存储的数据加起来不能超过8字节。
为了系统的稳定性,对通讯对象和映射对象进行修改时,要先使能对应PDO(01子索引最高位置1)和清空映射对象00子索引的值。
602 22 01 14 01 02 03 00 80 (将COB-ID设置为302并失能该PDO)
602 22 01 16 00 00 00 00 00 (情况映射对象个数数据)
602 22 01 16 01 10 01 00 20 (10 格式标识16位,01子索引2000索引)
602 22 01 16 00 01 00 00 00 (1个参数)
602 22 01 14 01 02 03 00 00 (使能PDO)
配置完成后使用上位机发送帧ID为302的PDO信息,从站就会将其存入RPDO2的映射索引2000 01中,从而改变发送DI状态的速率。
打开SYNC功能,主站会按照设置的时间周期性地发送帧ID为80没有数据的信号,该信号可触发从站发送PDO信息,由于此设备PDO功能不全无法演示,具体效果和配置方法见详细文档和cia301文档。
EMCY功能是当从站发送错误时返回的报文,也无法演示。
节点保护服务的原理是NMT主站可向相应的从站发送包含CAN-ID 700h +节点ID的RTR消息。随后从站必须发送消息进行响应;从站回复的消息结构如下。其中位7在每次传送时都会进行交替,从而能够确定消息是否丢失。在位6到0中输入从站当前的NMT状态。如下图所示:
从站等待主站发送RTR消息的时间为100Ch:00(守护时间)*100D:00(生存因素),配置完成后在上位机打开节点保护,效果如下图所示:
如果激活心跳,从站将自发循环地将其NMT状态发送至CAN总线。可通过将对象1017h:00h中的创建心跳时间设为非零值,从而激活该服务。如下图所示,将1017h:00h设置为不为0的数后从站周期性地返回心跳。
串口服务器_数传电台_4G DTU_遥控开关_LoRa/ZigBee/WiFi/蓝牙模块-成都亿佰特电子科技有限公司官网
相关推荐
- # 安装打开 ubuntu-22.04.3-LTS 报错 解决方案
-
#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...
- 利用阿里云镜像在ubuntu上安装Docker
-
简介:...
- 如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本
-
UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...
- Ubuntu 16.10内部代号确认为Yakkety Yak
-
在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...
- 如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)
-
在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
-
IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...
- 如何查看Linux的IP地址(如何查看Linux的ip地址)
-
本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...
- 怎么看电脑系统?(怎么看电脑系统配置)
-
要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...
- 如何查询 Linux 内核版本?这些命令一定要会!
-
Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...
- 深度剖析:Linux下查看系统版本与CPU架构
-
在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...
- 504 错误代码解析与应对策略(504错误咋解决)
-
在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...
- 猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录
-
10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...
- 域名解析的原理是什么?域名解析的流程是怎样的?
-
域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...
- Linux无法解析域名的解决办法(linux 不能解析域名)
-
如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。 此时,需要手动修改配置文件: /etc/resolv.conf 将域名解析服务器手动添加到配置文件中 该文件是DNS域名解...
- 域名劫持是什么?(域名劫持是什么)
-
域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- # 安装打开 ubuntu-22.04.3-LTS 报错 解决方案
- 利用阿里云镜像在ubuntu上安装Docker
- 如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本
- Ubuntu 16.10内部代号确认为Yakkety Yak
- 如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- 如何查看Linux的IP地址(如何查看Linux的ip地址)
- 怎么看电脑系统?(怎么看电脑系统配置)
- 如何查询 Linux 内核版本?这些命令一定要会!
- 深度剖析:Linux下查看系统版本与CPU架构
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)