脉冲电信号时序控制系统设计

2021-08-18 08:33廖春晨王东黄吴九赵俊
电子测试 2021年14期
关键词:下位电平上位

廖春晨,王东,黄吴九,赵俊

(四川轻化工大学自动化与信息工程学院,四川自贡,643000)

关键字:时序控制;Qt;嵌入式系统;STM32

0 引言

脉冲电信号时序控制技术是一种用途非常广泛,近年来越来越多地被应用于核物理[1-3]、医疗[4,5]、生物[6]、地质[7-8]等等领域。随着该系统地应用场景日益广泛,对于此项技术地要求也越来越苛刻,如何保证输出电平的准确性和时效性成了该技术的关键问题。此前,已有研究人员在解决时序触发控制这个问题上做了响应的研究例如基于DSP 的时序触发控制系统[9-11],但是这些系统仅完成了脉冲电平时序信号发送功能,没有对其简洁性,安全性进行过多的考量。本文给出了上位机软件和下位机嵌入式系统的设计方案,并在实际环境中对系统进行了测试,测试结果表明该系统有更高的准确性和时效性。

1 系统结构

整个系统主体上可以分为两个部分,上位机软件部分和下位机嵌入式系统部分。上位机软件由QT 编写设计,QT 具有优良的跨平台特性,工具丰富,功能完备,同时还提供了QT 特有的信号槽机制,可以很好的降低代码的耦合性,提升代码的复用性。主要用来处理脉冲数据,包括数据的添加,删除,修改,通道选择等等。数据在上位机处理编辑好之后,通过TCP/IP 协议发送到下位机等待输出命令。下位机搭载了两块STM32 微处理器,与通用性计算机系统相比,嵌入式系统功耗更低,可靠性高;功能强大,性价比高;实时性强,支持多任务;占用空间小,效率高;面向特定应用,可根据实际需求灵活定制。当上位机发出输出模式的命令之后,下位机再根据情况选择不同的方式将数据输出到中断设备中。整个系统的流程图如图1 所示。

图1 系统流程图

2 上位机(Upper computer)

由于QT 作为一款非常灵活强大的软件,不仅可以完成后端处理代码的编辑,也可以完成软件界面的设计工作。通过UI designer 与C++混合编程,或者qml 和c++混合编程,给我们在界面设计和程序逻辑功能的设计上带来了极大的便利。界面和数据逻辑处理之间的通过QT 特有的信号槽机制连接起来,只需要给界面上的组件添加相应的信号和对应的槽函数,就可以实现交互功能,通过简单的操作完成对数据的处理。

上位机部分主要由这几个功能模块组成:数据处理模块;通信模块;视图组织模块;控制器模块;文件管理模块等等。这些模块互相协作,比如数据处理模块,视图组织模块,控制器模块构成一个MVC 结构,便于对数据进行观察和修改,数据处理模块和通信模块完成数据的发送工作等等。上位机系统的构成见图2 所示。

图2 上位机主要模块

交互模块主要处理用户点击按钮的操作,修改数据或者展示提示消息,分散于其他各个模块中,将其他各个模块联系再一起,这里就不再详细介绍。

下面,将对其他几个模块进行介绍。

2.1 数据模块

该模块是整个上位机的核心模块,所有的数据处理工作均由这个模块进行处理。QT 本身就提供了对各种数据模型的支持,例如QAbstractItemModel,QAbstractListModel,QabstractTableModel 等,但是这些都不能完全满足我们的需求,因此选择继承QabstractTableModel 并根据实际需求添加一些自定义功能。

在该数据模型中,数据保存在一个嵌套的向量数组QVector>中,由此来实现一个二维数据的数据保存和在表格中的显示。

这个数据模型有三行N 列,每一列分别代表的是脉冲的起始时刻,持续时间,终止时刻。

除此之外,还给该数据模型添加了批量添加和删除的接口,方便操作人员对实验数据进行修改,节省时间。

为了保证输出电平脉冲的正确性,给系统添加了纠错机制。在使用批量添加数据或者在表格中直接对数据进行修改之后,会对判断新的数据是否符合输出逻辑:这些数据反映在波形图上就是一个个方波,当检测到方波之间有重合或者顺序错乱,此次修改将不会生效,并且弹出对话框提示操作者数据修改失败。

2.2 视图模块

视图模块包括数据表格和数据波形图。他们分别将数据模型中的数据以表格和波形图的形式展现给操作人员。在UI界面上放置一个QtableView 表格对象和一个QcustomPlot对象。他们分别调用setModel(QAbstractItemModel *model)和QCPGraph::setData(const QVector &,const QVector< double > &)接口实现对数据模型的具象化。如图3所示。

图3 表格和波形图

为了方便管理数据,还在给表格添加了右键菜单,直接点击目标需求的选项,之后在弹出的对话框中输入参数,即可完成对数据的修改工作。

2.3 通信模块

上位机与下位机之间的通信和数据收发就是通过这一模块完成的,其通信协议为TCP 和UDP。由于下位机有两块控制板,所以创建了两个用于通信的套接字。QT 自带QTcpSokcet 和QUDPSocket 库,使用起来十分方便。上位机作为客户端,下位机作为服务器,客户端与服务器的通信关系如图4 所示

图4 通信关系图

创建套接字之后,信号和数据的收发主要通过以下函数完成,首先将要发送的数据写到结构体中,结构体可以按实际需求来设置数据类型,然后调用函数write(const char*data,qint64 len)将数据发送给下位机。数据接受则主要通过read(char* data,qint64 maxlen)来接受数据。发送过程如图5 所示。

图5 数据发送过程

为了保证通信连接的时效性和稳定性,还给系统添加了心跳包机制,上位机每隔一秒会给下位机发送一次心跳包,下位机收到心跳包之后将固定内容的信息回复给上位机,完成一次通信状态查询。当超过十秒未收到来自下位机的回复之后,系统会自动再次断开与下位机的通信并尝试重连,若连接失败,将会以对话框的形式告知使用者。

2.4 文件管理模块

由于需要使用该系统进行多次实验,因此将实验数据保存到本地,以便后期校验和研究。这部分工作主要由QT 的QAxObject 库完成,新建一个QAxObject 对象excel,然后调用setControl(“Excel.APPlication”) 函数来建立起与Excel 的联系,之后再对数据保存的方式进行设置,设置好之后最后再调用函数dynamicCall()完成保存。可以将现在各个通道的数据以Excel 表格的形式保存到电脑上,同时也可以在软件运行过程中读取之前保存的Excel 表格的数据并填入到对应的通道中。

2.5 数据的转化和发送

在上位机中,数据是以数据模型的方式保存并展示的,在和下位机对接传输数据的时候就存在一个问题:八个通道的数据以什么样的形式发送给下位机?在数据量太大的情况下,如何高效准确的发送?

由于电平信号是以高低电平的方波形式输出,可以将高电平视为1,低电平视为0。因此可以用二进制数来表示八个通道的状态,八位二进制数正好可以转化为一个十六进制数。以图6 所示。

图6 通道状态转化图

有了这样的转化方法,就可以将任意时刻的通道状态以一个16 进制方式发送给下位机,下位机再将这个十六进制数解析为二进制数,即可得到每个通道的放电状态。

除了要知道每个通道在任意时刻的状态,还需要知道这个状态的持续时间,因此上位机除了给要发送这个16 进制数,还需要发送一个int 类型数据,表示当前通道的状态持续多少秒,再转化为下一个放电状态,一个完整的数据包被封装为一个结构体,这个结构体内容如下:

3 下位机(Lower computer)

由于整个系统涉及到大量数据的传输,上位机下位机之间的实时通信,大量数据的处理,信号处理等功能,这就需要有一款合适的硬件设备来满足这些需求,而STM32 恰好具备这些条件,具有高性能,高实时性,集成度高,易于开发的特性,因此选择STM32 作为下位机硬件支撑。

下位机由两块STM32 微处理器构成,其中一块用于和接受处理上位机发送过来的数据(主控芯片),并将其保存在SARM 中等待触发命令,触发命令分为两种,一种是来自上位机的输出命令,另一种是手动点击下位机上的输出按钮,收到输出命令之后,将保存在下位机中的数据输出给终端设备。另一块主要负责通信(从控芯片),当接收到上位机发送的心跳包之后,发送信息到主控芯片,查询主控芯片的状态,主控芯片的状态即为下位机控制器的状态,主控芯片在接收到从控芯片的请求之后,会将当前的状态发送给从控芯片,再由从控芯片发送给上位机,做到实时反馈当前下位机的状态信息。

3.1 时序控制系统硬件电路图

下位机嵌入式系统主要由两块STM32 控制板构成,主要完成数据接受,数据处理,输出输出,信息反馈,命令接受等工作。下位机主控芯片,由3 块STM32 组成,实现下位机接收、发送以及控制等功能,如图7 所示。

图7 主控芯片图

主控芯片供电以及通信接口电路图如图8 所示。

图8 供电以及通信接口电路图

这部分主要是给下位机供电,以及和上位机通信。

3.2 功能模块实现

下位机主要由以下两个功能模块组成:数据传输模块,命令通信模块。下面将仔细介绍这些模块完成的工作和实现方法。

3.2.1 数据传输模块

数据传输模块主要用于从上位机接受数据和将数据输出到终端设备中。控制板有两个DMA,每个DMA 有8 个数据流,每个数据流有多达8 个通道。用于在外设与存储器之间以及存储器和存储器之间提供一种高速数据传输方式。它在实现高速数据移动过程中无需任何CPU 的操作控制,从硬件层次来说,DMA 控制器是可以快速移动于Cortex-M4 内核的,通过硬件方式为RAM 与I/O 设备提供一条直接传送数据的通道。

当上位机的数据发送过来的时候,下位机便开始接受数据,每一次接收到的数据分为两个部分,第一个部分表示的是状态,将这个数据解析为一个16 进制的数,这个16 进制的数就代表着当前8 个通道的电平状态。第二部分是一个整数,无需额外解析,这个数就代表这个状态的持续时间。通过收取多组数据,即可得到一系列脉冲波形的相关数据,然后将数据保存在外部的SRAM 中,存储大小可以根据具体的需求来设计。

此外,数据传输采用两块STM32F407ZGT6 单片机作为控制器的微处理器,实现两种输出模式切换功能,一种是由上位机触发脉冲方波,一种是通过外部输入的两路高低电平信号来触发脉冲方波。当接收到输出命令之后,主控芯片便将之前接受到的数据以高低电平的形式发送到终端设备商,可以同时输出8 路脉冲方波,能够输出持续时间长的脉冲波形,做到输出波形误差小,实时性高,数据传输模块的流程图如图9 所示。

图9 数据传输模块流程图

3.2.2 命令通信模块

通信模块采用LWIP 协议,在保持TCP 协议的主要功能基础上减少对RAM 的占用,它只需要十几KB 的RAM 和40K 左右的ROM 即可运行,非常适合在嵌入式系统中使用。LWIP 协议提供了专门的内部回调函数接口(Raw API),用于提高程序性能,还提供包括阻塞机制,RTT 估算,快速恢复和快速转发的传输控制协议,保证命令和数据的传输效率和准确度。

将控制器作为服务端,上位机作为客户端,通过上位机来建立连接,用一块STM32F407ZGT6 单片机负责存储脉冲方波的数据并输出脉冲波形(做主控芯片),另一块负责切换控制器的触发模式,并设计了心跳机制,上位机会定期发送信号到另一块STM32F407ZGT6 单片机控制板(从控芯片)查询主控芯片控制板的状态,主控芯片通过8 路I/O 将其状态发送给从控芯片,主控芯片的状态即为控制器的运行状态,然后再通过LWIP 协议将信息返回给上位机,并在上位机的状态栏中以文本的形式显示当前运行状态。

命令通信模块的流程图和硬件实物图分别如图10 和图11 所示。

图10 通信模块流程图

图11 实物图

4 系统测试(System test)

4.1 测试方法和说明

在上位机上设置好对应通道的输出波形参数,包括起始时刻,高电平持续时间,周期以及脉冲数量,主要测试了各个通道的其起始时刻是否准确,测试了下位机相应通道的输出波形高电平持续时间,验证了使能信号对输出波形的截断功能。

若无特殊说明,图12 中的4 条线分别表示:1 号标签(黄色线)为使能信号;2 号标签(浅蓝色线)为使能信号;3 号标签(红色线)和4 号标签(深蓝色线)为通道信号。

图12 测试说明图

①每一个小方格代表的时间;

②如图中示波器红色竖线距离触发信号跳变为高电平的时间间隔;

③光标A 对应的时间刻度;

④光标B 对应的时间刻度;

⑤光标A、B 之间的时间间隔。

4.2 测试结果

由于示波器通道限制,每个示波器只能显示两个通道的脉冲电平的波形,因此取通道一和通道二来展示测试结果。

实验一:通道一和通道二设置的数据如表1 所示。

表1 第一组测试数据

测试结果如图13 和图14 所示。

图13 实验1 中通道1(红色)、通道2(深蓝)的起始时刻

图14 实验1 中通道1(红)、通道2(深蓝)最后一个起始时刻

从示波器测试结果可以看出通道1、2 的起始时刻分别为0.206ms、0.306ms,高电平持续时间为0.1ms,实际输出的波形时刻相对于设置的时刻误差为6。最后一个上升沿时刻如图所示,通道1、2 的第五个上升沿时刻分别为4.205ms,4.305ms,误差为5。

实验二:通道一和通道二设置的数据如表2 所示。

表2 第二组测试数据

测试结果如图15 和图16 所示。

图15 实验2 中通道1(红)、通道2(深蓝)的起始时刻

图16 实验2 中通道1(红)、通道2(深蓝)最后一个起始时刻

从示波器测试结果可以看出通道1、通道2 的起始时刻分别为10.006ms、10.106ms,误差为66;高电平持续时间均为0.5ms。最后一个上升沿时刻如图4-5 所示,通道1、通道2的第五个上升沿时刻分别为50.005ms、50.105ms,误差为5。

5 总结

本文介绍了一套由QT 编辑的上位机软件和STM32 微处理器构成的可支持多通道的脉冲电平输出时序控制系统。由于该系统输出电平信号的方式是先将预先设置好的数据发送至下位机,等待下位机接受完所有数据之后,等待触发信号,接收到触发信号之后才会开始按预先的设置输出电平信号。避免了实时输出方式(一边从上位机接受数据一边输出电平信号)会因为上位机发送或者下位机接受数据受网络波动的延迟而影响输出精度。经过测试,系统输出延时误差已经降低至5 左右,大大提升了电平脉冲信号的精度。

猜你喜欢
下位电平上位
发射机房监控系统之下位机
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
NPC五电平Z源逆变器的设计研究
以新思路促推现代农业上位
CAN总线并发通信时下位机应用软件设计
基于三电平光伏并网逆变器控制系统的研究与实践