@标题:探讨用於工业马达控制的CANopen 协定
@文:Atul Kumar
@关键字:马达控制、CANopen、NMT、SDO、通讯协定
强韧的通讯协定与介面在工业马达控制应用中扮演关键角色,这方面需要多个处理器组件持续进行通讯以完成各种复杂任务,而CANopen具备易於整合和高度可设定性,还提供高效率且可靠的即时资料交换机制,本文将从低功耗马达控制应用的层面切入深入探讨CANopen。
由博世(Robert Bosch Gmbh)公司在1983年开发出的控制器区域网路(CAN)是一种高度强韧的通讯协定与介面。其设计宗旨是解决像是RS232此类传统串列通讯网路的种种限制,以往一直面临的关卡,是无法在多个控制器之间执行即时通讯。当时汽车产业率先采纳CAN,因为汽车需要在多个感测器之间进行持续与同步的资料传输。CAN允许多个节点使用小讯息量相互通讯,因此使其适合用在各种汽车应用。
通过实际应用验证且具备诸多利益的CAN,历经长久发展至今已广获众多产业采纳。然而由於存在专利程式开发的规范,因此想要将不同厂商的多个元件透过CAN协定整合到一个系统中,不仅在实务上困难重重,有时甚至完全无法达成。为了克服这项限制,CAN in Automation(CiA)组织的各国使用者和多个制造业协会着手发展一个名为CANopen的高层次通讯协定。
在以下章节中,将探讨CANopen协定架构,以及其在控制多轴马达趋动器方面的各种应用,文中将深入阐述这个高阶层通讯协定,以及其对马达与马达控制领域的影响。藉由分析ADI Trinamic TMCM-6212多轴马达控制器/驱动器模组与QSH4218-35-10-027步进马达的即时通讯日志,将为读者提供CANopen协定的详尽说明,并专注探讨网路管理(NMT)状态,以及从属端-伺服端架构的CANopen协定。此外,文中将透过多个案例研究展示如何解译通讯日志,以及判断驱动器的状态。
CANopen架构
本章节解说CANopen协定的各种应用原则,其中包括NMT与SDO(服务资料物件)
网路管理
NMT 是CANopen的关键通讯原则,每个CANopen相容装置都必须遵循这个原则,其以状态机的方式运作,在协调CANopen架构中各种应用方面扮演重要的角色。
网路管理状态机架构
NMT状态机如图一所示,包含3个状态:发起状态、预运行状态及运行状态。
从属端节点扮演枢纽角色,负责监视相关伺服端节点在各个运行状态下的通讯状态。此方面是透过NMT机制来执行。心跳与节点保护这两种方法论,让从属端节点能评估伺服端节点的通讯完整性。
在TMCM-6212的例子中,则是运用技巧来检验通讯的结果。每个节点经过使用者设定的周期时间间隔後就会发出一个心跳讯号,长度为毫秒等级,使用的物件为1017h。这种作法可确保所有节点都处於活跃与运行中的状况可立即进行通讯。
表一:NMT通讯中的状态组态
|
发起
|
预运行
|
运行
|
停止
|
启动
|
•
|
|
|
|
SDO
|
|
•
|
•
|
|
紧急
|
|
•
|
•
|
|
同步/时间
|
|
•
|
•
|
|
心跳/节点保护
|
|
•
|
•
|
•
|
PDO (程序资料物件)
|
|
|
•
|
|
表一显示在不同通讯状态中所有用到的通讯物件的组合。当装置在启动电源或重置後进入发起状态,它会产生一个启动讯息。接着装置会转换到预运行状态,准备就绪进行要执行的作业。
在预运行状态中,网路中所有节点都能传送和SDO有关的物件、心跳/节点保护、紧急、以及时间/同步等讯息。除了预运行状态中所有可用的物件,也可对应PDO物件。最後,在停止状态中,装置会关掉所有SDO与PDO物件的通讯,并仅允许执行NMT命令。
服务资料物件: SDO 通讯协定主要用在NMT状态机的预运行状态。它在从属端-伺服端的组态中运行,在此种组态中从属端可存取所有连结伺服端(节点)物件字典中的物件。在这个协定中,从属端永远会与伺服端发起读取/写入交易,而伺服端则会告知传输任务已经完成。此种程序确保SDO中的每次交易都会发出确认讯息。
图二显示在多节点网路中SDO协定的从属端-伺服端组态。每个节点都会被指派一个通道,透过这个通道就可以和从属端进行通讯。在这个案例中,Trinamic TMCM-6212六轴步进马达驱动器/控制器作为伺服端,而连结的PC则作为从属端,在这个案例中是和指定节点亦即NODE-1发起读取/写入交易。虽然所有节点都会收到SDO从属端讯息,但只有目标节点会做出回应,其他伺服端则会忽视从属端的请求。
服务资料物件Datagram
图二显示SDO Datagram的完整结构。SDO表头包含COB-ID(连结物件ID),这个独一无二的数字指派给特定任务,像是读取与写入功能。因此,SDO通讯需要两个COB-ID。第一个COB-ID代表 NODE-ID+ 功能代码,用於从属端的上传/下载要求,亦即600h + NODE-ID。第二个COB-ID,580h+ NODE-ID,则是用於伺服端的要求
SDO讯息的第一个位元组,亦即指定符,在判断讯息性质方面扮演关键的角色。它不仅指明了从属端是否有意要写入(下载)或读取(上传)资料,也会透过中止讯息反映出传输过程中的任何错误。指定符位元组分成8个位元,如图三所示。
其中3个位元(7-5)为从属端命令指定符(CCS),其中提供有关讯息性质的关键资讯。从属端命令指定符依据从属端的作业会有不同的组态,像是读取、写入、分段/快速传输、或是交易中错误。在伺服端的回应方面,指定符的3个位元(SCS 伺服端命令指定符)指明了传输的成功状态。
表二列出CCS与SCS位元对於不同作业的各种组合。指定符Datagram中的Bit 4是切换位元,用在超过4个位元组的资料传输。Bits 3-2 不含任何资料,而且只有在bits 0-1设定後才会有效。Bit 1指明了透过SDO通道传输讯息的种类,指明其属於分段或是快速传输。如图三所示,在SDO Datagram中,最後4个位元组指明了需要被传输的资料。如果资料超过4位元组,系统就会以分段的方式进行传输。
另一种状况是,如果SDODatagram含有完整的资料,系统就会考量采用快速传输。因此,如果bit 1处於高位(high),就指明是快速传输,而低位(low)位元则指明是分段传输。在分段传输中,资料会透过多个封包进行传输。伺服端在回应从属端发起的读取/写入要求时,会提供资料栏位中的资料大小,然後第4位元(切换位元)会开始将每个资料封包切换传输至从属端。最後,如果指定符Datagram中的bit 0已经设定,它会指明bit 3至2的资料大小,如先前所述。
表二 CCS 与SCS 组态
作业
|
从属端要求(CCS)
|
伺服端回应 (SCS)
|
SDO 下载
|
1
|
3
|
SDO 上传
|
2
|
2
|
SDO 下载分段
|
0
|
1
|
SDO 上传分段
|
3
|
0
|
SDODatagram中的Bytes 2至3与4,分别对应到索引与子索引位元组,如图三所示。这些位元组用来存取装置物件字典中所有可用的物件。物件字典含有所有装置叁数,让使用者能根据即时应用的需求来设定装置的功能。这种装置分析的概念为装置带来标准化的行为,它们会以控制驱动器或一个I/O元件的方式来控制装置。SDODatagram的最後4个位元组指明了需要经过SDO层进行传输的资料,如先前所发展。
在发生错误时,SDO传输就会中止,要查明传输中止的原因,可查看目标装置手册所列的错误码说明。在这个例子中,CCS位元值为4,索引与子索引指明了装置在传输过程中受影响的各项叁数,而最後4位元组则是错误代码。
即时通讯分析
本节阐述SDODatagram,这里使用即时通讯日志视窗介面,而机器此时处在预运行状态。ADI Trinamic TMCM-6212 六路步进马达驱动器/控制器搭配QSH4218-35-10-027 [5]步进马达。
在这个设定中,马达的最大电流(Object 2003h) 设为200。这里对从属端与伺服端之间的上传与下载交易作进一步的解说,使用的是目标设定的软体介面中,在日志视窗中标上亮光颜色的讯息,如图四所示。
【案例1】从属端与伺服端之间的下载作业
从属端发起: 0x601: 2f 03 20 c8 00 00 00(图五)
伺服端的回应 : 0x581: 60 03 20 00 00 00 00(图六)
在图六所示的作业中,CCS与SCS位元的组合显示了从属端的成功写入以及伺服端的回应,如表二所示。
【案例2】从属端与伺服端之间的上传作业
由从属端发起: 0x601: 40 03 20 00 00 00 00(图七).
伺服端的回应 : 0x581: 4f 03 20 00 c8 00 00 00(图八)
总结
CCS结合SCS位元就指示了从属端与之间成功完成上传作业。本文的例子亦可套用在装置的物件字典,提供反映机器状态的分析讯息。
此项展示的主要目的是让使用者能解读通讯日志的内容,以及监视驱动器的状态。使用者可即时排除各种错误,以及更有效率地探索ADI Trinamic CANopen的先进功能。将CANopen协定整合到ADI的产品,让客户有充裕的弹性整合自己的PLC与ADI Trinamic模组,促成多厂商系统的发展。对於工作涉及实验室自动化、机器人、液体处理、半导体处理等复杂应用的客户而言,此项介面特别宝贵。CANopen系列後续专文将深入分析程序资料物件(PDO) CANopen协定,以及探索TMCM-6212在马达控制应用方面更多先进功能。
(本文作者Atul Kumar为ADI 应用工程师)