- 博客(3)
- 收藏
- 关注
原创 linux系统多线程间通信和多核多线程场景下volatile的使用误区
然而,在C语言中(没有std::atomic),我们通常使用volatile来防止编译器优化,同时使用内存屏障来保证多核可见性(例如在Linux内核中,使用volatile和barrier()宏)。同步机制方面,互斥锁(mutex)是最基础的,用于保护临界区资源。内存可见性(多核/多线程):由于现代处理器的缓存一致性机制,一个CPU核心的写操作可能不会立即被另一个核心看到(尽管在单核系统中中断处理程序与主程序在同一个核心上运行,但中断会打断主程序,所以缓存是一致的,不需要额外屏障,但多核系统中则不同)。
2025-06-22 22:40:13
1770
原创 永磁同步电机MRAS算法调整步骤和转速突变时的问题分析
该误差用于驱动参数调整,yr(t)为输入,G(p)为输出矩阵和前馈矩阵的综合, u(t)为KpG(p)的输入控制量, θ(t)为自适应调整增益也就是待调整的控制器参数,比如PID增益。在永磁同步电机FOC算法中,MARS控制是基于模型参考自适应的闭环算法,其核心是通过比较实际系统与参考模型的输出误差来调整控制器参数或转速辨识。:某电动汽车驱动系统测试表明,转速阶跃超过500 rpm/s时,MARS观测误差达22%,采用分级电流限幅与带宽自适应后误差降至4%。
2025-06-06 17:10:55
2016
原创 沉淀池加药凝絮剂改善出水浊度动态方程及PID参数整定
实际上,在M_flow矩阵中,我们并没有包含C_in(t)这一项。另外,输入项中还有双线性项:在B_x中,其(1,1)元素是Q_in(t)/V_i,所以当乘以U_1(t)=C_in(t)时,得到的是(Q_in(t)*C_in(t))/V_i,这是两个输入的乘积(双线性项)。-> 但是这里Q_in(t)也是输入,所以实际上第一项是 (1/V_i)*U_2(t)*U_1(t) (其中U_1=C_in, U_2=Q_in),这导致输入项中出现了输入与输入的乘积(双线性项),或者输入与状态的乘积(非线性项)。
2025-06-05 19:45:57
1522
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅