2020年初,由于新型冠状病毒肺炎(NCP)的突袭,我们度过了一个特别的春节。在这个特殊时期,每个人都在用自己的方式努力着,为这场战役尽绵薄之力,在各自的战场上扮演独特而关键的角色。
作为自动化行业从业者,我们一部分小伙伴已经提前返工,奋战在抗疫一线,保障设备运行和急需物资的生产供应,大部分小伙伴则积极响应国家号召,待在家里以减少病毒传播的风险。在家隔离也是战斗,北京盟通科技全体员工2.10-2.14继续在家远程办公,和大家一起“闷死病毒”。
在此,我们希望利用这段空闲时间,把在推广EtherCAT主站和服务客户过程中的心得记录下来,供大家参考。
一、用Windows工控机开发EtherCAT控制器
我们知道EtherCAT是自动化领域中被广泛应用的一种实时现场总线技术。在控制器端,EtherCAT主站通常运行在实时操作系统上。比较常见的实时操作系统,如商业版的风河系统Vxworks和QNX,开源的Linux RT Preempt 和Xenomai,以及国产翼辉实时系统都有相应的EtherCAT主站协议栈可供客户选择。Linux RT Preempt和Xenomai的比较同样是客户经常提及的问题,我们在后续有专门的短文讨论,在此不赘述。
在操作系统的选择上,我们遇到相当一部分控制器生产厂商,他们一方面有在Windows系统上多年研发的应用在市场上销售,另一方面对控制精度的要求和对实时现场总线技术的需求都在逐步增加。对这部分厂商来说,在运行Windows系统的工控机上尽量简单的增加EtherCAT主站协议,并能继续使用他们熟悉的Visual Studio开发环境,是他们把现有应用和EtheCAT功能相结合的最理想的解决方案。
还有另外一部分厂商如KUKA机器人,既需要实时系统保障实时现场总线的性能,也需要Windows环境下友好的用户界面带来高质量的用户体验。当然,Windows系统上应用开发工程师的数量优势和价格优势,同样是很多厂商在设计新一代产品时重要的关注点。总之,我们有足够的理由相信,在运行Windows系统上开发支持EtherCAT主站的控制器,是市场上实际存在的需求。
但是很可惜,Windows不是实时操作系统,所以我们工控机上启动EtherCAT主站之前,还需要再多做些工作。或许在这里需要特别强调一下,我们说Windows不是实时系统不是因为Windows不够快。如果我们极端一点,实时性和运行速度快慢没有多大关系,实时性强调的是时间上的确定性。我们没有办法让标准的Windows7 或者Windows 10系统保证在一个确定的时间间隔内完成一个任务,所以Windows不是实时操作系统。实时系统的确定性问题,我们同样留到之后的短文讨论。
虽然Windows不是实时操作系统,但我们可以通过类似虚拟机的方式,在工控机的Windows系统中嵌入或扩展实时环境,并将EtherCAT主站或运动控制算法等有实时性要求的应用放在实时环境中,从而完成在Windows工控机上开发EtherCAT控制器的任务。
二、Windows实时扩展方案LxWIN
德国acontis 公司是全球领先的EtherCAT软件协议栈提供商。基于我们在上节中了解到的客户需要,acontis公司在其EtherCAT主站产品基础上,开发了Windows实时扩展解决方案。acontis 公司的EtherCAT协议栈及Windows实时扩展方案已经在全球多家客户产品如KUKA机器人控制器中使用多年,其可靠性和稳定性已经得到市场充分验证。
acontis 公司的Windows实时扩展方案包括两个重要的组成部分。首先,实现环境可以在不同的实时操作系统之间选择。我们推荐用户使用Linux RT Preempt或RTOS-32 Ontime系统作为实时环境。当然客户也可以选择VxWorks、QNX、WinCE以及自行开发实时操作系统作为实时环境。
图1.Windows实时扩展+实时Linux系统
图1 是选择Real Time Linux 作为实时环境的框架示意图。控制器厂商在Windows上开发的非实时应用程序和客户图形界面可以继续保留在Windows系统下,而EtherCAT主站、运动控制算法等实时应用需要运行在Linux RT Preempt实时环境中。图1中同样可以看出,Windows操作系统和实时Linux系统被隔离在不同的CPU核和不同的内存空间中,两个操作系统相互独立,并分别独立控制被分配给其的硬件。隔离带来的好处显而易见,如同我们现在通过隔离截断冠状病毒的传播,两个系统的隔离可以在一个系统出现异常时,比如Windows被某个应用阻塞或者蓝屏,而实时Linux下的应用程序将继续正常运行而不受Windows状态的影响。
Windows实时扩展的另外一个重要组成部分即图1中的Hypervisor部分。如同N95口罩和普通外科口罩的防护效果,acontis公司自主开发的Hypervisor保证了Windows和实时Linux更好的隔离效果。Hypervisor还包括了硬件抽象层HAL以及网络通信函数库。Windows和实时Linux通过共享内存和Event方式进行数据交换,或者调用网络通信函数库提供的API构建虚拟网络驱动,在Windows和实时Linux直接搭建虚拟网络进行通信。
上面介绍的Windows实时扩展使用Linux RT Preempt作为实时环境,因此这个解决方案被命名为LxWIN。LxWIN包含了已经做过实时性能优化的实时Linux系统,使用Visual Studio作为应用开发IDE,以及图形化配置界面,如图2所示。即使缺乏Linux经验的用户,也可以在较短的时间内开发标准的EtherCAT应用。
图2.LxWIN图形化配置界面
LxWIN最突出的特点来源于Linux系统本身的开发性和丰富的第三方软件。各方面的信息和数据都清晰的表明,Linux是目前最被广泛使用的操作系统,并在市场占有率上持续保持上升趋势。Linux拥有健康和强大的开源社区,可提供超出想象的第三方函数库。
三、Windows实时扩展方案EC-WIN
如果用户目标产品固定且不需要第三方软件,但需要加快EtherCAT网络循环周期,通过快速数据更新提高精度,我们建议选择Ontime RTOS-32系统作为实时环境。EC-WIN即是包括了RTOS-32实时系统和EtherCAT主站的完整解决方案。RTOS-32是一款精简的实时操作系统,在I3 CPU的工控机上,我们可以相对轻松的把EtherCAT主站循环周期调高到50微秒。RTOS-32稳定性高,增加负载对系统抖动没有特别明显的影响。此外,EC-WIN拥有远高于其他方案的性价比,一直是深受我们团队喜爱且大力推荐的Windows实时扩展和包括EtherCAT主站的完整解决方案。
图3.EC-WIN框架
四、总结
北京盟通科技有限公司是德国acontis公司在中国大陆唯一的合作伙伴。我们在过去几年EtherCAT总线的推广中接触了大量的用户需求,并积累了丰富的开发和实际操作经验。本文是利用隔离期间的空闲时间,对过去工作产生的一些看法的总结,希望能给同样在隔离中的同仁们提供些许可用信息,或许也算对防治冠状病毒贡献了微薄之力。