auto-sync

This commit is contained in:
rusEfi 2016-06-30 23:01:36 -04:00
parent a8836cfc30
commit 65f430f464
8 changed files with 42 additions and 13 deletions

View File

@ -1,15 +1,19 @@
/*
* @file aux_pid.cpp
*
* This class is a copy-paste of alternatorController.cpp TODO: do something about it? extract more common logic?
*
* @date Jun 26, 2016
* @author Andrey Belomutskiy, (c) 2012-2016
*/
#include "aux_pid.h"
#include "LocalVersionHolder.h"
#include "allsensors.h"
#if EFI_AUX_PID || defined(__DOXYGEN__)
#include "pwm_generator.h"
#include "tunerstudio_configuration.h"
EXTERN_ENGINE
;
@ -17,13 +21,16 @@ EXTERN_ENGINE
// todo: this is to some extent a copy-paste of alternatorController. maybe same loop
// for all PIDs?
extern TunerStudioOutputChannels tsOutputChannels;
static THD_WORKING_AREA(auxPidThreadStack, UTILITY_THREAD_STACK_SIZE);
static LocalVersionHolder parametersVersion;
static SimplePwm auxPid1;
static OutputPin auxPid1Pin;
static pid_s *altPidS = &persistentState.persistentConfiguration.engineConfiguration.alternatorControl;
static Pid altPid(altPidS, 1, 90);
static pid_s *auxPidS = &persistentState.persistentConfiguration.engineConfiguration.auxPid1;
static Pid auxPid(auxPidS, 1, 90);
static Logging *logger;
static msg_t auxPidThread(int param) {
UNUSED(param);
@ -33,8 +40,24 @@ static msg_t auxPidThread(int param) {
chThdSleepMilliseconds(dt);
if (parametersVersion.isOld())
altPid.reset();
auxPid.reset();
float value = getVBatt(PASS_ENGINE_PARAMETER_F); // that's temporary
float targetValue = engineConfiguration->targetVBatt; // that's temporary
float pwm = auxPid.getValue(targetValue, value, 1);
if (engineConfiguration->isVerboseAuxPid) {
scheduleMsg(logger, "aux duty: %f/value=%f/p=%f/i=%f/d=%f int=%f", pwm, value,
auxPid.getP(), auxPid.getI(), auxPid.getD(), auxPid.getIntegration());
}
if (engineConfiguration->debugMode == AUX_PID_1) {
tsOutputChannels.debugFloatField1 = pwm;
auxPid.postState(&tsOutputChannels);
}
auxPid1.setSimplePwmDutyCycle(pwm / 100);
}
@ -47,6 +70,8 @@ void initAuxPid(Logging *sharedLogger) {
chThdCreateStatic(auxPidThreadStack, sizeof(auxPidThreadStack), LOWPRIO,
(tfunc_t) auxPidThread, NULL);
logger = sharedLogger;
if (engineConfiguration->activateAuxPid1) {
return;
}

View File

@ -1,4 +1,4 @@
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sun Jun 26 20:48:53 EDT 2016
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Jun 30 21:51:57 EDT 2016
// begin
#ifndef ENGINE_CONFIGURATION_GENERATED_H_
#define ENGINE_CONFIGURATION_GENERATED_H_
@ -785,7 +785,7 @@ typedef struct {
bool activateAuxPid1 : 1;
/**
offset 80 bit 2 */
bool issue_294_2 : 1;
bool isVerboseAuxPid : 1;
/**
offset 80 bit 3 */
bool issue_294_3 : 1;
@ -1832,4 +1832,4 @@ typedef struct {
#endif
// end
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sun Jun 26 20:48:53 EDT 2016
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Jun 30 21:51:57 EDT 2016

View File

@ -599,6 +599,7 @@ typedef enum {
DBG_EL_ACCEL = 4,
TRIGGER_COUNT = 5,
FSIO_ADC = 6,
AUX_PID_1 = 7,
Force_4b_debug_mode_e = ENUM_32_BITS,
} debug_mode_e;

View File

@ -47,8 +47,8 @@
#define directSelfStimulation_offset_hex 50
#define activateAuxPid1_offset 80
#define activateAuxPid1_offset_hex 50
#define issue_294_2_offset 80
#define issue_294_2_offset_hex 50
#define isVerboseAuxPid_offset 80
#define isVerboseAuxPid_offset_hex 50
#define issue_294_3_offset 80
#define issue_294_3_offset_hex 50
#define issue_294_4_offset 80

View File

@ -86,7 +86,7 @@ static msg_t AltCtrlThread(int param) {
currentAltDuty = altPid.getValue(targetVoltage, vBatt, 1);
if (boardConfiguration->isVerboseAlternator) {
scheduleMsg(logger, "alt duty: %f/vbatt=%f/p=%f/i=%f/d=%f int=%f", currentAltDuty, getVBatt(PASS_ENGINE_PARAMETER_F),
scheduleMsg(logger, "alt duty: %f/vbatt=%f/p=%f/i=%f/d=%f int=%f", currentAltDuty, vBatt,
altPid.getP(), altPid.getI(), altPid.getD(), altPid.getIntegration());
}

View File

@ -856,6 +856,8 @@ static void enableOrDisable(const char *param, bool isEnabled) {
engineConfiguration->isJoystickEnabled = isEnabled;
} else if (strEqualCaseInsensitive(param, "HIP9011")) {
boardConfiguration->isHip9011Enabled = isEnabled;
} else if (strEqualCaseInsensitive(param, "auxdebug")) {
engineConfiguration->isVerboseAuxPid = isEnabled;
} else if (strEqualCaseInsensitive(param, "altdebug")) {
boardConfiguration->isVerboseAlternator = isEnabled;
} else if (strEqualCaseInsensitive(param, "tpic_advanced_mode")) {

View File

@ -167,7 +167,7 @@ injector_s injector
bit directSelfStimulation;+Should trigger emulator push data right into trigger handling logic, eliminating the need for physical jumper wires?\nPS: Funny name, right? :)
bit activateAuxPid1;
bit issue_294_2;
bit isVerboseAuxPid;
bit issue_294_3;
bit issue_294_4;
bit issue_294_5;

View File

@ -42,7 +42,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sun Jun 26 20:48:53 EDT 2016
; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Jun 30 21:51:57 EDT 2016
pageSize = 17080
page = 1
@ -54,7 +54,7 @@ page = 1
injector_battLagCorr = array, F32, 48, [8], "ms/V", 1, 0, 0.0, 50.0, 2
directSelfStimulation = bits, U32, 80, [0:0], "false", "true"
activateAuxPid1 = bits, U32, 80, [1:1], "false", "true"
issue_294_2 = bits, U32, 80, [2:2], "false", "true"
isVerboseAuxPid = bits, U32, 80, [2:2], "false", "true"
issue_294_3 = bits, U32, 80, [3:3], "false", "true"
issue_294_4 = bits, U32, 80, [4:4], "false", "true"
issue_294_5 = bits, U32, 80, [5:5], "false", "true"
@ -578,7 +578,7 @@ page = 1
auxPid1_iFactor = scalar, F32, 2416, "value", 1, 0, 0, 1000, 5
auxPid1_dFactor = scalar, F32, 2420, "value", 1, 0, 0, 1000, 5
auxPid1_offset = scalar, F32, 2424, "value", 1, 0, 0, 1000, 3
crankingIdleAdjustment = scalar, F32, 2428, "value", 1, 0, -100.0, 100,
crankingIdleAdjustment = scalar, F32, 2428, "percent", 1, 0, -100.0, 100,
;skipping unused offset 2432
le_formulas1 = array, U08, 3048, [200],"char", 1, 0, 0.0, 3.0, 2
le_formulas2 = array, U08, 3248, [200],"char", 1, 0, 0.0, 3.0, 2
@ -1625,6 +1625,7 @@ cmd_test_idle_valve = "w\x00\x17\x00\x01"
field = "Enabled", activateAuxPid1
field = "FSIO pin #1", fsioPins1
field = "PWM Frequency", fsioFrequency1
field = "verbose", isVerboseAuxPid
field = "#target based on FSIO map#1"
field = "control period", auxPid1DT, {activateAuxPid1 == 1}
field = "#PID control"