100us我自己都不相信的劳动成果

本文作者分享了自己在XP系统下实现100us实时控制的经历,原本认为这是不可能的任务,但经过努力最终成功。文章讨论了IEC 1131-3标准在实时控制系统中的难点,特别是数据定义标准和变量刷新问题。作者通过自研的方法,实现了1024个double型数据的高效读写,验证了系统能达到100us的周期。作者强调理论学习的重要性,尤其是C语言和汇编,认为掌握底层知识对于理解和创造高效系统至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        一直以来我都不相信在XP系统下可以做实时控制,我个人始终认为决定一个程序的根本特征的东西,就是它的程序框架,那些国外的RTOS提供商们宣称他们可以在XP下做到100us,我认为简直就是天方夜谈一样,因为XP操作系统的框架就在那摆着,你不可能指望把一辆牛车开出奔驰的速度,可是我TMD又错了,事实上又证明了经验害死人的主观错误,我错了,我真的错了。因为我做出来了,连我自己都不相信。我不知道是否有人能理解出我此时因为感觉自己失败而痛苦的心情。
        要想说明白XP系统下开发运动控制的难点在哪里,需要从一个标准说起,这个标准的名称叫做IEC 1131-3,几乎所有的RTOS厂商都支持这个运动控制上的编程标准,最著名的厂家我个人认为有两个一个是CODESYS一个是德国的倍福,虽然德国的倍福用的也是CODESYS的平台,但是经过我认真的分析它的特点发现倍福有很多都是自己的东西。其实根本就不用管什么ST FBD LD SFC IL那些并不是决定一个系统是否实时的难点,实现这些语言中国很多厂商都能做到。在这个标准下实现实时性的难点是IEC 1131-3的数据定义标准,下面是一个例子:
        L1_green AT %QB0.1:BOOL;(*定义一个bool型的变量*)
        anlog_1 AT%Q*:DINT;(*定义一个双整形的变量*)
        以及和以上类似的各种类型的数据定义。如果没有研究过实时库的人,你是不太可能明白,在这种数据结构下,如何刷新这些变量,以及为什么想提高实时性,这么困难,因为变量的刷新周期就决定了这个系统实时性的性能,而+,-,*,/这些类似的运算,大家如果使用同样的CPU的话,同样的编译优化技术(已经很成熟了,发挥空间很小了),想在计算上获得优势想都不要想,决定了你系统实时性能的,就是变量的刷新周期,可是

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值