分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!https://www.cnblogs.com/captainbed
正文:
CANOpen最新全套教程:
1.CANOpen系列教程01_初识CAN与CANOpen及相关内容
2.CANOpen系列教程02_理解CAN总线协议
3.CANOpen系列教程03_CAN收发器功能、原理及作用
4.CANOpen系列教程04_CAN总线波特率、位时序、帧类型及格式说明
5.CANOpen系列教程05_CAN总线同步与位填充、优先级的决定
6.CANOpen系列教程06_结合代码理解CAN底层收发数据(含STM32例程)
7.CANOpen系列教程07_CANOpen协议概述
8.CANOpen系列教程08_CANOpen通信接口引导学习
9.CANOpen系列教程09_CANOpen对象字典
10.CANOpen系列教程10_关于Canfestival及对象字典生成工具环境搭建
11.CANOpen系列教程11_深度分析CanFestival_3架构
12.CANOpen系列教程12_对象字典编辑器操作说明
13.CANOpen系列教程13_协议源码移植(一)
14.CANOpen系列教程14_协议源码移植(二)
15.CANOpen系列教程15_NMT网络管理和相关源码说明
······
该系列教程已经在我的个人微信公众号 「strongerHuang」 整理并分享。因在这里分享文章,还需单独整理一遍,时间有限,就不再一一重复整理出来了。
想要查看更多相关教程,可以关注我的个人微信公众号「strongerHuang」,回复【CANOpen系列教程】即可查看。
申明:该文档由作者「strongerHuang」原创发布,仅供个人学习使用,转载请公众号联系作者授权。版权所有,禁止商用。
我之前学习CANOpen的时候,网上有用的资料极少,走了不少弯路。到目前为止,网上关于CANOpen的资料依然很少。所以,特地写下该系列教程,帮助初学者跨过这道坎。
从我个人学习CANOpen的经历来看,学会使用CANOpen难度其实不大。难点在于需要掌握的基础知识很多,而且许多都有关联性,容易把人绕晕。
那么,我希望通过结合之前我的学习经历,以及工作经验,站在小白的角度写下该系列教程。当然,该教程由我个人编辑并整理,难免有些废话,或者错误,还请谅解。
CAN:是Controller Area Network的缩写,即控制器局域网络,属于工业现场总线,是ISO国际标准化的串行通信协议。
从OSI(Open System Interconnection开放系统互联)7层网络模型的角度来看,CAN现场总线仅仅定义了第 1 层(物理层)和第 2 层(数据链路层)。
而在实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件或固件(Firmware),只要了解如何调用相关的接口和寄存器,即可完成对CAN的控制。
上面介绍的内容可能太官方,初学者可能看了之后还是不明白。简单的说:CAN总线就是一层硬件协议。比如:差分信号电平的定义、数据帧的定义等等。
PS:初学者可以结合UART来理解,比如UART串口发送一个字符’A’,它就是一种串行通信的方式。
CANopen是一种架构在CAN控制局域网上的高层软件通信协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线协议。
CANopen协议是在20世纪90年代末,由总部位于德国纽伦堡的 CiA 组织——CAN-in-Automation,在 CAL(CAN Application Layer)的基础上发展而来。
所以,关于CANOpen协议内容请参看:http://www.can-cia.org
由于CAN总线只定义了OSI中的物理层和数据链路层,因此对于不同的应用出现了不同的【应用层协议】,为了使不同厂商的产品能够相互兼容,世界范围内需要通用的CAN应用层通信协议。
在过去的二三十年中涌现出许多的协议,不过到现在为止能够广泛被承认的协议却不多,现在应用较广的CAN应用层协议主要有以下三种:
CANopen协议:主要应用在汽车、工业控制、自动化仪表等领域,目前由 CIA 负责管理和维护;
J1939协议:CAN总线在商用车领域占有绝大部分市场份额的应用层协议,由美国机动车工程师学会发起,现已在全球范围内得到广泛的应用;
DeviceNet协议:在美国等地占有相当大的市场份额,主要用于工业通信及控制和仪器仪表等领域。
而本文说的CANOpen也是目前应用较广的一种协议。简单的说,CANOpen就是CAN总线应用层协议。
PS:学习CANOpen应用层协议之前请务必先了解CAN总线协议。
CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以进行正常的通信。在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽干扰信号), CAN协议推荐用户使用屏蔽双绞线作为CAN总线的传输线。
CAN总线通信的优势和特点:
A.CAN总线上任意节点,均可在任意时刻主动的向其它节点发起通信,但在同一时刻优先级高的节点能获得总线的使用权。
B.标准CAN总线传输波特率可达到1Mbps。在5Kbps的通信波特率下最远传输距离可以达到 10Km,即使在1Mbps的波特率下也能传输40m的距离。
C.CAN总线定义使用了硬件报文滤波,可实现点对点及点对多点的通信方式,不需要软件来控制。
D.CAN总线所挂接的节点数量主要取决于CAN总线收发器或驱动器,目前的驱动器一般都可以使同一网络容量达到110个节点。
E.CAN总线通信介质可采用双绞线、同轴电缆或光纤,选择极为灵活。可大大节约组网成本。
当然,CAN总线的优势还有许多,当你掌握之后就会明白为什么CAN总线应用得如此广泛了。
CAN总线及CANOpen协议相关的内容相对比较多,如果每一个细节知识点都写出来,可能花掉我业余时间写一年也写不完。
我写该教程目的在于引导初学者入门,我会结合实例代码让大家边学边理解,至于实际项目编程应用不一定讲述的很多(这个看后面情况)。
首先从CAN底层讲起,再到CANOpen协议相关基础知识,最后实际应用。当然,中间每一个环节内容相对可能较多,也有可能会遗漏部分内容。
1.该文档部分文字来自周立功的相关教程,仅供个人学习使用,版权所有,禁止商用。
2.本文由我一个人编辑并整理,难免存在一些错误。
3.为了方便大家平时公交、地铁、外出办事也能用手机随时随地查看该教程,该教程同步更新于微信公众号 「strongerHuang」,关注微信公众号回复【CANOpen系列教程】即可查看全系列教程。
我的网站:www.strongerhuang.com
我的微信公众号(ID:strongerHuang)还在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩内容,如果想查看更多内容,可以关注我的微信公众号。