实时系统的作用
对于机器人、高端制造业、医疗和过程控制(石油、天然气和电力)业务来说,实时处理非常重要。这些行业依赖实时数据处理以不断提高安全性、效率和可靠性。而确保这些行业的实时处理数据的一个关键因素是,系统要能够实时调度工作任务, 优先响应、管理和执行实时工作任务。
例如,现代汽车制造商依靠机器人在生产线上的协同工作来组装汽车。机器人传递零件、钻孔、焊接,或执行安全检查,都需要精确和连续地处理。在这些应用中,实时系统不仅必须在已经设定的、可预测的时间范围内处理数据,还必须确保关键任务(如安全相关任务)在不太关键的任务之前完成。
那么,如何确保数据按照设定的时间和方式处理呢?
答案是运用实时系统。
实时系统一般会提供以下功能:
ProCon NoTime:实时.NET执行环境
ProCon NoTime是基于实时系统的.NET执行环境,与Windows共同或独立运行在一般工业计算机上。安装ProCon NoTime之后,工程师可以用Visual Studio基于以往的习惯开发基于.NET语言(如C#,VB.NET等)的实时程序。
1.开箱即用
基于目前市场常见的实时系统,在开发时都需要面对不少问题:内存管理、与现有开发工具的兼容性、实时系统SDK学习,以及后续稳定性和可维护性挑战。
而通过NoTime,工程师只需要将原本运行在Windows上的.NET机器控制程序,通过调用LoadNoTimeAPP接口等简易操作,就可放到实时系统中运行,这样工作重心就能转移到设备运控及逻辑程序本身,无需担心实时性的实现了。
同样的程序运行在NoTime和Windows中会有显著的不同,以下我们通过一些简单的实验来展示。
2.实时的用户程序响应
这是一个经常出现的现象,一个外部信号进入控制系统,用户希望收到信号之后立刻进行一些计算和判断,然后进行某种形式的输出。这类问题常见于各类视觉检测应用中。
物品运动的速度是200mm/s,假设收到外部信号后,需要进行1万次浮点数运算,计算完成之后伺服电机急停。我们把相同的程序分别运行在Windows和NoTime环境中。(详见视频)
通过图中的曲线可以看到Windows和NoTime两种环境中的区别。
由于Windows并不是硬实时操作系统,而NoTime 125μs高精度线程可以精确地执行用户程序,所以这个结果是符合预期的。但是与传统的实时系统不同,NoTime用户并不需要其他额外的实时系统开发成本和SDK购买成本,直接使用标准的C#语言就可以获得硬实时系统的效果。
这个实验中用到了ProCon YKCAT2— —是基于windows和NoTime的运动控制库,我们将在后续介绍。
3.实时通讯
不同于“虚拟机”,或者Windows设备驱动类实时系统,NoTime基于完整的实时操作系统,可以完全地管理PC的其他硬件。因此我们可以实现实时的PC与PC或PC与PLC的通讯。
相同的代码,基于NoTime的Socket通讯,比基于Windows的更加稳定和敏捷。
对于贴合绑定、检测设备和叠片设备等来说,稳定的PC通讯可以显著缩短设备的CT,提高稳定性。
4.蓝屏机器控制
因为NoTime与Windows安全隔离,所以即使Windows因为病毒,兼容性等原因蓝屏,NoTime依然可以稳定运行,使设备始终处于受控状态。可以继续执行关键的保护和安全任务,避免人员或产品的损失。(详见视频)
5.NoTime高精度线程:与PLC一样的确定性,但是算力更强
基于PC的控制系统算力一般较强,但是一般认为计算周期的稳定性要逊于PLC。基于NoTime 125μs高精度线程,用户程序在125μs周期内精确地执行。每个周期可以执行约1.3万次浮点数运算(基于i5-8500,单核心)这样就兼具了算力与运算周期稳定的优势。
我们采集了每125μs的浮点数计算量,其中Windows管理intel i5-8500的5个核心,NoTime管理intel i5-8500的1个核心。如下图可以看到两者的对比:Windows响应用户程序的算力并不稳定,有些周期只能计算数十次或没有算力资源,这类情况需要等待Windows分配算力,造成用户程序的卡顿。
以上,就是NoTime— —基于实时系统的.NET 执行平台。通过NoTime,软件工程师可以几乎无门槛地进入实时世界,同时继续享用X86系统的高算力优势。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !