一种高速实时曲线绘制方法及系统与流程
本发明涉及工业自动化数据处理,尤其涉及一种高速实时曲线绘制方法及系统。
背景技术:
1、目前,在工业数据采集与实时监控场景中,随着采样密度不断提高,对曲线绘制速度提出了极高要求。现有上位机软件普遍采用将采集到的数据直接赋值给图表控件、由原生控件进行全量刷新的处理方式。当数据量较大或实时性要求较高时,解析和全量绘图的耗时直接阻塞数据接收,导致后续数据无法及时读取,界面卡顿甚至数据丢包,无法满足高密度数据流的实时显示需求。
2、为此,亟需提出一种曲线绘制方法使其满足高密度数据流的实时显示。
技术实现思路
1、为解决上述技术问题,本发明提供一种高速实时曲线绘制方法及系统,其能够有效克服上述缺陷。
2、具体的,在第一方面,本发明提供了一种高速实时曲线绘制方法,所述方法包括:
3、s1、以第一固定时间周期向原始数据源发送数据读取请求,并接收所述原始数据源响应于所述请求所返回的原始数据包,将所述原始数据包依次存入数据队列的尾部;
4、s2、以第二固定时间周期从所述数据队列的头部取出所述原始数据包,并对所述原始数据包进行解析,以获得至少一个数据通道的测量值;
5、s3、将解析得到的所述测量值追加至预设的定长数据存储区,所述定长数据存储区具有预设的点数容量,且在每一次追加操作时,若所述定长数据存储区内的数据总量超过所述点数容量时,采用逻辑删除方式移除最旧的数据点,以维持数据总量不超过所述点数容量;
6、s4、创建与所述数据通道对应的曲线对象,并建立所述曲线对象的增量数据接口与所述定长数据存储区的绑定关系;
7、s5、当所述定长数据存储区因追加所述测量值而发生数据更新时,触发绘图事件;响应于所述绘图事件,通过所述增量数据接口将本次追加的所述测量值增量绘制于屏幕上已存在的曲线末尾,以完成曲线的一次实时刷新。
8、通过以第一固定时间周期收数入队、以第二固定时间周期取数解析,使收数操作不因后续步骤的耗时而被阻塞,避免数据丢包;通过定长数据存储区配合逻辑删除,使数据写入不随数据量增大而变慢;通过绑定增量数据接口并事件触发增量绘制,避免全量重绘带来的性能开销。由此实现了高密度数据流下的无丢包、无卡顿实时曲线绘制。
9、可选地,所述原始数据源为工业现场下位机,所述原始数据包由所述下位机以固定周期生成,且每批次所述原始数据包的数据量固定;所述第一固定时间周期为第二固定时间周期的5倍以上,每批次所述原始数据包的数据量为固定值。
10、通过将第一固定时间周期限定第二固定时间周期限定的5倍以上、每批次数据量限定为固定值,并将原始数据源限定为工业现场下位机,使收数线程与解析线程的时间参数形成稳定的倍数关系,即消费速度快于生产速度,配合确定的数据包大小,确保队列不会产生数据堆积,进一步明确了本发明方案在确定速率数据流场景下的具体应用优化。
11、可选地,所述定长数据存储区包括对应的头指针和逻辑数据长度;所述s3中采用逻辑删除方式移除最旧的数据点,具体包括:
12、当追加所述测量值后,所述逻辑数据长度自动增加;
13、当所述逻辑数据长度大于所述点数容量时,将所述头指针后移,后移的数量等于本次追加的测量值的数量,并将所述逻辑数据长度更新为所述点数容量,以从逻辑上移除最旧的数据点。
14、通过配置头指针和逻辑数据长度,追加数据后逻辑长度自增,超容量时仅移动头指针并更新逻辑长度,整个操作无需搬移存储区中的任何现有数据,使数据写入的耗时始终保持恒定,不随数据量增大而增加,从根本上消除了因数据量积累而产生的性能衰减。
15、可选地,所述定长数据存储区所对应的曲线横轴为固定范围的序号轴,所述序号轴的最大显示范围与所述点数容量相同;当新数据点以逻辑覆盖的方式写入时,该新数据点占据被覆盖的最旧数据点的序号位置,使得横轴刻度保持不变,其中所述新数据点对应于本次追加的所述测量值。
16、通过将曲线横轴限定为固定范围的序号轴,新数据点占据被覆盖的最旧数据点的序号位置,使横轴刻度在整个刷新过程中保持不变,画面不会产生跳动,实现了稳定的滚动显示效果。
17、可选地,所述定长数据存储区为采用键值对结构的数据字典,所述键为所述数据通道的索引标识,所述值为浮点型数组。
18、通过将定长数据存储区限定为键值对数据字典,使各数据通道拥有独立存储空间,互不干扰,且浮点型数组可直接与图形库的数据流绑定属性对接,无需类型转换,提升了数据传递效率。
19、可选地,所述曲线对象的增量数据接口由开源科学绘图库提供,所述增量数据接口为数据流绑定属性;通过将所述数据流绑定属性与所述定长数据存储区进行绑定,实现所述测量值的增量添加与自动刷新。
20、通过将增量数据接口限定为由开源科学绘图库提供的数据流绑定属性,并与定长数据存储区绑定,使存储区追加新测量值后图形库自动增量添加至曲线末端并刷新,无需手动调用绘图更新函数,简化了绘图流程,提高了刷新效率。
21、可选地,所述方法还包括异常处理步骤:
22、当对所述原始数据包进行解析时校验到该原始数据包格式错误时,跳过该原始数据包并记录错误日志;
23、当绘图发生异常时,捕获所述异常并终止当前绘图操作,所述s1和s2的运行线程不受影响。
24、通过设置异常处理步骤,使单个异常不会导致整体流程中断,绘图模块的异常不会波及收数和解析线程,提高了系统在工业现场长期运行时的稳定性。
25、可选地,解析得到的所述测量值以轻量级元组形式临时存储。
26、通过将解析得到的测量值以轻量级元组形式临时存储,无需定义完整的类或结构体,减少了内存分配和垃圾回收开销,提升了高频解析场景下的数据传递效率。
27、在第二方面,本发明提供了一种高速实时曲线绘制系统,所述系统包括:
28、数据接收模块,用于以第一固定时间周期向原始数据源发送数据读取请求,并接收所述原始数据源响应于所述请求所返回的原始数据包,将所述原始数据包依次存入数据队列的尾部;
29、数据解析模块,用于以第二固定时间周期从所述数据队列的头部取出所述原始数据包,并对所述原始数据包进行解析,以获得至少一个数据通道的测量值;
30、数据存储与管理模块,用于将解析得到的所述测量值追加至预设的定长数据存储区,所述定长数据存储区具有预设的点数容量,且在每一次追加操作时,若所述定长数据存储区内的数据总量超过所述点数容量时,采用逻辑删除方式移除最旧的数据点,以维持数据总量不超过所述点数容量;
31、曲线对象创建与绑定模块,用于创建与所述数据通道对应的曲线对象,并建立所述曲线对象的增量数据接口与所述定长数据存储区的绑定关系;
32、曲线增量绘制与刷新模块,用于当所述定长数据存储区因追加所述测量值而发生数据更新时,触发绘图事件;响应于所述绘图事件,通过所述增量数据接口将本次追加的所述测量值增量绘制于屏幕上已存在的曲线末尾,以完成曲线的一次实时刷新。
33、可选地,所述原始数据源为工业现场下位机,所述原始数据包由所述下位机以固定周期生成,且每批次所述原始数据包的数据量固定;所述第一固定时间周期为第二固定时间周期的5倍以上,每批次所述原始数据包的数据量为固定值。
34、本发明提供了一种高速实时曲线绘制方法及系统,该方法通过以第一固定时间周期收数入队、以第二固定时间周期取数解析,使收数操作与解析操作在时间上相互错开、互不阻塞,避免了因解析或绘图的耗时导致后续数据无法及时接收而产生的数据丢包;通过定长数据存储区配合逻辑删除方式,使数据追加和旧数据移除过程无需搬移现有数据,写入速度不因数据量增大而降低;通过创建独立曲线对象并建立增量数据接口与存储区的绑定关系,仅在存储区因追加测量值而发生更新时触发绘图事件,将本次追加的测量值增量绘制于曲线末尾,避免了每次刷新时对全部数据进行重绘。由此,本发明在数据量持续增长的情况下仍能保持稳定的绘制性能,实现了高密度数据流下的无丢包、无卡顿实时曲线绘制。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com