finalizacao e correcoes dos alarmes

This commit is contained in:
Diego Freitas 2024-01-31 17:05:39 -03:00
parent 95a88f88a3
commit 0682f8d250
6 changed files with 17 additions and 14 deletions

Binary file not shown.

View File

@ -145,7 +145,7 @@ namespace AgroBase.Models
RampaMin.ToString("0000") + ";" + // 14 ~ 17
RampaMax.ToString("0000") + ";" + // 19 ~ 22
PulsosPorRevolucao.ToString("000") + ";" + // 24 ~ 26
_DelayBalanceamento.ToString("000") + ";" + // 28 ~ 32
_DelayBalanceamento.ToString("00000") + ";" + // 28 ~ 32
_MargemRPM.ToString("00") + ";" + // 34 ~ 35
_MaxOffsetRPM.ToString("00"); // 37 ~ 38
Config.Add(ProtocoloMOD);
@ -466,16 +466,19 @@ namespace AgroBase.Models
}
public string ProtocoloComando(Direcao DirecaoAtual, bool Individual = false)
public string ProtocoloComando(Direcao DirecaoAtual, bool CmdAlarme = false)
{
if (Comandar && !Individual)
if (Comandar && (!Alarme || CmdAlarme))
{
if (!Alarme)
if (!CmdAlarme)
{
MovimentacaoModel.UltimaDirecao = DirecaoAtual;
}
RPM_SP = DirecaoAtual == Direcao.Parado ? 0 : GeneralJoystick.RPM;
RPM_SP =
DirecaoAtual == Direcao.Parado ? 0 :
CmdAlarme ? 0 :
GeneralJoystick.RPM;
switch (DirecaoAtual)
{
@ -560,9 +563,7 @@ namespace AgroBase.Models
if (Inicializado && (!AlarmeAnterior || Adicionado) && AlarmeAtual) // Motor iniciado, Não estava em alarme anteriormente ou foi adicionado agora, alarme atual
{
Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mov).EnviarDadosSerial(ProtocoloComando(Direcao.Parado, true));
Potencia = 0;
RPM_SP = 0;
Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mov).EnviarDadosSerial(ProtocoloComando(Direcao.Frente, true));
}
Alm.Valor = _Alarme.Valor;

View File

@ -107,7 +107,7 @@ class Motor {
}
if (_pinoSTP > -1) {
pinMode(_pinoSTP, OUTPUT);
digitalWrite(_pinoSTP, _Alarme);
digitalWrite(_pinoSTP, HIGH);
}
if (_pinoHLA > -1) {
pinMode(_pinoHLA, INPUT);
@ -359,7 +359,9 @@ class Motor {
if (RPM_Estavel) {
RPM = RPM + _RPM_Offset;
}
_PID->Compute();
RPM = _rpmA;
}
}
@ -413,7 +415,7 @@ class Motor {
digitalWrite(_pinoBRK, _Freio);
}
if (_pinoSTP > -1) {
digitalWrite(_pinoSTP, !_Alarme);
digitalWrite(_pinoSTP, HIGH);
}
if (_pinoPWM > -1) {
if (_SentidoSP == Parado) {
@ -614,10 +616,10 @@ void BalancearCargasMotores() {
double mediaPotencia = (M1_Pot + M2_Pot + M3_Pot + M4_Pot) / 4.0;
// Certifique-se de verificar se a potência atual não é zero antes de dividir
double offsetM1_RPM = M1_Pot != 0 ? (M1.RPM * (mediaPotencia - M1_Pot)) / M1_Pot : 0;
double offsetM2_RPM = M2_Pot != 0 ? (M2.RPM * (mediaPotencia - M2_Pot)) / M2_Pot : 0;
double offsetM3_RPM = M3_Pot != 0 ? (M3.RPM * (mediaPotencia - M3_Pot)) / M3_Pot : 0;
double offsetM4_RPM = M4_Pot != 0 ? (M4.RPM * (mediaPotencia - M4_Pot)) / M4_Pot : 0;
double offsetM1_RPM = (M1_Pot != 0 ? (M1.RPM * (mediaPotencia - M1_Pot)) / M1_Pot : 0) * -1;
double offsetM2_RPM = (M2_Pot != 0 ? (M2.RPM * (mediaPotencia - M2_Pot)) / M2_Pot : 0) * -1;
double offsetM3_RPM = (M3_Pot != 0 ? (M3.RPM * (mediaPotencia - M3_Pot)) / M3_Pot : 0) * -1;
double offsetM4_RPM = (M4_Pot != 0 ? (M4.RPM * (mediaPotencia - M4_Pot)) / M4_Pot : 0) * -1;
// Aplica o offset com limitação
M1._RPM_Offset = fmin(fmax(offsetM1_RPM, -RPM_Offset_Max), RPM_Offset_Max);