版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【分享】增量式PID的stm32实现,整定过程 · 发消息1 感谢大家最近的帮忙,让我顺利做完增量PID功能,虽然PID不是什么牛逼的东西,但是真心希望以后刚刚接触这块的人能尽快进入状态。也下面我分享一下近期的这些工作吧。欢迎大家批评指点 首先说说增量式PID的公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个公式变换来得,不同的是系数的差异。资料上比较多的是:还有一种是:感觉第二种的Kp Ki Kd比较清楚,更好理解,下面介绍的就以第二种来吧。(比例、积分、微分三个环节的作用这里就详细展开,百度会有很多)硬件部分:控制系统的控制对象是4个空心杯直流电机,电机带光电编
2、码器,可以反馈转速大小的波形。电机驱动模块是普通的L298N模块。芯片型号,STM32F103ZET6软件部分:PWM输出:TIM3,可以直接输出4路不通占空比的PWM波PWM捕获:STM32除了TIM6 TIM7其余的都有捕获功能,使用TIM1 TIM2 TIM4 TIM5四个定时器捕获四个反馈信号PID的采样和处理:使用了基本定时器TIM6,溢出时间就是我的采样周期,理论上T越小效果会越好,这里我取20ms,依据控制对象吧,如果控制水温什么的采样周期会是几秒几分钟什么的。上面的PWM输出和捕获关于定时器的设置都有例程,我这里是这样的:TIM3输出四路PWM,在引脚 C 的 GPIO_Pin
3、_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9输出四路捕获分别是TIM4 TIM1 TIM2 TIM5 ,对应引脚是: PB7 PE11 PB3 PA1高级定时器tim1的初始化略不同,它的中断”名称“和通用定时器不同,见代码:1. /*功能名称IM3_PWM_Init(u16 arr,u16 psc)2. 描述 TIM3产生四路PWM3. *
4、/4. void TIM3_PWM_Init(u16 arr,u16 psc)5. 6. GPIO_InitTypeDef GPIO_InitStructure;7. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;8. TIM_OCInitTypeDef TIM_OCInitStructure;9. &
5、#160; 10.11. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);12. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); /使能GPIO外设和AFIO复用功能模块时钟使能13. 14.
6、60; GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); /Timer3全映射 GPIOC-> 6,7,8,9
7、0; /用于TIM3的CH2输出的PWM通过该LED显示15.16. /设置该引脚为复用输出功能,输出TIM3 CH1 CH2 CH3 CH4 的PWM脉冲波形17. GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6 | GPIO_Pin_7
8、| GPIO_Pin_8 | GPIO_Pin_9; /初始化GPIO18. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出19. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;20. GPIO_Init(GPIOC, &GPIO_InitStructure);21. &
9、#160; GPIO_ResetBits(GPIOC,GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);/默认电机使能端状态:不使能 22.23. TIM_TimeBaseStructure.TIM_Period = arr; /设置在下一个更新事件装入活动的自动重装载寄存器周期的值24. TIM_TimeBaseStructure.TIM_Prescaler =psc; /设置用来作为TIMx时钟频率除
10、数的预分频值 这里是72分频,那么时钟频率就是1M 25. TIM_TimeBaseStructure.TIM_ClockDivision = 0; /设置时钟分割:TDTS = Tck_tim26. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /TIM向上计数模式27. TIM_TimeBaseInit(TI
11、M3, &TIM_TimeBaseStructure); /根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位28. 29. 30. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; /选择定时器模式:TIM脉冲宽度调制模式131. TIM_OCInitSt
12、ructure.TIM_OutputState = TIM_OutputState_Enable; /比较输出使能32. TIM_OCInitStructure.TIM_Pulse = 0; /设置待装入捕获比较寄存器的脉冲值33. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /输出极性:TIM输出比较极性高34. 35.
13、60; TIM_OC1Init(TIM3, &TIM_OCInitStructure); /根据TIM_OCInitStruct中指定的参数初始化外设TIMx36. TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIMx在CCR1上的预装载寄存器37. 38. 39.
14、0; TIM_OC2Init(TIM3, &TIM_OCInitStructure); /根据TIM_OCInitStruct中指定的参数初始化外设TIMx40. TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIMx在CCR2上的预装载寄存器41. 42. TIM_OC3Init(TIM3, &
15、TIM_OCInitStructure); /根据TIM_OCInitStruct中指定的参数初始化外设TIMx43. TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIMx在CCR3上的预装载寄存器44. 45. TIM_OC4Init(TIM3, &TIM_OCInitStructure);
16、/根据TIM_OCInitStruct中指定的参数初始化外设TIMx46. TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIMx在CCR4上的预装载寄存器47. 48. TIM_ARRPreloadConfig(TIM3, ENABLE); /使能TIMx在ARR上的预装载寄存器49. 50
17、.51. TIM_Cmd(TIM3, ENABLE); /使能TIMx外设52.53.54. 55.56.57.58. /*功能名称TIM4_PWMINPUT_INIT(u16 arr,u16 psc)59. 描述 PWM输入初始化*/60.61. void TIM4_PWMINPUT_INIT(u16 arr,u16 psc)62. 63. 64. TIM_Tim
18、eBaseInitTypeDef TIM_TimeBaseStructure; /TIM的初始化结构体65. NVIC_InitTypeDef NVIC_InitStructure; /中断配置66. TIM_ICInitTypeDef
19、; TIM4_ICInitStructure; /TIM4 PWM配置结构体67. GPIO_InitTypeDef GPIO_InitStructure; /IO口配置结构体68.69. &
20、#160; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); /Open TIM4 clock70. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); /open gpioB clock71.72. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
21、 /GPIO 773. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /上拉输入74. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;75. GPIO_Init(GPIOB, &GPIO_InitStructure);76.77.
22、60; TIM_TimeBaseStructure.TIM_Period = arr; /设置在下一个更新事件装入活动的自动重装载寄存器周期的值 78. TIM_TimeBaseStructure.TIM_Prescaler =psc; /设置用来作为TIMx时钟频率除数的预分频值 79. TIM_TimeBaseStructure.TIM_ClockDivision = 0; /设置时钟分割:TDTS = Tc
23、k_tim80. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /TIM向上计数模式81. TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); /根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位82.83. 84.
24、 /*配置中断优先级*/85. NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn; 86. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;87. NVIC_InitStructu
25、re.NVIC_IRQChannelSubPriority = 1;88. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;89. NVIC_Init(&NVIC_InitStructure);90.91. TIM4_ICInitStructure.TIM_Channel = TIM_Channel_2; 92. &
26、#160; TIM4_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; 93. TIM4_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 94. TIM4_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; 95. TIM4_ICInitStructure.T
27、IM_ICFilter = 0x3; /Filter:过滤96.97. TIM_PWMIConfig(TIM4, &TIM4_ICInitStructure); /PWM输入配置 98. TIM_SelectInputTrigger(TIM4, TIM_TS_TI2FP2); /选择有效输入端
28、160; 99. TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Reset); /配置为主从复位模式100. TIM_SelectMasterSlaveMode(TIM4, TIM_MasterSlaveMode_Enable);/启动定时器的被动触发
29、 101. TIM_ITConfig(TIM4, TIM_IT_CC2|TIM_IT_Update, ENABLE); /中断配置102. TIM_ClearITPendingBit(TIM4, TIM_IT_CC2|TIM_IT_Update); /清除中断标志位103. TIM_Cmd(TIM4, ENABLE);&
30、#160; 104. 105.106.107. void TIM4_IRQHandler(void)108. 109.110. if (TIM_GetITStatus(TIM4, TIM_IT_CC2) != RESET)/捕获1发生捕获事件111.
31、 112. duty_TIM4 = TIM_GetCapture1(TIM4); /采集占空比 113.
32、60; if (TIM_GetCapture2(TIM4)>600) period_TIM4 = TIM_GetCapture2(TIM4);/简单的处理114.
33、 CollectFlag_TIM4 = 0; 115. 116. TIM_ClearITPendingBit(TIM4, TIM_IT_CC2
34、|TIM_IT_Update); /清除中断标志位117. 118.119.120. /*功能名称TIM1_PWMINPUT_INIT(u16 arr,u16 psc)121. 描述 PWM输入初始化*/122.123. void TIM1_PWMINPUT_INIT(u16 arr,u16 psc)124. 125. 126. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
35、 /TIM的初始化结构体127. NVIC_InitTypeDef NVIC_InitStructure; /中断配置128. TIM_ICInitTypeDef TIM1_ICInitStructure;
36、 /PWM配置结构体129. GPIO_InitTypeDef GPIO_InitStructure; /IO口配置结构体130.131. RCC_APB2PeriphClockCmd(RCC_APB2Per
37、iph_TIM1, ENABLE); /Open TIM1 clock132. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); /open gpioE clock133. GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE); /Timer1完全重映射 TIM1_CH2->PE11 134.
38、 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; /GPIO 11135. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /上拉输入136. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50
39、MHz;137. GPIO_Init(GPIOE, &GPIO_InitStructure);138.139. TIM_TimeBaseStructure.TIM_Period = arr; /设置在下一个更新事件装入活动的自动重装载寄存器周期的值 140. TIM_TimeBaseStructure.TIM_Prescaler =psc; /设置用来作为TIMx时钟频率除数的预分频值 141.
40、 TIM_TimeBaseStructure.TIM_ClockDivision = 0; /设置时钟分割:TDTS = Tck_tim142. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /TIM向上计数模式143. TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); /根据TIM_TimeB
41、aseInitStruct中指定的参数初始化TIMx的时间基数单位144.145. 146. /*配置中断优先级*/147. NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn; /TIM1捕获中断 &
42、#160; 148. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;149. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;150. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;151. NVIC_Init(&NVIC_InitStructure);152.153. TIM1_ICInitStruc
43、ture.TIM_Channel = TIM_Channel_2; 154. TIM1_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; 155. TIM1_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
44、60; 156. TIM1_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; 157. TIM1_ICInitStructure.TIM_ICFilter = 0x03; /Filter:过滤158.159. TIM_PWMIConfig(TIM1, &TIM1_ICInitStructure); /PWM输入配置
45、160; 160. TIM_SelectInputTrigger(TIM1, TIM_TS_TI2FP2); /选择有效输入端 161. TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Reset); /配置为主从复位模式162. TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMo
46、de_Enable);/启动定时器的被动触发 163. / TIM_ITConfig(TIM1, TIM_IT_CC2|TIM_IT_Update, ENABLE); /中断配置164.
47、 TIM_ITConfig(TIM1, TIM_IT_CC2, ENABLE); /通道2 捕获中断打开165. /TIM_ClearITPendingBit(TIM1, TIM_IT_CC2|TIM_IT_Update); /清除中断标志位166. TIM_Cmd(TIM1, ENABLE); 167. 168.169.170. void TIM1_CC_IRQHandler(void)171. 172.173. 174. &
48、#160; if (TIM_GetITStatus(TIM1, TIM_IT_CC2) != RESET)/捕获1发生捕获事件175. 176.
49、60; duty_TIM1 = TIM_GetCapture1(TIM1); /采集占空比 177.
50、; if (TIM_GetCapture2(TIM1)>600) period_TIM1 = TIM_GetCapture2(TIM1);178. CollectF
51、lag_TIM1 = 0;179. 180. 181. TIM_ClearITPendingBit(TIM1, TIM_IT_CC2|TIM_IT_Up
52、date); /清除中断标志位182. 183.184.185. /*功能名称TIM2_PWMINPUT_INIT(u16 arr,u16 psc)186. 描述 PWM输入初始化*/187.188. void TIM2_PWMINPUT_INIT(u16 arr,u16 psc)189. 190. 191. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
53、60; /TIM的初始化结构体192. NVIC_InitTypeDef NVIC_InitStructure; /中断配置193. TIM_ICInitTypeDef TIM2_ICInitStructure;
54、160; /TIM2 PWM配置结构体194. GPIO_InitTypeDef GPIO_InitStructure; /IO口配置结构体195.196. RCC_APB1PeriphClockCmd(RCC_A
55、PB1Periph_TIM2, ENABLE); /Open TIM2 clock197. / RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); /open gpioB clock198. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); /使能GPIO外设和AFIO复用功能模块时钟199. GPIO_PinRemapCon
56、fig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); /关闭JTAG200. GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE); /Timer2完全重映射 TIM2_CH2->PB3201.202. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
57、 /GPIO 3203. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /浮空输入 上拉输入204. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;205.
58、 GPIO_Init(GPIOB, &GPIO_InitStructure);206.207. TIM_TimeBaseStructure.TIM_Period = arr; /设置在下一个更新事件装入活动的自动重装载寄存器周期的值 208. TIM_TimeBaseStructure.TIM_Prescaler =psc; /设置用来作为TIMx时钟频率除数的预分频值 209.
59、; TIM_TimeBaseStructure.TIM_ClockDivision = 0; /设置时钟分割:TDTS = Tck_tim210. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /TIM向上计数模式211. TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /根据TIM_TimeBaseInitStruct中指定的参数初
60、始化TIMx的时间基数单位212.213. 214. /*配置中断优先级*/215. NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; 216. NVIC_InitStructure
61、.NVIC_IRQChannelPreemptionPriority = 1;217. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;218. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;219. NVIC_Init(&NVIC_InitStructure);220.221. TIM2_ICInitStructure.TIM_Channel = TIM_Channel_2; &
62、#160; 222. TIM2_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; 223. TIM2_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 224. TIM2_ICInitStr
63、ucture.TIM_ICPrescaler = TIM_ICPSC_DIV1; 225. TIM2_ICInitStructure.TIM_ICFilter = 0x3; /Filter:过滤226.227. TIM_PWMIConfig(TIM2, &TIM2_ICInitStructure); /PWM输入配置 228. TIM_Selec
64、tInputTrigger(TIM2, TIM_TS_TI2FP2); /选择有效输入端 229. TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); /配置为主从复位模式230. TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);/启动定时器的被动触发
65、 231. TIM_ITConfig(TIM2, TIM_IT_CC2|TIM_IT_Update, ENABLE); /中断配置232. TIM_ClearITPendingB
66、it(TIM2, TIM_IT_CC2|TIM_IT_Update); /清除中断标志位233. TIM_Cmd(TIM2, ENABLE); 234. 235.236.237. void TIM2_IRQHandler(void)238. 239. 240. if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)/捕获1发生捕获事件241
67、. 242. duty_TIM2 = TIM_GetCapture1(TIM2);
68、160; /采集占空比 243. if (TIM_GetCapture2(TIM2)>600) period_TIM2
69、; = TIM_GetCapture2(TIM2);244. CollectFlag_TIM2 = 0;245.
70、 246. 247. TIM_ClearITPendingBit(TIM2, TIM_IT_CC2|TIM_IT_Update); /清除中断标志位248. 249.250. /*功能名称TIM5_PWMINPUT_INI
71、T(u16 arr,u16 psc)251. 描述 PWM输入初始化*/252.253. void TIM5_PWMINPUT_INIT(u16 arr,u16 psc)254. 255. 256. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /TIM的初始化结构体257. &
72、#160; NVIC_InitTypeDef NVIC_InitStructure; /中断配置258. TIM_ICInitTypeDef TIM5_ICInitStructure; /TIM4 PW
73、M配置结构体259. GPIO_InitTypeDef GPIO_InitStructure; /IO口配置结构体260.261. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); /Open T
74、IM4 clock262. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /open gpioB clock263.264. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; /GPIO 1265. GPIO_InitStructure.GPIO_Mode = &
75、#160;GPIO_Mode_IPU; /浮空输入 上拉输入266. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;267. GPIO_Init(GPIOA, &GPIO_InitStructure);268.269. TIM_TimeBaseStructure.TIM_Period = arr; /设置在下一个更新事件装入活动的自动重装载寄存器周期的值&
76、#160; 270. TIM_TimeBaseStructure.TIM_Prescaler =psc; /设置用来作为TIMx时钟频率除数的预分频值 271. TIM_TimeBaseStructure.TIM_ClockDivision = 0; /设置时钟分割:TDTS = Tck_tim272. TIM_TimeBaseStructure.TIM_CounterMode = TIM_Cou
77、nterMode_Up; /TIM向上计数模式273. TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); /根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位274.275. 276. /*配置中断优先级*/277. NVIC_InitStructure.NVI
78、C_IRQChannel = TIM5_IRQn; 278. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;279. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;280. NVIC_InitStructure.NVIC_IR
79、QChannelCmd = ENABLE;281. NVIC_Init(&NVIC_InitStructure);282.283. TIM5_ICInitStructure.TIM_Channel = TIM_Channel_2; 284. TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;&
80、#160; 285. TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 286. TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; 287. TIM5_ICInitStructure.TIM_ICFilter = 0x3; /Filter:过滤288.289. TIM_PWM
81、IConfig(TIM5, &TIM5_ICInitStructure); /PWM输入配置 290. TIM_SelectInputTrigger(TIM5, TIM_TS_TI2FP2); /选择有效输入端 291. TIM_SelectSlaveMode(TIM5,
82、TIM_SlaveMode_Reset); /配置为主从复位模式292. TIM_SelectMasterSlaveMode(TIM5, TIM_MasterSlaveMode_Enable);/启动定时器的被动触发
83、293. TIM_ITConfig(TIM5, TIM_IT_CC2|TIM_IT_Update, ENABLE); /中断配置294. TIM_ClearITPendingBit(TIM5, TIM_IT_CC2|TIM_IT_Update); /清除中断标志位295. TIM_Cmd(TIM5, ENABLE); 296. 297.298.299. void TIM5_IRQHandler(void)300. 301
84、. 302. if (TIM_GetITStatus(TIM5, TIM_IT_CC2) != RESET)/捕获1发生捕获事件303. 304.
85、160; duty_TIM5 = TIM_GetCapture1(TIM5); /采集占空比 305.
86、60; if (TIM_GetCapture2(TIM5)>600) period_TIM5 = TIM_GetCapture2(TIM5);306.
87、 CollectFlag_TIM5 = 0;307. 308. 309.
88、0; TIM_ClearITPendingBit(TIM5, TIM_IT_CC2|TIM_IT_Update); /清除中断标志位310. 311.复制代码PID部分:准备部分:先定义PID结构体:1.2. typedef struct 3. 4. int setpoint;/设定目标5. int sum_error;/误差累计6. float proportion ;/比例常数7. float integral ;/积分常数8. float derivative;/微分常数9. int last_error;/e-110
89、. int prev_error;/e-211. PIDtypedef;复制代码这里注意一下成员的数据类型,依据实际需要来定的。在文件中定义几个关键变量:1. float Kp = 0.32 /比例常数2. float Ti = 0.09 ; /积分时间常数3. float Td = 0.0028 ; /微分时间常数4. #define T 0.02 /采样周期5. #define Ki Kp*(T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024标准户外广告合同格式
- 2024补偿贸易合同贸易合同范本
- 2024年Data Center Colocation Services Agreement(数据中心托管服务合同)
- 2024-2025学年高中地理第一章人口的变化单元评价含解析新人教版必修2
- 2024-2025学年新教材高中语文第三单元10兰亭集序课后习题含解析部编版选择性必修下册
- 2024-2025学年高考数学一轮复习专题6.5数列的综合应用知识点讲解文科版含解析
- 2024-2025学年高中化学第三章金属及其化合物1第2课时金属与酸和水的反应铝与氢氧化钠溶液的反应课时作业含解析新人教版必修1
- 2024-2025学年新教材高中生物第二章组成细胞的分子第2节细胞中的无机物1教案新人教版必修1
- 2024-2025学年高中语文作业12报任安书节选含解析苏教版必修5
- 2024-2025学年新教材高中英语Unit2ExploringEnglishPeriod2Understandingideas2学案外研版必修第一册
- 声光影的内心感动:电影视听语言学习通章节答案期末考试题库2023年
- 绿色物流阶段测试试题及答案
- 进口中药资质要求及申报手续
- 新时代高职英语(基础模块)Unit1
- 初中研究性学习报告(通用17篇)
- 人教版九年级数学下册 (相似三角形的判定)相似课件(第3课时)
- MBTI性格测评-课件
- 口腔牙体牙髓病例展示
- 爆款到品类:从理想L9看理想汽车的产品理念
- 历史文化名城西安城市课件
- 中药审方-中药饮片处方审查(中药调剂技术课件)
评论
0/150
提交评论