1 前言

人机界面产品是工业现场常用的数字显示设备,它通过串行通信接口连接可编程逻辑控制器(Programmable Logic Controller,PLC)等工业设备,利用显示器和触摸屏或按键实现与控制设备的数据交互。由于人机界面操作简单直观,其应用领域和市场份额都在不断扩大。

目前市场上PLC厂家众多,如松下PLC、西门子PLC、三菱PLC。不同PLC产品串行通信协议基本不兼容,甚至同一厂商的不同系列PLC产品协议也不尽相同,如西门子S7-200系列PLC采用PPI协议,三菱FX系列PLC采用Computer Link通信协议,LG系列PLC可以使用两种通信协议:CNET协

议和LOAD协议。诸多PLC串行通信协议,使得人机界面在应用中面临一个问题:如果人机界面设备只能支持一种PLC通信协议,则其应用将被严重局限,其资源也被极大浪费;如果将常见的通信协议全部添加到人机界面,则不可以避免地会占用过多的人机界面内存和FLASH资源,不仅不利于功能扩展,还增加设备的维护难度。

针对上述问题,提出一种通过软件实现通信可重构的方案。该方案将多种PLC控制设备的通信协议实现代码进行独立编写和编译,根据用户选择的控制设备类型,下载特定的协议文件到人机界面存储区,再由人机界面主程序按协议文件组织串行通信数据帧,完成与PLC等控制设备的数据交互。

将以人机界面与PLC串行通信为背景,开发基于Linux平台的触摸屏人机界面,介绍协议可重构理论在人机界面通信程序中的设计方法,以松下FP系列PLC为例,解决人机界面与PLC的可重构通信互联问题。

2 背景描述

2.1 PLC串行通信特性

PLC串行通信层次结构可划分为三个部分:链路层、设备层、数据层。链路层负责数据在通信介质上的传输;设备层完成设备的通信单元数据整理,将数据组合成特定的协议帧;数据层负责对设备层的数据进行后续处理,包括生成显示任务、形成新的通信任务。

PLC串行通信常用的参数包括:波特率、数据位位数、停止位位数、校验方式。可以通过软件修改这些参数的配置以实现不同速率、校验方式的通信。

2.2 基于Linux的人机界面系统结构

Linux作为一款优秀的嵌入式操作系统,具有许多优点:

(1)系统稳定,功能强大,体积小巧,支持多种体系结构的硬件平台,应用软件多,开发工具完善。

(2)成本低廉,只要遵守GPL(General Pubfic License。GNU)的规定,就可以免费获得拷贝。Linux下有同样遵循GPL规定的C、C++、Java等一系列的软件工具开发包,可以极大地降低开发成本。

(3)高度模块化的设计,使得用户定制Linux内核极其方便,驱动程序和其他模块可以在运行时动态的编译添加到内核中啪。

综合考虑人机界面的功能、性能需求及成本,采用Linux作为人机界面嵌入式操作系统是较佳方案。

人机界面的框架系统,可以设计为三大模块:硬件平台、组态软件、嵌入式Linux应用程序Ⅲ。图1给出了人机界面框架结构示意图。硬件系统接收用户输入操作、完成屏幕显示和通信数据收发。组态软件按用户操作将各种被控资源进行组态,绑定用户所选择的协议,下载组态文件和协议文件到人机界面存储区。嵌入式Linux应用程序根据存储设备中的组态文件提取任务,并按协议文件组织和收发通信数据。

图1人机界面系统框架结构图

如何根据串行通信的特点,设计一个具有可重构通信接口的Linux系统,使其适应不同协议的差异,实现数据帧的组织和发送,是本文要解决的关键问题。

3 可重构通信设计

所谓通信可重构是指在明确了通信对象的前提下,给系统重新加载通信协议。如果系统的某一个功能组件是模块化、标准化的,则可以用具有相同接口的、模块化和标准化的可重构组件去替代该组件。对于串行通信,按PLC串行通信层次关系的分析,可以将设备层设计为—个可重构模块,完成数据帧组织和收发。

在设备层中实现可重构通信,首先必须定义重构接口。重构接口的制定需要遵循两个原则:接口最小化原则和信息最大化原则。

信息最大化原则是指通信接口必须充分满足内外信息交流的需要。当接口包含了通信时所有必要的信息时,才能保证人机界面与被控对象能够进行正常的稳定的数据交换。接口最小化原则指接口不能过于复杂,不应带有多余信息,只需要包含通信时必须的数据。接口最小化一方面可以减轻开发和维护的压力,另一方面可以使得二次开发变得更为简单易操作。

这两个原则相互矛盾,但却可以相互统一。如前所述,虽然各个PLC支持的通信协议内容不尽相同,但是通过对PLC的通信协议进行分析和比较,可以提取出重构接口与应用程序层进行信息交换必须具备的内容,包括:

(1)通信命令:表示单元执行的操作类型,包括读写操作。

(2)通信单元站号:表示当前控制设备在网络中的编号。

(3)通信单元类型:分位单元和字节序单元两种。位寄存器用于表示线圈等的位状态。字节/字寄存器用于表示数值寄存器的数值状态。

(4)通信单元地址:通常字节序单元是直接按其字节,字变量的地址作为通信地址,位单元的表示方法稍复杂,部分PLC以位寄存器的地址作为通信地址,还有部分PLC以字节地址加位地址作为通信地址。

(5)通信单元字节数:指—次通信时单元包含的字节数量。

(6)通信单元数值:读写操作时通信单元所赋的数值,读操作时表示单元的当前返回值,写操作时表示将要装入单元的耋瞄。

为保证可重构通信的稳定性,在设备层还需要提供如下的信息:

(1)接收和发送缓冲区地址。

(2)返回帧的帧长,发送帧的帧长。

在发送数据时,设备层根据重构接口中的发送缓冲区的地址,填充缓冲区中的帧数据,数据长度由接口中发送帧帧长确定。在数据接收时,设备层根据返回帧的帧头和返回帧的帧长,接收返回帧的数据,并存放在接口中指定的接收缓冲区地址中。根据上述提取出的信息来定义通信重构接口,足以满足不同PLC串行通信的要求。

在通信时,人机界面嵌入式应用程序的应用层将这些信息提供给设备层,设备层加载特定的协议文件并结合应用层提供的信息,填充数据帧的帧头帧尾、通信命令等字段,组织生成相应的通信数据帧,最后通过链路层将通信数据帧发送到串行通信线路上。当链路层接收到线路上的通信数据帧后,嵌入式应用程序的设备层将按协议文件,去掉数据帧的帧头帧尾等附加信息,然后判断其通信命令,并分析通信单元类型、地址和数值,最后将解析后的数值交由应用层,以完成显示等后续操作。由此可得如图2所示重构接口结构图。

图2可重梅接口结构图

经过可重构设计后,被控设备的协议实现不再绑定在人机界面嵌入式应用程序内部,而是以可重构模块的形式独立于应用程序之外。嵌入式应用程序提供一个标准的可重构接口,所有的可重构通信模块都按该接口确定通信数据。在进行通信时,嵌入式应用程序只需要加载特定的模块,获取其帧头帧尾、通信命令、通信单元类型等信息。就可以与被控对象进行数据交互。用户还可以根据人机界面的应用需求,选择两种以上不同的通信协议,通过多个串行口收发数据,完成同时对多个PLC等被控对象的监控。

由于人机界面已经预留可重构通信接口,用户还可以进行通信协议的二次开发,只要是按标准编写的通信协议代码,都可被人机界面加载并运行。当被控对象的通信单元被组态后,通信可重构的代码同样可以将通信单元组织成特定的数据帧。

linux系统人机界面,基于Linux的人机界面可重构通信设计与实现相关推荐

  1. 如何学习修改linux系统固件,基于Linux的固件,如何实现更新的好方法?

    我正在使用alix 2d13开发基于linux的设备. 我开发了一个脚本,负责创建映像文件,创建分区,安装引导加载程序(syslinux),内核和initrd,并注意将根文件系统文件放入正确的分区. ...

  2. 平板点餐linux系统下载,基于Linux的智能点餐系统.pdf

    软件应用与设计◆----一 SoftwareApplicationandDesign 基于Linux的智能点餐系统 周怡浩 (湖南科技学院,湖南永州 425007) 摘 要 :当今这个快节奏的社会,效 ...

  3. linux 内核 scsi底层驱动程序,Linux系统下基于SCST的SCSI_Target驱动设计.doc

    Linux系统下基于SCST的SCSI target驱动设计 摘要 随着信息数字化的深入发展,数据存储的需求日益增长.存储虚拟化带给我们最直接的益处就是,提高存储利用率,降低成本,简化存储管理,而基于 ...

  4. linux进程看门狗使用方式,Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法...

    Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法 [技术领域] [0001] 本发明涉及Linux系统的进程监控技术领域,特别是涉及一种Linux系统中基于看 门狗的精细化进程监控方法及 ...

  5. 深度linux_国产系统?基于Linux研发的深度Deepin系统,到底算不算真国产

    阅读本文前,请您先点击上面的蓝色字体"晓艳观世界",再点击"关注",这样您就可以免费收到最新内容了.每天都有分享,完全是免费订阅,请放心关注. 近年来,国内科技 ...

  6. 在linux下进行嵌入式系统设计,一种应用于测控系统的基于Linux的嵌入式系统的设计...

    描述 1.前言 随着网络控制技术的快速发展,工业以太网得到逐步完善,在工业控制领域获得越来越广泛的应用.工业以太网使用了TCP/IP协议,便于联网,并具有高速控制网络的优点.随着32位嵌入式CPU价格 ...

  7. linux系统安装内存测试,一种Linux系统下基于IDK内存注错的测试方法及系统与流程...

    本发明涉及计算机服务器的 技术领域: :,具体涉及到一种Linux系统下基于IDK内存注错的测试方法及系统. 背景技术: ::在服务器领域中,内存是服务器中重要的部件之一,它是与CPU进行沟通的桥梁. ...

  8. Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现(三)

    七.可靠性UDP的优化细节 4.5章节中,我们提到了KCP本身的优化提高,由于可靠性UDP是这个方案是否优秀的关键,而各种可靠UDP协议中都有TCP算法的影子,所以下面我们再仔细的谈一下这个部分.按照 ...

  9. 鸿蒙系统是基于linux嘛,鸿蒙系统是基于安卓吗 鸿蒙系统与安卓的区别

    2019年8月9日,华为鸿蒙系统正式发布,由于这是首款国产自主研发的操作系统,一经发布便吸引了众多国人的关注.但近日,网上也有不少质疑声,表示鸿蒙系统基于安卓,那么鸿蒙系统是基于安卓吗?鸿蒙系统与安卓 ...

最新文章

  1. 语音计算矩形面积_LeetCode85-最大矩形
  2. 剑指offer--变态跳台阶--递归和循环
  3. 16位灰度数据成像_16位 250M双通道PCI数据采集卡 FCFR-PCI9808
  4. 迁移学习简介(tranfer learning)
  5. c++随机打乱数组_NumPy数组基本介绍
  6. 设计模式C++实现--Observer模式
  7. Mybatis3(3)动态 SQL
  8. Java集合类框架的基本接口有哪些?
  9. Linux进程通信之mmap
  10. 机器学习的练功方式(六)——朴素贝叶斯
  11. mysql or_MySQL中or语句用法示例
  12. SWT folder ‘..\framework\x86_64‘ does not exist. Please set ANDROID_SWT to point to the folder conta
  13. LeetCode OJ:Combination Sum III(组合之和III)
  14. azure 入门_Azure数据目录入门
  15. 如何利用Camtasia为视频添加注释?
  16. java私有 公开 保护_性能与设计相关的java中的私有/受保护方法
  17. 我的世界电脑正版服务器地址大全,我的世界服务器地址有哪些_服务器地址大全_3DM网游...
  18. 一篇文带你从0到1了解建站及完成CMS系统编写
  19. 图解电动汽车:电动汽车工作原理
  20. 第一周CorelDRAW课

热门文章

  1. 老友记第一季23集背诵句
  2. Android IjkPlayer API介绍
  3. 利用js去除发货100广告
  4. mars xlog源码分析
  5. 51. 常用的数学工具类8-七星彩号码生成器
  6. Canvas 绘制字体图标库
  7. 基于STM32的声控洗衣机
  8. docsify(二):新增生成字典/词库功能
  9. linux删除中文名文件,linux运维 - linux下 怎样删除文件名中包含特殊字符的文件...
  10. 内存系列一:快速读懂内存条标签