青 岛 大 学 学 报 ( 工 程 技 术 版 )
第 23 卷
绞车正转时 ,旋转编码器产生的脉冲信号 A 相脉冲比 B 相脉冲相位超前 90°,通过旋转编码器方向识别
电路后 ,产生脉宽约为 A (B) 脉宽的 (1/ 4~1/ 5) 的 A1′
相脉冲 ,并输入计数器的“U P”端 ;绞车反转时 ,A 相脉
冲比 B 相脉冲相位滞后 90°,通过方向识别电路后 ,产生脉宽约为 A (B) 脉宽的 (1/ 4~1/ 5) 的 B2′
相脉冲 ,并
输入计数器的“DN”端 。无论绞车正转还是反转 ,最后都通过 74L S245 选通传输给系统 CPU 。
2. 2. 3 计数和读数电路
系统计数电路采用 5 片可加减计数的 74193 计数器 。计数器的输入端直接与单片机的数据总线相连 ,
这样可通过单片机置数端“LDN”给计数器赋初值 。读数电路由 3 片 BCD 拨码盘 (8421 码) 并联在一起形成
拨码盘组 ,以实现 3 位十进制数的输入 ,可预设绞车放缆的长度 。
2. 2. 4 液晶显示电路
液晶显示电路选用 M G12864 液晶模块 (L CM) 。该液晶模块是一种将液晶显示器件 、
连接件 、
集成电
路 、
印制线路板 ( PCB) 、背光源及结构件装配在一起的组件 。M G12864 的数据输入口 ( DB0 ~ DB7) 与
ADuC812 的 P0 口相连 ,用于接收数据输入并进行显示 。
图
5
系统软件设计总体流程图
3
系统软件设计
3. 1 软件程序构成
整个系统在应用软件程序控制下工作 ,其主要程序包括 :
A/ D 采集程序 、
拨码盘读数程序 、
缆长计数程序 、
键盘程序 、
显
示程序 、
数字 PID 控制算法程序 、
D/ A 输出程序及串口通信程
序等 。软件程序设计在 Keil C 语言环境下完成 ,其总体流程
如图 5 所示 。
由于篇幅所限 ,下面仅对关键的数字 PID 控制程序设计
进行简要分析 。
3. 2 数字 PID 控制原理和程序流程
3. 2. 1 控制算法原理
PID 控制器是一种线性控制器 ,根据给定值
r( t)
与实际输
出值
c( t)
构成控制偏差
e( t)
=
r( t)
-
c( t)
其控制律为
u ( t) = k
p
e( t) +
1
t
i
∫
t
0
e( t)
d
t +
t
d
d
e
(
t
)
d
t
(1)
式中 ,
k
p
为比例系数 ;
u ( t)
为控制量 ;
t
i
为积分时间 ;
t
d
为微分时间 。
进行离散化数字处理 。以一系列的采样时刻点
k T ( k
= 0
,
1
,
2
,
…
, T
为采样周期
)
代表连续时间
t ,
以和
式代替积分
,
以增量代替微分
,
把
e( k T)
记为
e( k) , u ( k T)
记为
u ( k) ,
则式 (1) 可改写为数字 PID 位置式控制
算式
u ( k) = K
p
e( k) +
T
T
i
∑
k
j =
0
e( j) +
T
d
T
[ e( k) - e( k -
1
) ]
(2)
对应的数字 PID 增量式控制算式为
Δ
u ( k)
=
K
p
[ e( k)
-
e( k
- 1
) ]
+
T
T
i
e( k)
+
T
d
T
[ e( k)
- 2
e( k
- 1
)
+
e( k
- 2
) ]
(3)
为使控制算法简便 ,记
2
4