第六十章:讲解

愿你在这里,遇见真正值得阅读的故事。

⚡ 自动翻页 开启后阅读到底自动进入下一章
⚡ 开启自动翻页 读到章尾自动进入下一章,阅读更连贯。

  “我们遇到的核心难题,主要是两个。”王研究员继续介绍,语气变得严肃起来,“一是如何在有限的cpu时间和內存资源下,完成多通道数据的实时採集和初步数字滤波,保证不丟数,响应及时。二是如何有效抑制现场的工频干扰,提高信號信噪比。我们尝试了几种滤波算法,要么计算量太大,实时性保证不了;要么效果不理想,干扰滤不乾净。”

  他顿了顿,目光看向陆沉,语气带上了几分考较和期待:“陆沉同学,我听张老师转达了你的思路,特別是关於改进型递推平均滤波结合限幅,以及简化自適应陷波的想法,很有启发性。你能……结合这块实际的板子,再具体说说你的设想吗?比如,如果让你来安排这个板子上的软体任务,你会怎么分配时间和资源?你的那个滤波算法,具体参数怎么定?怎么保证在z80上高效运行?”

  问题很具体,很直接,直指核心。

  房间里所有人的目光都集中在了陆沉身上。

  张老师有些紧张地看著他。

  吴涛和周倩也好奇地等待这个小天才如何回答。

  陆沉没有立刻回答。

  他先走近实验桌,更仔细地看了看那块数据採集板,又看了看旁边示波器上正在显示的、带有明显50hz工频纹波的模擬信號波形。

  然后,他转过身,面向王研究员和李主任,声音清晰,语速平稳:

  “王老师,李主任,我的想法是基於几个前提。第一,明確係统最核心的实时性要求是定时採集不丟点,初步处理不掉队,上传可以稍有缓衝。第二,z80的资源必须极致利用,避免任何不必要的计算和內存访问。”

  他走到旁边一块白板前(上面还残留著一些电路公式),拿起笔,开始边画边说。

  “任务调度,我认为可以基於一个简单的、非抢占式的优先级循环。最高优先级给定时器中断,严格定时触发ad转换。转换完成中断优先级次之,负责读取ad结果,存入双缓衝队列。主循环以较低优先级运行,从队列取数,进行递推平均滤波和限幅判断。滤波窗口大小可以根据信號变化率和噪声水平预先测定,比如取8点或16点,用移位代替除法,提高速度。限幅閾值根据信號正常波动范围设定。”

  他在白板上画出任务框图和数据流,標註优先级和缓衝队列。

  “针对工频干扰,完整的自適应陷波在z80上负担太重。我设想在系统初始化时,根据预设的工频(50hz),计算出一个固定的陷波器係数,烧录在eprom里。实际运行时,直接调用这个固定係数的滤波环节。虽然无法跟踪工频微小波动,但能抑制大部分固定频率干扰。可以將这个固定陷波作为可选环节,根据现场干扰情况由上位机配置是否启用。”

  他又画了简单的滤波器结构示意图。

📚 继续发现好书: 仙侠玄幻历史游戏武侠同人都市科幻