刘工,我现在用一个Galil DMC-30012的单轴控制器来控制一个行程是10mm,编码器分辨率1微米的音圈电机。编码器是一个光栅尺,现在是做一个平面的手机屏触屏控制,音圈电机轴与手机屏幕接触的地方上安装了一个压力传感器,用于实时传回触压手机屏的接触压力。当触屏时电机定位到位位后,再根据压力传感器的压力反馈值,用PID控制音圈电机输出,使电机与手机屏接触压力控制在0.5g的力度内。现在问题有两个;
1、请问程序应该如果设计,是应该先做一个定位程序,到位后再进入PID;还是一开始就引用PID来定位,直到压力达到0.5g
2、现在电机是垂直安装于Z轴,电机往下运动输出定位值为负值,往上为正值,编码器反馈值方向与电机方向一致,只是每次定位都要输入一个负值(eg: PA-6000),请问这样对控制会不会有影响。
3、因为是第一次使用GALIL控制器,刘工是否可以写一段简单的程序供参考
1、请问程序应该如果设计,是应该先做一个定位程序,到位后再进入PID;还是一开始就引用PID来定位,直到压力达到0.5g
我想到的是,先定位,但是在定位的时候,以压力信号出现作为定位结束的依据,然后再对压力整定。
2、现在电机是垂直安装于Z轴,电机往下运动输出定位值为负值,往上为正值,编码器反馈值方向与电机方向一致,只是每次定位都要输入一个负值(eg: PA-6000),请问这样对控制会不会有影响。
没有影响
3、因为是第一次使用GALIL控制器,刘工是否可以写一段简单的程序供参考
这个,我还是觉得,不妨先确认:
1、对于整个检测系统来说,小于0.5g的力是可以稳定检测的,包括传感器的分辨率、电气传输的噪声大小、控制器的接收分辨率。
2、对于运动机构来说,0.5g的力是可以问个产生的。机械我不太熟,不知静摩擦力的大小是否会有很大的影响。
(如需要60g,控制器切换到AF后,开始为8000g左右然后再降到60g),PID值为KP=1,KI=0.05,KD=0,如果设大值系统稳定性会差。请问有什么办法可以解决峰峰值过大的问题。
先确认几个细节:
1、定位到位后,控制卡输出电压是多少? TT指令可查询
2、定位到位后,接收到的模拟电压是多少? MG_@AN[1]可查询
3、定位到位后,目标位置是多少? RP指令可查询
4、执行AF后,当前位置是多少? TP指令可查询
5、8000g压力,大致对应的控制卡输出电压是多少?
6、60g力,对应的虚拟位置是多少?控制卡接收的模拟电压是多少?
2、如果自己做算法,应该怎样将增量式PID公式做到程序里面去呢。
一般来说,是类似下面的程序,如果有必要,您自己再加上更多细节。
#PID
o=0
p=0
i=0
d=0
e1=0
max=9.9982
min=-9.9982
AT0
#LOOP
er=_ERA
p=er*kp
i=er*ki+i
d=(er-e1)*kd
e1=er
out=o-p-i-d
IF(out>max)
out=max
ENDIF
IF(out<min)
out=min
ENDIF
OFA=out
AT-5
JP#LOOP
回复内容:
对: 刘岩利 (如需要60g,控制器切换到AF后,开始为8000g左... 内容的回复!
您好刘工:1、您上面给的PID程序写到终端时提示 p=er*kp i=er*ki+i d=(er-e1)*kd 这几个地方变量错误,TC=9
2、因为我是按您说只要@AN[1]有值后便立即ST,MO,然后AF,所以下面的值都是转换为AF模式下所得到的数据。
a、定位到位后,控制卡输出电压是多少?
50g时,AF模式下为"-0.15"左右变化
80G时, -0.042
b、定位到位后,接收到的模拟电压是多少?
50g时,0.0024V(压力传感器输入为0-5V 分辨率1mV)
80G时 0.183
c、定位到位后,目标位置是多少?
50g时,RP=1
80G时 RP=125
d、执行AF后,当前位置是多少? TP指令可查询
50g时,TP为1-18内变动
80G时 TP=154(变动)
e、8000g压力,大致对应的控制卡输出电压是多少?,
8000g,按计算应为16V,在AF转换瞬间,可看到软件上@AN[1]值为4.988V,然后回到0.0024V
f、60g力,对应的虚拟位置是多少?控制卡接收的模拟电压是多少?
50g时,PA=1 控制卡接收电压为0.0024V
80G时,PA=125 0.183
程序如下,请刘工帮看看
#AUTO
MO
OE1
CE2
MT-1
KP5
KD64
KI1
#a
SH
JG -20000
FI
BG
AM
WT10
JG20000
BG
#LOOP
IF @AN[1]>0.1
JS #STOP
ENDIF
JP #LOOP
#af1
EN
#STOP
ST
WT100
MO
AF1
KP1
KD0
KI0.05
SH
PA125
BG
WT1000
JP #af1
EN
您好刘工:1、您上面给的PID程序写到终端时提示 p=er*kp i=er*ki+i d=(er-e1)*kd 这几个地方变量错误,TC=9
这大概是因为您没有给kp、ki、kd赋相应的值。您要做PID控制,总要有个增益系数吧。
e、8000g压力,大致对应的控制卡输出电压是多少?,
8000g,按计算应为16V,在AF转换瞬间,可看到软件上@AN[1]值为4.988V,然后回到0.0024V
我是问控制卡输出电压,不是问您的传感器输出电压。
另外,在您的程序执行过程中,突然增加的压力是在MO/SH指令时出现的,还是在BG指令时出现的?在BG指令之前,加入指令SP100(或者更小的数值),压力突增的情况是否会有所缓解?KP1改为KP0.125,压力突增的情况是否会有所缓解?是否需要OF指令大致平衡机构自身重力?