没有合适的资源?快使用搜索试试~ 我知道了~
首页安川7伺服代码解析,清晰版PDF
资源详情
资源评论
资源推荐

1
安川 7 代码解析
目录
一、电流环.......................................................................................................................................2
1.1 反馈电流计算....................................................................................................................3
1.2 相位计算及补偿................................................................................................................6
1.2.1 电角度的计算.........................................................................................................7
1.2.2 基于时间补偿的相位角度.....................................................................................7
1.2.3 基于最大速度转换的相位角补偿.......................................................................11
1.3 电流观测器.......................................................................................................................15
1.4 弱磁控制...........................................................................................................................20
1.5D 轴电流环计算...............................................................................................................33
1.6q 轴电流环........................................................................................................................35
1.7 电压补偿...........................................................................................................................42
1.8 过调制..............................................................................................................................4 8
1.9 死区补偿..........................................................................................................................54
1.10 转矩给定滤波器............................................................................................................62
1.10.1 陷波滤波器.........................................................................................................62
二.速度环.....................................................................................................................................67
2.1PI 控制...............................................................................................................................67
2.1.1 典型二型系统的设计...........................................................................................70
2.1.2 转速调节器............................................................................................................71
2.1.3 饱和作用...............................................................................................................72
2.1.4P‐PI 切换................................................................................................................73
2.2 速度环输出低通滤波器...................................................................................................75
2.3 速度脉动补偿..................................................................................................................80
2.4 摩擦补偿..........................................................................................................................81
2.5 速度反馈计算...................................................................................................................85
2.5.1 相位补偿速度观测器...........................................................................................85
2.6 摩擦补偿(扰动观测器)..............................................................................................88
2.6.1 扰动观测器原理分析............................................................................................89
2.7A 型振动抑制(中频振动抑制)....................................................................................92
三 位置环.......................................................................................................................................93
3.1 位置指令...........................................................................................................................93
3.1.1
低频振动抑制.......................................................................................................95
3.2 位置环计算......................................................................................................................99
四.重要功能模块.......................................................................................................................100
4.1 模型追踪控制................................................................................................................101
4.2 基本中间参数计算处理................................................................................................105
4.3 最大电流的计算............................................................................................................105

2
4.4 标幺化基值选取............................................................................................................105
4.5 免调整功能....................................................................................................................106
一、电流环
电流环采用了零极点对消 PI 整定,电压方程解耦,弱磁,死区补偿,相位补偿,过调制,
滤波器,电流观测器等技术。
电流环参数 PI 整定,基本是根据电流环数学模型,将零极点最大时间常数进行对消,简化
划为I型系统[1]
W
s
K
sTs 1
其闭环传递函数可写成:
W
s
W
s
W
s
1
ω
s
2ξω
sω
其中ω
固有角频率;
ξ
阻尼比或称衰减系数。
则电流环开环传递函数为:
G
s
K
K
T
s1
T
s
T
s1
T
s1
式中K
和T
分别为电机电枢回路的增益和电气时间常数,K
=1/R, T
=L/R;由于T
<<T
,采
用零极点对消,取积分时间常数为T
。
T
T
L
R
K
Lω
ω
为截止频率,只需设置截止频率,就可得到电流环控制器初始参数,然后给定周期性的
激励指令进行堵转,根据评价指标,进行迭代,选出最优截止频率。
电流环在 MpIntHost( void )中处理。

3
1.1 反馈电流计算
反馈电流取值在此函数中实现
inline void
ADConvDataLoad( MICRO_AXIS_HANDLE *AxisRsc )。
计算方式为
IntAdV.IuInData = IntAdP.Kcu * ( IUS + IntAdV.IuOffset ) / 2^8
IntAdV.IvInData = IntAdP.Kcv * ( IVS + IntAdV.IvOffset ) / 2^8
Kcu 为采样系数,IuOffset 为零漂检测值,IuInData 为电流标幺化值
int chess_storage(PFREG:0x6D0) IuAD;
swk = mulshr(IuAD, ONE, 2);
AxisRsc->IntAdV.IuInData = mulshr((swk + AxisRsc->IntAdV.IuOffset),
AxisRsc->IntAdP.Kcu, 8 );
IuAD 为寄存器的值,AD 采样不知道是否为 16 位采样,IuOffset,Kcu 有在 void
MpIntHost( void )中处理
AxisRscH->IntAdV.IuOffset = AxisRscH->AdinV.IuOffsetIn;
AxisRscH->IntAdV.IvOffset = AxisRscH->AdinV.IvOffsetIn;
AxisRscH->IntAdP.Kcu = AxisRscH->AdinV.KcuIn;
AxisRscH->IntAdP.Kcv = AxisRscH->AdinV.KcvIn;
static LONG LpxLcdCurrentManAdjExe(FUNMSG *Fmsg) FnMotorCurrentAdj.c
零漂检测函数,KcuIn 类似于功能码进行设置。
AxisRscH = &AxisHdl[ax_noH];
AxisRscH->IntAdV.IqMon = AxisRscH->IntAdV.IqRef; /* for CPU monitor */
/*-----------------------------------------------------------------------------*/
/* キャリア周波数切り替え処理 <V057> <V075> */
/*-------------------------------------------------------------------------------*/
if ( AxisRscH->IntAdP.CrFreq != AxisRscH->IntAdV.CrFreqW )
{
AxisRscH->IntAdV.CrFreqW = AxisRscH->IntAdP.CrFreq; /* Carrier Buffer Change*/
AxisRscH->SvIpRegW->CRFRQ = AxisRscH->IntAdV.CrFreqW; /* Carrier Freq
. Change */
}
此段代码用于 q 轴电流显示,载波频率改变调节。
/*-----------------------------------------------------------------------------*/
/* input from host */
/*-----------------------------------------------------------------------------*/
/* Check Current Ajust Request */
ActiveAxis = 0;
#ifdef MULTI_AXIS /* 多軸処理有効 */
for( ax_noH = 0; (SHORT)ax_noH < AxisNum; ax_noH++ )
#else //#ifdef
MULTI_AXIS

4
ax_noH = 0;
#endif //#ifdef MULTI_AXIS
{
AxisRscH = &AxisHdl[ax_noH];
//<2>#ifdef
PREG_DEF
// if ( ( CTSTR & RLOCK ) == 0 )
if ( ( AxisRscH->CtrlStsIn & RLOCK ) == 0 )
{
ActiveAxis |= 0x01 << ax_noH; /* ビット登録 判断是否需要零漂检测 */
}
}
if( ActiveAxis != 0 )
{ /* 電流検出調整要求あり 若零漂检出更新相关变量值 */
/* ★H/Wアクセスが共通のものをまとめたい!!0軸目って書くのが格好悪い★ */
DIX = 0x0; /* disable interupt
<V112> */
#ifdef MULTI_AXIS /* 多軸処理有効 */
for( ax_noH = 0; (SHORT)ax_noH < AxisNum; ax_noH++ )
#else //#ifdef
MULTI_AXIS
ax_noH = 0;
#endif //#ifdef MULTI_AXIS
{
AxisRscH = &AxisHdl[ax_noH];
if( 0 != (ActiveAxis & (0x01 << ax_noH)) )
{
AxisRscH->IntAdV.IuOffset = AxisRscH->AdinV.IuOffsetIn; /* IntAdV.IuOffset
<-- AdinV.IuOffsetIn */
AxisRscH->IntAdV.IvOffset = AxisRscH->AdinV.IvOffsetIn; /* IntAdV.IvOffset
<-- AdinV.IvOffsetIn */
AxisRscH->IntAdP.Kcu = AxisRscH->AdinV.KcuIn; /* IntAdP.Kcu <--
AdinV.KcuIn */
AxisRscH->IntAdP.Kcv = AxisRscH->AdinV.KcvIn; /* IntAdP.Kcv <--
AdinV.KcvIn */
}
}
/* ★H/Wアクセスが共通のものをまとめたい!!0軸目って書くのが格好悪い★ */
EIX = 0x0; /* enable interupt
<V112> */
}
此段程序目的在于零漂检测判断条件,更新相关变量值

5
#define RLOCK 0x0008 /* bit.3 : Transer register lock status */
USHORT zadjiu; /* PnE50 : 電流検出ゼロ調(U相) */
USHORT zadjiv; /* PnE51 : 電流検出ゼロ調(V相) */
DBYTEX gadjiu_v; /* PnE52 : 電流検出ゲイン調(U,V相) */
/*-------------------------------------------------------------------------------*/
/* 電流検出ゼロ調 */
/*-------------------------------------------------------------------------------*/
/* U相電流ゼロ調 U相电流调零 零漂检测幅值 集成芯片处理零漂*/
kx = (SHORT)(uCfgPrm->zadjiu);
rc |= LpxSetPrmToASIC( &(pAsicMicroReg->AdinV.IuOffsetIn), kx, NO_LMT_CHK );
/*-------------------------------------------------------------------------------*/
/* V相電流ゼロ調 */
kx = (SHORT)(uCfgPrm->zadjiv);
rc |= LpxSetPrmToASIC( &(pAsicMicroReg->AdinV.IvOffsetIn), kx, NO_LMT_CHK );
/*----------------------------------------------------------------------------*/
/* 電流検出ゲイン調 电流检测增益调整 */
/*-------------------------------------------------------------------------------*/
/* U相電流ゲイン調 */
kx = (CHAR)uCfgPrm->gadjiu_v.b.l + 0x100;
rc |= LpxSetPrmToASIC( &(pAsicMicroReg->AdinV.KcuIn), kx, NO_LMT_CHK );
/*--------------------------------------------------------------------------*/
/* V相電流ゲイン調 */
kx = (CHAR)uCfgPrm->gadjiu_v.b.h + 0x100;
rc |= LpxSetPrmToASIC( &(pAsicMicroReg->AdinV.KcvIn), kx, NO_LMT_CHK );
零漂检测以及电流采样系数 PnE67 均有集成芯片完成,其检测值不知道,采样系数不知道,但
做法应该是一样的,根据不同的功率等级,选择采样电阻,上电初始化进行零漂检测或者伺服
OFF 再进行一次检测提高精度要求。
AxisRscH = &AxisHdl[ax_noH];
AxisRscH->PhaseV.PhaseH = AxisRscH->AdinV.PhaseHIn; /* */
AxisRscH->PhaseV.PhaseIp = AxisRscH->PhaseV.PhaseIpIn; /* 位相補間量 <V112> */
AxisRscH->PhaseV.PhaseIpF = AxisRscH->PhaseV.PhaseIpFIn; /* 位相補間フラグ <V112> */
AxisRscH->PhaseV.PhaseIpFIn = 1; /* 位相補間フラグセット <V112> */
AxisRscH->WeakFV.Vel = AxisRscH->AdinV.VelIn; /* */
AxisRscH->IntAdV.TLimP = AxisRscH->AdinV.TLimPIn; /* */
AxisRscH->IntAdV.TLimM = AxisRscH->AdinV.TLimMIn; /* */
AxisRscH->IntAdP.Kvv = AxisRscH->IntAdP.KvvIn; /* for AVR */
AxisRscH->VcmpV.VdRef = AxisRscH->AdinV.VdRefIn; /* */
AxisRscH->VcmpV.VqRef = AxisRscH->AdinV.VqRefIn; /* */
AxisRscH->IntAdV.IqDist = AxisRscH->IntAdV.IqDistIn; /* <V224> */
AxisRscH->WeakFV.WfKpV.s[0] = AxisRscH->WeakFV.WfKpVLIn; /* 電圧FB比例ゲイン(下位16bit)
<V214> */
AxisRscH->WeakFV.WfKpV.s[1] = AxisRscH->WeakFV.WfKpVHIn; /* 電圧FB比例ゲイン(上位
16bit) <V214> */
剩余111页未读,继续阅读












安全验证
文档复制为VIP权益,开通VIP直接复制

评论3