您好,
由于MOTORWARE的例程框架整体使用IQ24格式进行计算,那么电流超过128A的系统请问如何解决?
我目前的猜测是将USER_IQ_FULL_SCALE_CURRENT_A 强制定义为 100A,在应对不同量程的电流传感器时,根据实际电流量程算出一个倍数。
比如:对于实际量程为200A的电流采样,那么200/100 = 2,此为转换因子。在其他计算中,以100A为基准,
对USER_MOTOR_MAX_CURRENT
USER_SYSTEM_INERTIA
USER_SYSTEM_FRICTION
全部相应的除以这个因子。再进行正常计算
比如实际上
USER_MOTOR_MAX_CURRENT == 200
USER_SYSTEM_INERTIA == 10
USER_SYSTEM_FRICTION == 5
FACTOR == 2
当做100A来计算时:
USER_MOTOR_MAX_CURRENT == 200/2 == 100
USER_SYSTEM_INERTIA == 10/2 == 5
USER_SYSTEM_FRICTION == 5/2 == 2.5
USER_IQ_FULL_SCALE_CURRENT_A == 100
gMotorVars.SpinTAC.VelCtlOutputMax_A == 100
我得计算目标值如果为100A,那么实际上是在200A的硬件环境下进行了100%的输出,那么实际上目标值也就成为了200A,请问这样处理是否会有潜在问题,或者我考虑不到的地方产生错误。
HeiHei:
由于MOTORWARE的例程框架整体使用IQ24格式进行计算,那么电流超过128A的系统请问如何解决?
首先,IQ24(A),这个A确实不能表达128,因为会导致越界。但是这个A你为什么要用代表实际电流值呢,加入你USER_IQ_FULL_SCALE_CURRENT_A 定义为100A,那么对于128A的值,此时A为128/100=1.28,即IQ(1.28)表示128A,IQ(1)表示100A
您好,
由于MOTORWARE的例程框架整体使用IQ24格式进行计算,那么电流超过128A的系统请问如何解决?
我目前的猜测是将USER_IQ_FULL_SCALE_CURRENT_A 强制定义为 100A,在应对不同量程的电流传感器时,根据实际电流量程算出一个倍数。
比如:对于实际量程为200A的电流采样,那么200/100 = 2,此为转换因子。在其他计算中,以100A为基准,
对USER_MOTOR_MAX_CURRENT
USER_SYSTEM_INERTIA
USER_SYSTEM_FRICTION
全部相应的除以这个因子。再进行正常计算
比如实际上
USER_MOTOR_MAX_CURRENT == 200
USER_SYSTEM_INERTIA == 10
USER_SYSTEM_FRICTION == 5
FACTOR == 2
当做100A来计算时:
USER_MOTOR_MAX_CURRENT == 200/2 == 100
USER_SYSTEM_INERTIA == 10/2 == 5
USER_SYSTEM_FRICTION == 5/2 == 2.5
USER_IQ_FULL_SCALE_CURRENT_A == 100
gMotorVars.SpinTAC.VelCtlOutputMax_A == 100
我得计算目标值如果为100A,那么实际上是在200A的硬件环境下进行了100%的输出,那么实际上目标值也就成为了200A,请问这样处理是否会有潜在问题,或者我考虑不到的地方产生错误。
laughing_C chang:
回复 HeiHei:
您应该是误解了我表达的意思,
现在原有例程中,假定120A,那么实际运用中那就是120(我全部是指IQ24格式)
所谓的128/100,是我设想的转换因子
或者说,如果现在USER_IQ_FULL_SCALE_CURRENT_A == 200
ST_SYSTEM_INERTIA == 100
ST_SYSTEM_FRICTION == 100
那么在实际计算过程中是否会有某些环节产生溢出
您好,
由于MOTORWARE的例程框架整体使用IQ24格式进行计算,那么电流超过128A的系统请问如何解决?
我目前的猜测是将USER_IQ_FULL_SCALE_CURRENT_A 强制定义为 100A,在应对不同量程的电流传感器时,根据实际电流量程算出一个倍数。
比如:对于实际量程为200A的电流采样,那么200/100 = 2,此为转换因子。在其他计算中,以100A为基准,
对USER_MOTOR_MAX_CURRENT
USER_SYSTEM_INERTIA
USER_SYSTEM_FRICTION
全部相应的除以这个因子。再进行正常计算
比如实际上
USER_MOTOR_MAX_CURRENT == 200
USER_SYSTEM_INERTIA == 10
USER_SYSTEM_FRICTION == 5
FACTOR == 2
当做100A来计算时:
USER_MOTOR_MAX_CURRENT == 200/2 == 100
USER_SYSTEM_INERTIA == 10/2 == 5
USER_SYSTEM_FRICTION == 5/2 == 2.5
USER_IQ_FULL_SCALE_CURRENT_A == 100
gMotorVars.SpinTAC.VelCtlOutputMax_A == 100
我得计算目标值如果为100A,那么实际上是在200A的硬件环境下进行了100%的输出,那么实际上目标值也就成为了200A,请问这样处理是否会有潜在问题,或者我考虑不到的地方产生错误。
laughing_C chang:
回复 HeiHei:
我已经发现了一个会产生溢出的MOTORWARE 的API,难道你们队用户的问题搁置这么长时间都不予以回复吗?