1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #include "sfun_wrapper.h"
- #include "board.h"
- #include "api_rt.h"
- void McuInit(double ts)
- {
- BoardInit(ts);
- }
- int16_t cnt;
- void McuRun(const double *ain, const int32_t *din, const injection_dtype *ctrl, double *aout, int *dout, double *watchOut)
- {
- /* ADC模块输入 */
- adc.ChannelInput[0] = ain[5]; // 母线电压
- adc.ChannelInput[1] = 0; // 6V
- adc.ChannelInput[2] = 0; // 5V
- adc.ChannelInput[3] = 1.5; // PCB温度
- adc.ChannelInput[4] = 1.5; // 电机温度
- adc.ChannelInput[4] = 0; // 12V
- adc.ChannelInput[4] = 0; // 转把
- adc.ChannelInput[4] = 1.5; // 力矩传感器
- adc2.ChannelInput[0] = ain[4]; // A相电流
- adc2.ChannelInput[1] = ain[3]; // B相电流
- adc2.ChannelInput[2] = 0 - ain[4] - ain[3]; // C相电流
- adc2.ChannelInput[3] = ain[8]; // 母线电流
- // adc.ChannelInput[5] = ain[0]; // C相电压
- // adc.ChannelInput[6] = ain[1]; // B相电压
- // adc.ChannelInput[7] = ain[2]; // A相电压
- // adc.ChannelInput[4] = ain[5]; // 母线电压
- // adc.ChannelInput[1] = ain[6]; // 温度
- // adc.ChannelInput[7] = ain[7]; // AC电压
- /* Break 输入 */
- breakPin.IOIn = din[0];
- /* Cap 输入 */
- capPin.IOIn = din[1];
- inputCap.PWMIn = din[1];
- /* 注入变量 */
- for (int i = 0; i < 8; i++)
- {
- iRtProbe_ControlInjectionPoint(i, ctrl[i].enable);
- iRtProbe_TransInjectionData(i, ctrl[i].data);
- }
- /* 调度器运行 */
- scheduler.Schedule(&scheduler);
- /* PWM输出 */
- dout[0] = pwm.PwmOut[0];
- dout[1] = pwm.PwmOut[1];
- dout[2] = pwm.PwmOut[2];
- dout[3] = pwm.PwmOut[3];
- dout[4] = pwm.PwmOut[4];
- dout[5] = pwm.PwmOut[5];
- /* LED IO 输出 */
- dout[6] = ledPin.IOOut;
- /* 变量观测 */
- for (int i = 0; i < 32; i++)
- {
- watchOut[i] = iRtProbe_TransTestData(i);
- }
- }
|