documentation
documentation copied to clipboard
Null checks in motor torque sim
Hello,
If you add null checks to your macros the file would work in libreoffice too.
I would do a pull request but I am pretty sure libreoffice might have mangled some other parts of the file.
This worked for me:
Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Function SingleCoilTorque(StepAngle As Double, RatedCurrent As Double, Torque As Double, Inductance As Double, Resistance As Double, RotorInertia As Double, InputVoltage As Double, DriveCurrent As Double, RPS As Double) As Double
if StepAngle = 0 or RatedCurrent = 0 then
SingleCoilTorque = 0
else
F_Coil = RPS * (360 / StepAngle) / 4
X_Coil = 2 * 3.1415 * F_Coil * Inductance / 1000
Z_Coil = X_Coil + Resistance
V_Gen = 2 * 3.1415 * RPS * (Torque / (100 * 1.414) / RatedCurrent)
If InputVoltage > V_Gen Then V_Avail = InputVoltage - V_Gen Else V_Avail = 0
I_Avail = V_Avail / Z_Coil
If I_Avail > DriveCurrent Then I_Actual = DriveCurrent Else I_Actual = I_Avail
Torque_Percent = I_Actual / RatedCurrent
T_1Coil = Torque_Percent * Torque / (100 * 1.414)
T_2Coil = T_1Coil * 1.414
V_Coil = I_Actual * Resistance
Power = (V_Coil + V_Gen) * I_Actual
SingleCoilTorque = T_1Coil * 100
end if
End Function
Function StepperPower(StepAngle As Double, RatedCurrent As Double, Torque As Double, Inductance As Double, Resistance As Double, RotorInertia As Double, InputVoltage As Double, DriveCurrent As Double, RPS As Double) As Double
if StepAngle = 0 or RatedCurrent = 0 then
StepperPower = 0
else
F_Coil = RPS * (360 / StepAngle) / 4
X_Coil = 2 * 3.1415 * F_Coil * Inductance / 1000
Z_Coil = X_Coil + Resistance
V_Gen = 2 * 3.1415 * RPS * (Torque / (100 * 1.414) / RatedCurrent)
If InputVoltage > V_Gen Then V_Avail = InputVoltage - V_Gen Else V_Avail = 0
I_Avail = V_Avail / Z_Coil
If I_Avail > DriveCurrent Then I_Actual = DriveCurrent Else I_Actual = I_Avail
Torque_Percent = I_Actual / RatedCurrent
T_1Coil = Torque_Percent * Torque / (100 * 1.414)
T_2Coil = T_1Coil * 1.414
V_Coil = I_Actual * Resistance
Power = (V_Coil + V_Gen) * I_Actual
StepperPower = Power
end if
End Function
Seconding this request. As-is, I can't use this resource at all!