第五十四章 厂长,您可得多来技术科啊!(2/3)
是这个思路。”
“状态机的核心是三个东西,状态,事件,动作。”
“当前状态收到一个事件,执行对应的动作,然后迁移到下一个状态,你把这三个东西定义清楚了,程序就不会乱。”
李援朝连连点头,手里的笔飞快地在本子上记着。
“林默拉过一把椅子坐下,拿起桌上的一块飞控板,指着上面的主控芯片。
“还有你这程序架构,别把所有功能都塞在主循环里。”
“中断优先级要分清楚,姿态解算最高优先级,遥控指令第二,图传第三,日志记录最低。”
“姿态解算的周期要固定,比如说每十毫秒中断一次,算一次姿态,调一次PID,这样飞控的响应速度才能跟得上。”
“我之前是把所有东西都放主循环里。”
李援朝挠了挠头,有点不好意思,“跑一遍下来,姿态解算的时间不固定,有时候长有时候短,飞机就不太稳。”
“那是因为你主循环的执行时间不是恒定的。”
林默把飞控板放下,拿起笔在纸上画了一个时序图,“你设一个定时器中断,每五毫秒触发一次,中断服务程序里只做三件事。”
“读传感器,算姿态,调PID。主循环里跑那些不要求实时性的东西,比如图传,日志,遥控指令解析。”
“这样一来,姿态控制的实时性就保证了。”
李援朝盯着那个时序图看了半天,一拍大腿,“厂长,您这一说我就明白了!这就是把实时任务和非实时任务分开处理!”
林默笑了笑,“对,这叫前后台系统架构,前台是中断服务程序,处理紧急的事,后台是主循环,处理不紧急的事。”
“你把这个框架搭好了,后续加功能就不会乱。”
李援朝兴奋的手里的笔都快把本子戳穿了。
他在对微处理器和软件编程不算精通。
林默来了之后,他才开始系统地接触这些新东西。
每次林默来技术科,他都恨不得把脑子里的疑问全部倒出来,让林默一一解答。
“厂长,还有一个问题。”
李援朝翻了两页本子,指着上面的一行字,“上次您说的PID参数整定方法,我试了一下,比例和积分调好了,但微分项一直拿不准。”
“调大了飞控容易抖,调小了又响应太慢。”
林默想了想,拿起笔在纸上画了一个曲线图,解释道:
“微分项的作用是预测误差的变化趋势
本章还未完,请点击下一页继续阅读>>>