当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于嵌入式Linux的无纸记录仪通信设计

引言

  在工业自动化控制系统中,记录仪起着十分重要的作用,它可以实时采集、监测和记录一些影响工艺过程和产品质量的重要参数,被广泛应用于石化、冶金、电力、机械、医药、轻工业等行业。随着电子技术的不断发展,记录仪已从传统的有纸模拟式发展到如今的无纸数字式[1]。与传统的有纸记录仪相比,无纸记录仪无机械磨损、显示直观、使用方便、故障率低和设备耗材少,因此被越来越多的应用于工业控制领域。

  随着工业过程自动化的高速发展,企业对无纸记录仪提出了越来越高的要求,基于8位单片机的无纸记录仪的功能已远远达不到用户的要求。嵌入式ARM微处理核的32位RISC处理器以其强大的性能丰富的接口以及优异的性价比等诸多优势,而被越来越多的应用于无纸记录仪,随着硬件的改进,传统的串行通讯方法也迫切需要改进,因此本文提出了基于嵌入式Linux的串口通信方案。嵌入式Linux操作系统是在标准Linux的基础上针对嵌入式系统进行内核裁剪和优化后形成[2],它继承了Linux的开放源代码、多任务、稳定性高,内核可裁剪等诸多优点,其内核精简而高效,具有非常好的网络性能。本文将使用嵌入式Linux作为无纸记录仪上位机操作系统,并利用其多线程编程技术实现上位机与下位机的串口通信。

  1 记录仪中的通信协议

  由于无纸记录仪主要在过程控制现场或监控室中使用,与之进行通信的现场设备接口以串口居多,因此在该装置的开发过程中采用十分通用的MODBUS协议作为串口通信协议。MODBUS协议是MODICON公司于1979年为建立智能设备间的主从式通信而开发的一种通信协议,它规定在一个系统中,每次命令应由系统中主设备发起,从设备通过解析地址位决定是否应答[3]。该协议具有两种报文传送帧格式,ASCII和RTU报文帧格式,分别如图1和图2所示。

图1  ASCII报文帧格式

图2  RTU报文帧格式

  将两种报文传送帧格式异同总结如表1。由表1可知,两种报文帧格式各有优劣:ASCII格式使用的字符是RTU格式的两倍,但ASCII格式数据的译码和处理更为容易一些;使用RTU报文帧格式传输数据时,报文字符必须以连续数据流的形式传送,而使用ASCII格式,字符之间允许长达1s的时间间隔。

表1 ASCII与RTU报文帧格式比较

  通常情况下,在一个MODBUS网络中只采用一种报文帧格式进行数据交换。但在一些特殊情况下,同一系统中需要用到不同传输模式的控制器,即同时采用两种报文帧传输格式。为了使无纸记录仪具有更强的通用性,本文提出了一种新的可同时使用两种报文帧格式的串口通信方案。在以下阐述过程中, 以ASCII和RTU报文帧格式传输的数据将分别简称为ASCII和RTU数据。

  2 记录仪的通信实现

  2.1 整体设计

  无纸记录仪主要通信对象为工业现场设备,因此通信过程中数据交换应快速、准确无误。在MODBUS协议中,ASCII与RTU数据打包与解码均不相同,数据读写方面需要独立起来。串口通信功能框架如图3所示。

图3 串口通信功能框架图

  设备注册扫描模块主要负责设备地址表的维护,每间隔一定时间扫描在线设备,并记录下设备地址和使用的报文帧格式,同时根据扫描得到信息动态开辟ASCII和RTU数据缓存区。ASCII数据读写模块负责打包和解码ASCII数据,RTU数据读写模块负责打包和解码RTU数据。数据发送模块根据优先级排列好打包好的数据依次发送。数据接收模块仅解码下位机仪表每次传回数据的首位,判断是RTU数据还是ASCII数据,存入RTU或ASCII数据缓存区,以待处理。

  为了实现ASCII与RTU数据的共存,首要问题是每次设备扫描注册时对使用ASCII和使用RTU数据的设备加以区分。由ASCII和RTU的报文帧格式可知,传输数据首位是判断数据类型的关键,所以使用RTU报文帧格式的设备地址需避开ASCII数据的起始位和结束符。在未知在线设备情况下,上位机将所有设备地址轮询一遍,解析接收数据首位,如果是ASCII的起始位,则ASCII设备注册,反之,则RTU设备注册。

  2.2 编程实现

  软件实现上,采用Linux的多线程编程技术,可以更好的满足工业现场的实时性要求。多线程程序采用多任务、并发的工作方式[4],可以提高应用程序响应时间并且改善程序结构。Linux操作系统中提供了Linuxthread 库[5],它实现了符合POSIX1003.1c标准的多线程支持,而且是内核级方式。[!--empirenews.page--]

  串口通信通过三个线程来实现,主线程、发送子线程和接收数据处理子线程,如图4所示。同时,为了使收发数据管理更加方便,建立了四个数据缓存区:⑴ 发送缓存区,存放准备发送的命令; ⑵ 已发送缓存区,存放已发送好但未经接收确认的命令;⑶ RTU接收缓存区,存放接收到的RTU数据;⑷ ASCII接收缓存区,存放接收到的ASCII数据。所有线程共享上述四个数据缓存区的数据,并设置互斥锁用来确保一个时间段内只有一个任务在访问共享数据。

点击看原图

图4  串口通信多线程程序流程图

  主线程主要负责设备的注册,扫描是否有数据发送,如果有发送数据,进行优先级设置,将发送数据转为发送所需的ASCII和RTU格式,存入发送缓存区以待发送。串口初始化主要功能为设置串口通信属性,如波特率、数据位、校验位和流控制等。串口通信采用异步通信模式,并以全局变量作为接收标志。解析数据时应将已收到数据和已发送数据进行匹配,根据发送的数据分析接收数据是否正确,如果接收数据正确则丢弃已发送命令,否则重发。

3 快速数据转换算法

  由于上位机与下位机的个别数据存储格式不同,需要转换为对方能够识别的数据。下面以浮点数为例,说明本次设计中的数据转换机制。

  上位机采用Linux操作系统,浮点数采用IEEE-754数据存储格式。IEEE规定一个浮点数在内存中占四字节,其数据格式如图5所示。

图5  IEEE浮点数数据格式

  在IEEE浮点数数据存储格式下,第1位为符号位,指示浮点数的正负。指数部分共8位,第一个字节的后7位和第二个字节的第1位,表示范围是0 ~ 255。实际上的指数值应是-128 ~ 127的有符号整数,为了存储方便,指数值都加127转为0 ~ 255存储,即实际指数值是E-127。最后23位为小数部分,需要注意的是,在计算时,要将小数部分最高位补1。因此,实际的浮点数值可以通过下面的公式计算:

Real =(-1)*Sign*(D/224)*2E-126

  下位机浮点数在内存中同样占四字节,其数据格式如图6所示。

图6  下位机浮点数数据格式

  下位机浮点数数据格式中,数符用来指示浮点数的正负,阶符用于指示指数的正负,阶码有6位,即指数范围是0~64,小数部分比IEEE浮点数数据格式中多1位,因此在计算时高位无需补1。实际的浮点数数值可以通过下面公式计算:

Real =(-1)*Sign*(D/224)*2(-1)*SignE*E

  实际传输过程中,从下位机传来的浮点数,需要先转为IEEE标准格式,传给下位机的数据同样需要转为下位机能够识别的格式。由于浮点数存储格式复杂,在转换数据时应尽量避免使用浮点数运算。通过比较图5和图6可知,两种存储格式的最后23位相同,可以共用。因此,在编程时,采用共同体能够更快的解决两者之间的转换。编写共同体如下:

  union {

  float fdata;

  unsigned char byte[4];

  }data_change;

  fdata中存放转换前得浮点数,而字符型数组byte直接对应浮点数在计算机中以二进制存储的四个字节。通过对字符型数组的简单的加减法及移位计算就可以快速在两种存储格式之间转换。 实际测试时,采用共同体的数据转换在响应时间上要明显优于未采用共同体的数制转换,提高了串口通信的实时性。

  4 结论

  本文创新点:(1)将嵌入式Linux系统应用于无纸记录仪,使得该装置体积小,功能强,实时性能及可扩展性能良好;(2)实现了MODBUS协议中RTU与ASCII传输模式的共存,使无纸记录仪具有更强的通用性;(3)通过在数据转换编程中采用共同体这方面的改进,提高了无纸记录仪串口通信的实时性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭