2. 静态转矩补偿计算
任务定义
在卷绕类张力控制系统中,当牵引辊与收卷辊之间存在垂直高度差时,材料自重会在张力闭环之外叠加一个恒定偏置力,导致实际张力偏离设定值。本案例要求:给定材料参数与设备几何尺寸,计算静态转矩补偿值,并在张力控制前馈通道中实现该补偿,使材料在静止或匀速运行状态下实际张力等于设定张力。
物理模型与计算式
设收卷辊中心与牵引辊中心的高度差为 Δh(收卷辊较高时为正),两辊水平间距为 L,材料线密度为 ρ(kg/m),重力加速度 g=9.81 m/s²。材料在牵引辊与收卷辊之间形成悬垂段,其自重沿材料方向的分量即为静态张力偏置。当悬垂角较小时(工程常见情况),该偏置力近似为:
T_offset = ρ · g · Δh · (L / sqrt(L² + Δh²))
若材料从牵引辊水平进入后向下或向上倾斜至收卷辊,则实际张力 T_actual = T_set + T_offset(收卷辊高于牵引辊时,材料自重帮助拉紧,需减小输出转矩;反之需增大)。静态转矩补偿量为:
M_comp = T_offset · R
其中 R 为收卷辊当前卷径半径(m)。补偿方向:当收卷辊高于牵引辊时,M_comp 为负(减小电机输出转矩);反之取正。
代码实现
#include <stdio.h>
#include <math.h>
#define G 9.81f
typedef struct {
float rho; /* 材料线密度 kg/m */
float L; /* 水平间距 m */
float dh; /* 高度差 m,收卷辊高于牵引辊为正 */
float R; /* 当前卷径半径 m */
float T_set; /* 设定张力 N */
} StaticCompParam;
/* 计算静态张力偏置和补偿转矩 */
void static_comp_calc(const StaticCompParam *p, float *T_offset, float *M_comp) {
float span = sqrtf(p->L * p->L + p->dh * p->dh);
/* 材料自重沿料方向的分量 */
*T_offset = p->rho * G * p->dh * (p->L / span);
/* 补偿转矩 = 偏置力 × 卷径,方向与dh相反 */
*M_comp = -(*T_offset) * p->R;
}
int main() {
StaticCompParam param = {
.rho = 0.05f, /* 0.05 kg/m */
.L = 1.2f, /* 1.2 m */
.dh = 0.4f, /* 收卷辊高于牵引辊 0.4 m */
.R = 0.15f, /* 当前卷径半径 0.15 m */
.T_set = 50.0f /* 设定张力 50 N */
};
float T_off, M_c;
static_comp_calc(¶m, &T_off, &M_c);
printf("静态张力偏置: %.3f N\n", T_off);
printf("静态转矩补偿: %.4f N·m\n", M_c);
printf("补偿后实际张力: %.3f N\n", param.T_set + T_off);
return 0;
}
落地与验证
编译运行:
gcc -o static_comp static_comp.c -lm
./static_comp
预期输出(由给定输入直接推出):
静态张力偏置: 1.539 N
静态转矩补偿: -0.2309 N·m
补偿后实际张力: 51.539 N
验证方法:将 M_comp 作为前馈量叠加到张力环输出转矩上(符号与速度环方向一致时取反)。在设备静止或匀速运行状态下,用张力传感器读取实际张力,若实际张力与设定张力偏差小于传感器精度允许范围,则补偿有效。判定标准:|T_actual - T_set| ≤ 0.1 N(或传感器精度值)。
判定标准
在张力闭环投入前,先单独将 M_comp 作为前馈量输出;随后投入张力闭环,观察稳态张力误差。若补偿量计算正确且方向无误,实际张力应接近设定值,无需积分环节大幅修正。若实际张力仍存在固定偏差,检查 Δh 符号与 M_comp 方向是否匹配设备实际布局。