微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > DeviceNet总线应用层协议的实现

DeviceNet总线应用层协议的实现

时间:05-09 来源:互联网 点击:

象的编程方法来编制协议原代码。

  在面向对象编程中,除了定义对象的属性及行为以外,还要构造事件驱动的机制。这里指的事件驱动的机制包括事件的产生,事件队列的实现,事件处理优先级的规定,以及事件的处理等。在一般的面向对象的高级编程中,主要是完成事件的处理,其它的与事件相关的事情都是由操作系统来完成,对编程者来说是透明的,而在此相关事情则必须编程实现。面向对象的程序实现框架使各个对象之间的联系体现的十分明确,对象之间的关联都是与事件的触发紧密相关,整个程序结构非常清晰。

  协议实现的软件主体结构,整个软件的编制工作都是围绕着“事件”而展开的。“事件”是由外部中断或程序内部产生,在实际程序中用事件变量来实现事件队列,它是一个无符号的整型变量,每个特定位代表某个具体的事件。

  在程序的开始是对DeviceNet协议中的对象的定义,C51编译器不支持“类”,因此用“结构”类型来定义对象。在完成对CAN控制器和单片机芯片的初始化工作以后,主程序进入事件处理的无限循环。为了能够及时响应高优先级事件,在每完成一次事件的处理以后,都要执“e=global_event”语句,刷新事件中间变量e。事件的优先级在定义事件的时候就已经确定了,低数据位事件具有高的优先级,如第一个数据位表示IO轮讯请求事件,它就具有最高的优先级,其他事件的优先级随着在global_event中所被代表的数据位的上升而降低。高优先级的事件的响应较低优先级的事件为先,程序中“(eIO_POLL_REQUEST)!(e(IO_POLL_REQUEST-1))”语句是判定待执行的事件是否是事件队列中具有最高优先级的事件。在进入事件处理程序部分以后,首先清除事件队列中的此事件,以表明此事件已得到响应,然后再进行相应的程序执行。

4 结束语

  DeviceNet的面向对象的协议描述能够清晰地阐明协议各模块之间的数据处理关系,此特点在实现中充分地体现出来;而且对象化的程序实现使得程序代码可以很方便的重复使用,在开发不同的设备时,原先的设备原代码大部分可以得到再利用,这样可以缩短产品开发的时间,同时也利于在实际应用中的推广。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top