c语言sinf函数,sinf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

在头文件中定义float sinf(float arg);(1)(自C99以来)

double sin(double arg);(2)

long double sinl(long double arg);(3)(自C99以来)

在头文件中定义

#define sin(arg)(4)(自C99以来)

1-3)计算正弦arg(以弧度测量)。

4)类型 - 通用宏:如果参数具有类型long double,sinl则被调用。否则,如果参数具有整数类型或类型double,sin则调用该参数。否则,sinf被调用。如果参数是复杂的,则宏调用相应的复变函数(csinf,csin,csinl)。

参数

arg-以弧度表示角度的浮点值

返回值

如果没有错误发生,arg(sin(arg))的正弦在-1范围内; +1,返回。

如果arg的大小很大,结果可能几乎没有意义。(直到C99)

如果发生域错误,则返回实现定义的值(NaN,如果支持)。

如果由于下溢而发生范围错误,则返回正确的结果(舍入后)。

错误处理

按照math_errhandling中的指定报告错误。

如果实现支持IEEE浮点运算(IEC 60559),

如果参数为±0,则不加修改地返回

如果参数是±∞,则返回并FE_INVALID提升NaN

如果参数是NaN,则返回NaN

注意

参数无限的情况在C中没有被指定为域错误,但是在POSIX中被定义为域错误。

POSIX还规定,如果出现下溢&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FOC(Field Oriented Control)观测器FOC算法函数C语言实现主要涉及到以下几个步骤: 1. 定义结构体,存储FOC控制需要的变量和参数,如电机参数、电机状态、控制参数等。 ```c typedef struct { float Rs; // 马达电阻 float Ls_d; // 马达d轴电感 float Ls_q; // 马达q轴电感 float Ke; // 电动势系数 float Kt; // 转矩系数 float P; // 极对数 float Ts; // 采样时间 float Id_ref; // d轴电流参考值 float Iq_ref; // q轴电流参考值 float Id; // d轴电流实际值 float Iq; // q轴电流实际值 float Vd; // d轴电压实际值 float Vq; // q轴电压实际值 float theta_e; // 电角度 float theta_m; // 机械角度 float theta_e_old; // 上一时刻电角度 float theta_m_old; // 上一时刻机械角度 float theta_e_diff; // 电角度变化量 float theta_m_diff; // 机械角度变化量 } FOC_State_t; ``` 2. 编写FOC控制函数,根据当前的电机状态和控制参数计算d轴和q轴电流参考值。 ```c void FOC_Control(FOC_State_t *state) { float Kp = 0.1; // 比例系数 float Ki = 0.01; // 积分系数 float Kff = 0.2; // 前馈系数 float Id_error, Iq_error; // 计算电流误差 Id_error = state->Id_ref - state->Id; Iq_error = state->Iq_ref - state->Iq; // PID控制 state->Vd = Kp * Id_error + Ki * state->Ts * Id_error + Kff * state->Id_ref; state->Vq = Kp * Iq_error + Ki * state->Ts * Iq_error + Kff * state->Iq_ref; } ``` 3. 编写FOC观测器函数,根据当前的电机状态和控制参数计算d轴和q轴电流实际值。 ```c void FOC_Observer(FOC_State_t *state) { float alpha, beta, gamma; float Ls_d, Ls_q, Rs; float V_alpha, V_beta, I_alpha, I_beta, I_d, I_q; float theta_e_diff, theta_m_diff; // 获取当前电机状态 alpha = state->alpha; beta = state->beta; gamma = state->gamma; theta_e_diff = state->theta_e - state->theta_e_old; theta_m_diff = state->theta_m - state->theta_m_old; // 计算d轴和q轴电感和电阻 Ls_d = state->Ls_d; Ls_q = state->Ls_q; Rs = state->Rs; // alpha-beta坐标系到dq坐标系变换 I_alpha = alpha * cosf(theta_e_diff) - beta * sinf(theta_e_diff); I_beta = alpha * sinf(theta_e_diff) + beta * cosf(theta_e_diff); // dq坐标系下的电流 I_d = I_alpha * cosf(theta_m_diff) + I_beta * sinf(theta_m_diff); I_q = -I_alpha * sinf(theta_m_diff) + I_beta * cosf(theta_m_diff); // FOC观测器 state->Id = (2 * Ls_q * I_q - Rs * state->Id + state->Ke * state->theta_e_diff) / (Ls_d * Ls_q - state->Ke * state->Ke / state->P); state->Iq = (-2 * Ls_d * I_d - Rs * state->Iq - state->Ke * state->theta_e_diff) / (Ls_d * Ls_q - state->Ke * state->Ke / state->P); // 更新电角度和机械角度 state->theta_e_old = state->theta_e; state->theta_m_old = state->theta_m; } ``` 以上就是FOC观测器FOC算法函数C语言实现的基本步骤和实现方法,具体的实现还需要根据具体的电机参数和控制参数进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值