完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
/* =================================================================================
File name: RMP_CNTL.H ===================================================================================*/ #ifndef __RMP_CNTL_H__ #define __RMP_CNTL_H__ typedef struct { _iq TargetValue; // Input: Target input (pu) Uint32 RampDelayMax; // Parameter: Maximum delay rate (Q0) - independently with global Q _iq RampLowLimit; // Parameter: Minimum limit (pu) _iq RampHighLimit; // Parameter: Maximum limit (pu) Uint32 RampDelayCount; // Variable: Incremental delay (Q0) - independently with global Q _iq SetpointValue; // Output: Target output (pu) Uint32 EqualFlag; // Output: Flag output (Q0) - independently with global Q _iq Tmp; // Variable: Temp variable } RMPCNTL; /*----------------------------------------------------------------------------- Default initalizer for the RMPCNTL object. -----------------------------------------------------------------------------*/ #define RMPCNTL_DEFAULTS { 0, 5, _IQ(-10), _IQ(10), 0, 0, 0, 0, } /*------------------------------------------------------------------------------ RAMP Controller Macro Definition ------------------------------------------------------------------------------*/ #define RC_MACRO(v) v.Tmp = v.TargetValue - v.SetpointValue; /* 0.0000305 is resolution of Q15 */ if (_IQabs(v.Tmp) >= _IQ(0.0000305)) { v.RampDelayCount++ ; if (v.RampDelayCount >= v.RampDelayMax) { if (v.TargetValue >= v.SetpointValue) v.SetpointValue += _IQ(0.0000305); else v.SetpointValue -= _IQ(0.0000305); v.SetpointValue=_IQsat(v.SetpointValue,v.RampHighLimit,v.RampLowLimit); v.RampDelayCount = 0; } } else v.EqualFlag = 0x7FFFFFFF; #endif // __RMP_CNTL_H__ 看了半天没明白这个斜坡函数怎么使用的 |
|
相关推荐
3个回答
|
|
首先把SpeedRef赋值给TargetValue,当TargetValue与SetpointValue差值大于0.000035时,每执行RampDelayMax次RC_MARCO的时候,将TargetValue加上或减去0.000035,直至二者差值小于0.000035,此时判断为TargetValue=SetpointValue,EqualFlag赋值为0x7FFFFFFF,这样就产生了一个阶梯状的斜波
评分 |
|
|
|
本帖最后由 lonely旅行 于 2017-11-24 17:04 编辑
kiriha 发表于 2017-11-23 11:28 你确定是TargetValue加上或减去0.0000305?而不是SetpointValue? |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2343 浏览 0 评论
681 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2780 浏览 0 评论
3541 浏览 1 评论
1194 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:29 , Processed in 0.621967 second(s), Total 83, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号