2.2
通信机制设计
通信部分是软件的核心,软件框架决定了软件运行的稳定性及后续的扩展性,所以需要对通信机制、软件框架的控制方式进行良好的设计。
第1章已经对应用场景进行了介绍,软件框架在通信方面的应用有两种方式:主动请求和被动接收。
主动请求通信方式又称为呼叫应答方式或主从方式。也就是说,主动权在软件框架端,只有软件框架主动发送请求命令,从机(硬件设备、传感器等)接收命令后检验数据的完整性,确定是不是发给自己的命令,校验成功后,返回指定的数据信息,完成一次完整的链路通信。这种通信方式的工作原理如图2-9所示。
图2-9 主动请求通信方式的工件原理
被动接收通信方式是软件框架实时监测IO通道,只要有数据信息就会提取出来进行数据校验,检验成功后,分析、处理、保存数据信息。例如,设备、传感器等定时发送状态数据。这种通信方式的工作原理如图2-10所示。
图2-10 被动接收通信方式的工作原理
在复杂的应用场景中,这两种通信方式有可能同时存在,此类情况一般是采用以太网链路进行通信,只有外接串口的设备可以通过以太网转换模块来接入。
2.2.1
串口通信机制
由于串口通信的特性限制,为避免多个硬件设备连接到串口总线时出现数据混乱现象,一般采用轮询模式的呼叫应答通信机制。
当有多个设备连接到通信平台时,通信平台会轮询调度设备执行通信任务。某一时刻只能有一个设备发送请求命令、等待接收返回数据,这个设备完成发送、接收(如果遇到超时情况,则自动返回)数据的操作后,下一个设备才能执行通信任务,依次轮询设备,如图2-11所示。
图2-11 轮询通信
2.2.2
网络通信机制
轮询通信机制可以保证数据有序地发送、接收,避免并发数据在串口总线上出现混乱,但是这种通信机制是以降低性能为代价的,只适用于串口通信。
以太网是独立信道,可以全双工通信。为了充分发挥以太网的优势,在轮询通信机制的基础上增加了并发通信模式、自控通信模式,这样做的目的一是提高通信的性能,二是二次开发时有更多自主控制权。
三种通信模式具体介绍如下。
1.轮询通信模式
以太网轮询通信模式与串口通信模式一致,如图2-12所示。
图2-12 轮询通信模式
2.并发通信模式
并发通信模式是集中发送所有设备的请求指令,现在的框架是采用循环同步方式集中发送请求命令,也有其他实现方式,如采用并行异步方式集中发送请求命令。并发通信模式的工作流程是硬件设备接收到指令后进行校验,校验成功后返回对应指令的数据,通信平台异步监听到数据信息后进行接收操作,然后再进行数据的分发、处理等,如图2-13所示。
图2-13 并发通信模式
3.自控通信模式
自控通信模式与并发通信模式类似,区别在于,自控通信模式是发送指令给设备本身进行控制,或者说给二次开发者,二次开发者可以通过时钟定时用事件驱动的方式发送指令数据。硬件设备接收到指令后进行校验,校验成功后返回对应指令的数据,通信平台异步监听到数据信息后进行接收操作,然后再进行数据的分发、处理。
自控通信模式可以为二次开发者提供精确的定时请求实时数据机制,使通信机制更灵活、更自主,如图2-14所示。
并发通信模式和自控通信模式都可被动接收数据,应用场景更加灵活,使软件框架和硬件设备的开发工作更自由。
图2-14 自控通信模式