Slide 13
Slide 13 text
sakalib.com 12/14
おまけ② モータ動特性を考慮した仮想モータ軸
VAR
fbPlant : FB_TF2_EXE;
―――――――――――――――――――――――――――――――――――――――――――――――――――――――
TorqueActualValue := LREAL_TO_INT(FC_SAT( INT_TO_LREAL(TargetTorque), INT_TO_LREAL(MaxTorque) ));
dServoOutN := INT_TO_LREAL(TorqueActualValue) * dRatedTorqueMn * 1.0E-6;
IF ControlWord = 16#0F THEN
// Plant
fbPlant(
dIn := dServoOutN,
stTfState := stPlantState,
stTf2Inf := stPlantInf,
dOut => dActPosM,
stTfState1 => stPlantState
);
END_IF
PositionActualValue := LREAL_TO_DINT(dActPosM * dEncoderReso * 1.0E3);
Program: P_VIRTUAL_MOTORの一部抜粋
EtherCAT CiA402 drive profileに準拠したI/O
# Plant model
M = 0.0185
C = 0.7
K = 0
Pmechs = ctrl.tf([1.0], [M, C, K])
Pmechz = ctrl.c2d(Pmechs, Ts, method='zoh')
Pythonで定義した制御対象 (サーボモータ)の離散時間伝達関数を、
別に作成したVirtualMotor Project内で、制御器の実装と同様に実行している。