用于DSP/BIOS的MODBUS消息帧接收方法与流程

文档序号:11959898阅读:808来源:国知局
用于DSP/BIOS的MODBUS消息帧接收方法与流程

本发明涉及MODBUS消息帧接收方法,具体涉及一种用于DSP/BIOS的MODBUS消息帧接收方法。



背景技术:

Modbus是由Modicon在1979年发明的全球第一个真正用于工业现场的总线协议,已经成为工业领域通信协议标准,也得到广泛应用。确定通讯线路的空闲时间并由此准确区分两消息帧,一直是MODBUS通讯过程必须解决的重要问题。现有技术中,微处理器和MODBUS设备的通讯全都采用定时器中断的方法来实现,即令定时器定时值等于消息帧帧间时间间距,在每次进入SCI中断程序时重置定时器的当前计时值,当进入定时器中断程序时,就说明当前消息帧已完成传输,此技术可见于《煤矿机械》2013年发表的《基于STM32F103和MODBUS的矿用DTU测试系统设计》、王谛的《基于MODBUS协议的PC机与dsPIC6014处理器的通讯》、《实验室研究与探索》2012年发表的《基于Modbus协议的S7-200系列PLC与单片机主从通信研究》等。这种方法虽然简单并容易实现,但占用了微处理器宝贵的定时器资源,使其硬件资源得不到有效利用,也提高了自动控制系统对微处理器的外设资源需求。



技术实现要素:

为了解决上述现有的MODBUS通讯技术占用微处理器定时器资源的问题,本发明提供了一种用于DSP/BIOS的MODBUS消息帧接收方法。

为实现上述目的,本发明采用下述技术方法:

一种用于DSP/BIOS的MODBUS消息帧接收方法,基于DSP/BIOS软件平台实现,包括消息帧接收流程和消息帧处理流程,所述消息帧接收流程选择SCI硬件中断线程实现,所述消息帧处理流程选择周期软中断线程实现。

进一步地,所述的SCI硬件中断线程具体运行过程为:

(1)串口接收到1字符数据后进入SCI硬件中断线程;

(2)重置消息帧处理周期软中断线程计时时钟;

(3)读取接收到的数据,并保存到接收帧数组中当前成员号值指向的成员;

(4)接收帧数组当前成员号加1;

(5)从SCI硬件中断线程返回;

进一步地,消息帧处理周期软中断线程计时时钟由系统时钟驱动。

进一步地,消息帧处理周期软中断线程时钟周期为传输3.5字符数据所需的时间。

进一步地,消息帧处理周期软中断线程采用单次运行模式。

进一步地,所述的消息帧处理周期软中断线程具体运行过程为:

(1)消息帧处理周期软中断线程计时时钟值等于设定的时钟周期时进入运行;

(2)接收帧数组当前成员号清零;

(3)数据处理;

(4)发送应答消息帧;

(5)从消息帧处理周期软中断线程返回。

与现有技术相比,本发明采用系统时钟取代现有技术中以定时器确定字符间隔时间并准确区分两消息帧的方法,可有效节省微处理器的硬件资源,降低自动化控制系统对微处理器的外设资源需求。

附图说明

图1为本发明实施例的消息帧接收流程图;

图2为本发明实施例的消息帧处理流程图;

图3为具体实施方式中TMS320F28335型DSP与MODBUS设备的连接图。

具体实施方式

下面结合附图和实例对本发明进一步说明。

如图1和图2所示,一种用于DSP/BIOS的MODBUS消息帧接收方法,基于DSP/BIOS软件平台实现,包括消息帧接收流程和消息帧处理流程,所述消息帧接收流程选择SCI硬件中断线程实现,所述消息帧处理流程选择周期软中断线程实现。

具体而言,所述的SCI硬件中断线程具体运行过程为:

(1)串口接收到1字符数据后进入SCI硬件中断线程;

(2)重置消息帧处理周期软中断线程计时时钟;

(3)读取接收到的数据,并保存到接收帧数组中当前成员号值指向的成员;

(4)接收帧数组当前成员号加1;

(5)从SCI硬件中断线程返回。

具体而言,消息帧处理周期软中断线程计时时钟由系统时钟驱动。

具体而言,消息帧处理周期软中断线程时钟周期为传输3.5字符数据所需的时间。

具体而言,消息帧处理周期软中断线程采用单次运行模式。

具体而言,所述的消息帧处理周期软中断线程具体运行过程为:

(1)消息帧处理周期软中断线程计时时钟值等于设定的时钟周期时进入运行;

(2)接收帧数组当前成员号清零;

(3)数据处理;

(4)发送应答消息帧;

(5)从消息帧处理周期软中断线程返回。

DSP是数字信号处理器的简称,本实例选用TI公司生产的C2000系列、型号为TMS320F28335的DSP处理器,TMS320F28335与MODBUS设备通过RS232连接(见图3),波特率选用9600b/s,通讯模式采用MODBUS RTU,数据传输格式为1bit起始位、8bit数据位、1bit停止位、无校验位。

DSP/BIOS是TI公司特别为其TMS320C6000TM,TMS320C5000TM和TMS320C28xTM系列DSP平台所设计开发的一个尺寸可裁剪的实时多任务操作系统内核。DSP支持四种不同优先级的线程,按照优先级从高到低顺序排列,分别是硬件中断(HWI)、软件中断(SWI)、任务(TSK)和后台线程(IDL)。周期函数(PRD)是一种特殊的软件中断,当其计时时钟等于设定的时钟周期值时进入就绪状态,其实例主要配置参数有:

(1)period:周期函数时钟周期值,周期函数当前时钟计时值达到设定的时钟周期值时进入就绪状态,计时时钟可由系统时钟驱动,或调用PRD_tick函数后加1;

(2)mode:周期函数运行模式,有连续运行(continuous)和单次触发(one-shot)两种。

本发明主要使用到的API函数及其功能如下:

(1)PRD_start:用于启动一个周期函数的计时时钟,该周期函数在启动并等待设定的时钟周期后进入运行。如果在周期函数当前时钟计时值达到设定的时钟周期值前再次调用PRD_start,当前时钟计数值从零重新开始计时。

在TMS320F28335的DSP/BIOS程序中,将消息帧接收流程创建为SCI硬件中断线程,消息帧处理流程创建为周期软中断线程。其中本发明的实现需要设置消息帧处理线程为单次触发模式,且其时钟周期值(period)设置为MODBUS通讯中两消息帧或数据包之间的最小时间间隔,即3.5字符数据传输时间,其计时时钟由系统时钟驱动。在波特率为9600b/s、传输格式为10bit,消息帧处理周期软中断线程时钟周期值如下:

<mrow> <mfrac> <mrow> <mn>3.5</mn> <mo>&times;</mo> <mn>10</mn> </mrow> <mn>9600</mn> </mfrac> <mo>&times;</mo> <mn>1000</mn> <mo>&ap;</mo> <mn>3.7</mn> <mi>m</mi> <mi>s</mi> <mo>,</mo> </mrow>

当串口接收到MODBUS设备传输的1字符数据时,DSP/BIOS程序进入消息帧接收线程。在该线程中,首先调用PRD_start函数启动消息帧处理PRD线程的计时时钟,然后从SCI接收寄存器中读取数据并保存到接收帧数组,在令接收帧数组当前成员号加1后返回。在同一个数据包的传输过程中,DSP/BIOS程序不断重复以上过程。由于一个数据包中两字符数据传输间隔小于消息帧处理周期软中断线程的时钟周期值,并且每次进入SCI硬件中断线程时调用PRD_start复位消息帧处理周期软中断线程的当前计时时钟值,因此DSP/BIOS程序不会进入消息帧处理周期软中断线程。而当前消息帧传输完毕后,通讯线空闲时间大于消息帧处理周期软中断线程的时钟周期值,该线程在当前计时时钟达到时钟周期值后进入运行。

消息帧处理周期软中断线程负责处理接收到的消息帧。首先重置接收帧数组当前成员号,以接收下一消息帧。然后对消息帧进行处理,如CRC校验、提取消息帧数据域中的有效数据等。若TMS320F28335为MODBUS从机,根据对有效数据的解释发送相应的应答消息帧后从该线程返回;若为MODBUS主机,则直接返回。

本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1