SW/ControlSW/Archive/Dirigent/Sandbox/081219/VNZdroj/136/Control/Charger.sh

#!/bin/bash
SUBDIR=Infrastructure
ThisDev=Charger

source Commons.sh


PowerSupplyOscCMD="netcat -w 1 PowerSupplyOsc 5555"
PowerSupplyOscSTREAM="netcat PowerSupplyOsc 5555"
PowerSupplyOscCMD="LogIt netcat -w 1 PowerSupplyOsc 5555"
PowerSupplyOscSTREAM="echo netcat PowerSupplyOsc 5555"


#./Dirigent.sh -r "Charger RelayON 1"
#./Charger.sh -r "RelayON 1"

function BtShortCircuitsDisEngage() { RelayON 3; }	
function BtShortCircuitsEngage() { RelayOFF 3; }
function CdShortCircuitsDisEngage() { RelayON 1; }	
function CdShortCircuitsEngage() { RelayOFF 1; }
function HVlighON() { RelayON 7; }
function HVlighOFF() { RelayOFF 7; }	
#****************************************
function PowerSupplyHVcontactorON() { RelayON 16; }	
function PowerSupplyHVcontactorOFF() { RelayOFF 16; }
#function PowerSupplyHVcontactorON() { RelayON 13; } #Test na Gabove Zdroji	
#function PowerSupplyHVcontactorOFF() { RelayOFF 13; } #Test na Gabove Zdroji
#****************************************

function BtHVrelayON() { RelayON 4 ; }
function BtHVrelayOFF() { RelayOFF 4 ; }
function CdHVrelayON() { RelayON 2 ; }
function CdHVrelayOFF() { RelayOFF 2 ; }


function ChargingResistor_I_DisEngage() { RelayON 15 ; }
function ChargingResistor_I_Engage() { RelayOFF 15 ; }


#function ChargingResistor_II_DisEngage() { RelayON 6 ; }
#function ChargingResistor_II_Engage() { RelayOFF 6 ; }


ChargingFlag=0
ChargingResistors=0

function InitDischarge()
{
    $LogFunctionGoingThrough
    CommonInitDischarge
    echo OK
}


#./Charger.sh -r "PrepareDischarge 10 15"
#./Charger.sh -r "PostDischarge"

function PrepareDischarge()
{
    $LogFunctionStart
    UBtRequest=$1;UCdRequest=$2
    OpenOscDVMAcquiring HVOsc 1
    if [ $UBtRequest -gt 0 ]; then 
        BtStatus=Charging;
        BtShortCircuitsDisEngage;
        BtHVrelayON;
        LogIt "Bt capacitor charging started"
        else
        LogIt "Bt capacitor charging not requested"
        BtStatus=Charged;
    fi 
    if [ $UCdRequest -gt 0 ]; then 
        CdStatus=Charging;
        CdShortCircuitsDisEngage; 
        CdHVrelayON;
        LogIt "Cd capacitor charging started"
        else
        LogIt "Cd capacitor charging not requested"
        CdStatus=Charged;
    fi
    
    Relax;HVon;Relax
    ChargingResistorsAllOFF
    
    while [ $BtStatus == Charging ] || [ $CdStatus == Charging ]; do
        PowSupVoltage=`ReadDVMOscilloscope HVOsc`
        LogIt "Charging ... HV=$PowSupVoltage V"
        if [ $PowSupVoltage -ge $UBtRequest ] && [ "$BtStatus" = "Charging" ]; then 
            BtHVrelayOFF;
            BtStatus=Charged;
            LogIt "Bt capacitor charging finished @ $PowSupVoltage V"
        fi
        if [ $PowSupVoltage -ge $UCdRequest ] && [ "$CdStatus" = "Charging" ]; then 
            CdStatus=Charged;
            CdHVrelayOFF;
            LogIt "Cd capacitor charging finished @ $PowSupVoltage V"
        fi
        sleep 0.1
    done    
    HVoff
    echo OK
    

}    


function ZMB()
{
    if [ $UBtRequest -gt 200 ]; then  ChargingResistorsAllOFF; fi
    BtSlowLine=`echo "0.01725*$UBtRequest + 76.43956"|bc|xargs printf '%4.0f\n'`
    LogIt "U_Bt: $UBtRequest, Hrana: $BtSlowLine"
    CdSlowLine=85 
    LogIt "U_Et: $UCdRequest, Hrana: $CdSlowLine"
    while [ $BtStatus == Charging ] || [ $CdStatus == Charging ]; do
        UBt=`ReadOscilloscope Capacitor 1`
        Ucd=`ReadOscilloscope Capacitor 2`
        LogIt "$UBt $Ucd"
        if [ $UBt -gt $UBtRequest ]; then BtStatus=Charged;fi
        if [ $UCd -gt $UCdRequest ]; then CdStatus=Charged;fi
        if [ $UBt -gt $(($UBtRequest*$BtSlowLine/100)) ] && [ $ChargingResistors == 0  ] && [ "$BtStatus" = "Charging" ]; then LogIt "Bt slow PowSup";ChargingResistorsAllON;fi
        if [ $CdStatus == Charging ] && [ $UCd -gt $(($UCdRequest*$CdSlowLine/100)) ] && [ $ChargingResistors == 0  ] && [ "$CdStatus" = "Charging" ]; then LogIt "Cd slow PowSup";ChargingResistorsAllON;fi
        if [ "$CdStatus" = "Charged" ] && [ $ChargingResistors == 1  ] && [ $UBt -lt $(($UBtRequest*$BtSlowLine/100)) ]; then LogIt "Bt boost PowSup";ChargingResistorsAllOFF;fi
        sleep 1
    done
    HVoff
    $LogFunctionEnd
    echo OK
}



function Arming()
{
    $LogFunctionGoingThrough
    echo OK
}

function Final()
{
    $LogFunctionGoingThrough
    CloseOscDVMAcquiring HVOsc
    GetOscScreenShot HVOsc
    echo OK
}

function PostDisch()
{
    GoToSafeState
    $LogFunctionGoingThrough
    echo OK
}

function GoToSafeState()
{
    HVoff; 
    CdHVrelayOFF;
    BtHVrelayOFF;
    Relax;
    CdShortCircuitsEngage;
    BtShortCircuitsEngage;
}

function Emergency()
{
    GoToSafeState
    $LogFunctionStart
    echo OK
}	

function HVon()
{
    $LogFunctionPassing
    HVlighON
    PowerSupplyHVcontactorON
    Relax
}	

function HVoff()
{
    PowerSupplyHVcontactorOFF
    $LogFunctionPassing
    HVlighOFF
    mRelax
	ChargingResistorsAllON
	
}


function ChargingResistorsAllOFF()
{
    $LogFunctionStart
    ChargingResistors=0
    ChargingResistor_I_DisEngage
    #ChargingResistor_II_DisEngage
    echo "Fast">$SHM/Charging
}	

function ChargingResistorsAllON()
{
    $LogFunctionStart
    ChargingResistors=1
    ChargingResistor_I_Engage
    ChargingResistor_II_Engage
    echo "Slow">$SHM/Charging
}



TASK=$1
COMMANDLINE=`echo $@|sed 's/-r //g'`

case "$TASK" in
   "")
      RETVAL=1
      ;;
      --raw_command|-r)
      $COMMANDLINE
      ;;
      --rsync)
      RsyncDeviceFromDirigent
      ;;
esac