基于多线程共享队列的RS485总线协议的实现

时间:2022-07-16 04:44:33

基于多线程共享队列的RS485总线协议的实现

【摘 要】RS485总线是一种多用于半双工通信方式的总线,在工业控制和数据采集中因其总线网络组建成本低廉,可靠性高,分布范围大等特点而得到广泛应用。本文介绍了在windows环境下进行轮循访问的总线协议,借鉴了windows应用程序的消息队列的模型,采用了多线程技术,对整个网络进行统一控制,可应用在实时性要求不是很高的工业控制和数据采集程序中。

【关键词】RS485;多线程;轮循访问;总线协

1 引言

RS485总线是由RS232总线发展而来,在工业控制和数据采集中得到广泛应用。然而RS485总线没有统一的通信协议,所以在开发时往往临时进行协议设计,这就导致了整个网络系统在稳定上存在或多或少的缺陷。

2 通信协议的总体模型

该通信协议以PC机(上位机)为整个RS485总线网络通信的控制中心,在一台上上位机多台下位机(可以是单片机或PLC等)以总线形式连接时,由于RS485总线网络为半双工通信方式,因此在同一时刻,总线上只能存在一台连接在总线上的设备信号,若多台设备同时发送信号,则总线上的信号会发生冲突,进而导致总线网络通信失败。为了避免这种情况的发生,我们采用了通过PC机(上位机)对多台下位机进行轮循询问的方式进行信息交换(其实这种针对性的轮循询问机制在RS485总线上进行的是一种数据帧广播,只不过下位机对于不是发给自己的数据帧不做响应而已)。

在PC机(上位机)对下位机进行轮循询问的时候,会向下位机发送询问消息或者是控制消息,下位机若有数据需要提交给上位机时,则会发送给上位机带有相应数据的数据帧,否则会回应给上位机一个应答消息表明已经收到数据然后下位机会去执行相应的控制程序。

我们定义出四种数据帧:

询问数据帧,它被用于上位机对下位机无控制信息进行常态询问时发送。

应答数据帧,它被用于下位机对上位机无数据传送进行常态应答时发送。

控制数据帧,它被用于上位机对下位机进行控制或者传送数据时发送。

上传数据帧,它被用于下位机给上位机发送数据时发送。

3 多线程和共享队列

在windows环境下,每一个应用程序运行起来都会产生一个相应的进程,在每一个进程中至少包含一个线程,被称之为主线程,其余的通过主线程创建的线程和主线程一起被称之为该进程的多个线程,一个进程的多个线程能够共享该进程的地址空间和内核对象,因此线程运行时所需的资源比进程要少得多,而且多个线程能够在多核CPU的硬件环境下真正实现多任务的并发运行,能够大幅度的提高程序执行效率,因此在实现上述RS485总线通信协议的时候,我们通过VC++的WinMain函数建立主线程并创建一个有主线程和子线程共享的队列,主线程主要用来监听来自Microsoft Communications Control version 6.0绑定的COM端口的事件,创建子线程和向共享队列中添加要发送的数据帧等功能。

4 结束语

本协议应用在实时性要求不高的数据采集环境和工业控制环境中,能够简化网络设计,减少企业开发的成本的投入。

参考文献:

[1]金为民. VC下利用串口进行数据通讯的研究[J]. 计算机工程与设计,2003,24(12).

[2]张克涵,张呼和,顾李冯.VC ++ 环境下的电机状态监测软件设计[J]. 测控技术,2012,31(2).

[3]骆斌,费翔林. 多线程技术的研究与应用[J]. 计算机学报,2000,4.

[4]周桃,宗竹林,赵磊. 一种PON结构航电总线协议的建模与仿真[J].计算机工程与应用,2011,47(29).

[5]曾自强,王玉菡.用VC++实现单片机与PC机串口通信的三种方法[J].自动化与仪器仪表,2005,3.

作者简介:

李靖(1981-8-23),女,河北省邢台人,硕士研究生,主要研究领域为信息技术应用。

唐山市科技局科技项目,项目编号:13130231z

上一篇:MIMO技术在4G中的运用 下一篇:浅谈沥青混凝土路面常见病害及防治措施