3.2.3 SDO的设计
服务数据对象 SDO报文,用来对 canopen网络上的设备进行参数配置。 SDO通过使用主索引和子索引,访问设备对象字典中的对象。访问者作为客户端发送请求,被访问者作为服务器提供所请求的服务。一般客户端为主站,服务器为从站。
在本系统中,中央电子控制单元为 SDO客户端,包含 4个 SDO访问其余 4个控制单元,其余 4个电子控制单元为 SDO服务器,各自包含 1个 SDO。SDO客户端由对象字典中 1280h~ 12FFh定义, SDO服务器由对象字典中 1200h~127Fh定义。
中央电子控制单元访问左前门电子控制单元对象字典通信过程,如图 5所示,中央电子控制单元根据自己的要求生成 SDO请求报文,并发送到 can总线上。 SDO请求报文包括 ID和数据,ID由其对象字典条目主索引 1280h子索引 01h定义,由 600h+Node_ID构成,这里 Node_ID为左前门电子控制单元的 Node_ID。请求报文数据表示 SDO的请求任务。左前门电子控制单元接收收到该 SDO请求,解析报文并完成请求任务,返回给中央电子控制单元一个 SDO响应报文。同样, SDO响应报文包括 ID和数据,ID由其对象字典条目主索引 1200h子索引 02h定义,由 580h+Node_ID构成,这里 Node_ID为服务器,即左前门电子控制单元的 Node_ ID。响应报文数据用来表示 SDO请求的执行情况。
图 5 SDO访问的左前门电子控制单元对象字典
3.2.4 特殊功能对象的设计
特殊功能对象包括:同步 (SYNC),时间戳 (Time Stamp),紧急事件(Emergency),节点/寿命保护(Node/Life guarding)。其中,SYNC用来进行同步;Time Stamp用来在网络中传送标准时间;EMCY用来传送紧急错误等应急信息,节点 /寿命保护用来维护节点状态。本文设计的系统采用缺省设置。
4
车身控制系统 canopen协议的仿真
由于汽车总线系统的复杂性,开发流程通常采用 V型图,主要包括网络定义、仿真验证、代码实现、测试分析和标定等阶段。在系统流程中,尽可能早地进行全面的仿真验证工作,可减少因为太晚发现错误而带来的风险。本文采用德国 Vector Informatik开发的 CANoe、CANeds、ProCANOpen软件进行车身控制系统 CANOpen协议的建模仿真。 CANoe是一个网络集成开发环境,具有网络仿真、监测和分析的功能,其组件 CANoe.CANOpen在开发、规划及测试 CANOpen设备和网络系统方面提供了有效的帮助 [6]。CANeds软件用来创建、编辑和保存 CANOpen对象字典,Panel Editor软件用来编辑控制面板。CAPL Browser软件用来编辑 CAPL程序。
- 对象字典的建立
- 每个 CANOpen节点都必须实现自己的对象字典,为了描述节点的对象字典,CANOpen定义了统一的对象字典的存储方式电子数据列表 (Electronic Data Sheets, EDS)。使用 CANeds软件为每个节点创建 EDS文件,其中包括 PDO通信参数区、映射参数区和对象数据区的定义等。
- 对象字典的参数配置
- 采用 ProCANOpen软件配置网络节点的对象字典。首先设计 CANOpen网络节点,然后为每个节点导入由 CANeds生成对应的 EDS文件,并对各节点对象字典的内容进行设置,包括 NMT定义、节点保护设置、 PDO报文通信关系配置、SDO属性设置等,最后运行生成 CANoe配置文件,包括数据库、控制面板、节点 CAPL程序等。
- 车身控制的 CAPL程序设计
运行 CANoe软件,导入由 ProCANOpen生成的数据库及控制面板,就可以仿真一个功能简单、只有输入输出的 CANOpen通信网络。但对于一个实际的嵌入式控制系统来说,除了基本的输入 /输出,还有特定的控制算法。这就必须通过 CAPL语言实现这些算法。 CAPL语言是一种类 C语言,在 CANoe中,对每一个节点可以通过 CAPL编程模拟中央电子控制单元报文分析与处理过程以及各车门电子控制单元的操作,如车窗升降、门锁开关、后视镜控制等。
以控制右后车窗下降为例说明 CAPL程序的编辑。首先左前门电子控制单元 (LFD_ECU)检测到控制按键信息,发送按键控制 PDO报文给中央电子控制单元(CC_ECU),中央电子控制单元接收按键控制 PDO报文,分析后发送控制命令 PDO报文给右后门电子控制单元(RBD_ECU)。右后门电子控制单元接收到控制命令后调用车窗下降函数执行相应操作。其程序如下:
仿真节点 LFD_ECU:
on envVar evN10_7004_2
{
putValue(evN10_7001_2,a); //检测到右后车窗下降按钮信息后 //改变车窗按钮控制 TPDO1相应的应用对象
}
仿真节点 CC_ECU:
on message N10_TPDO1
{ int a;
a=getValue(evN1_7101_2);
putValue(evN1_7001_2,a); //接收命令并改变右后门电子控制 //单元控制命令 TPDO4的相应应用对象
}
仿真节点 RBD_ECU
on message N1_TPDO4
{ int a;
a=getValue (evN11_7101_2);
SignalWindowDown(a); //调用车窗下降函数
putValue(evN13_7001_2,evN13_7101_2); //改变右后门电子
//控制单元状态信息 TPDO1的相应应用对象 }
4.4 控制面板的定制设计
为了使控制面板更加直观形象,需采用 CANoe中的 Panel Editor软件编辑控制面板。设计的控制面板如图 6所示,分为控制区和显示区两大部分。控制区包括各电子控制单元的车窗按键、门锁按键、后视镜控制按键。显示区包括车窗、门锁显示。