Sandbox/Dirigent/Archiv/2411UpToEtBt/PwSp.sh

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

source Commons.sh

ChargingFlag=0


function Init()
{
    CommonInit
    LogIt "$DOWNTO ${FUNCNAME[0]}"
    echo "Slow">$SHM/Charging
    echo ":STOP;RUN"|$oscilosc_w1;sleep 1;echo ":STOP"|$oscilosc_w1
    LogIt "$UPFROM ${FUNCNAME[0]}"
}


ChargingResistors=0



function Prepare()
{
    LogIt "$DOWNTO ${FUNCNAME[0]}"
    UBtRequest=$1;UEtRequest=$2
    HVon;ChargingFlag=1;
    if [ $UBtRequest -gt 200 ]; then  ChargResOFF; fi
    StatusScanGo 
    #https://www.socscistatistics.com/tests/regression/default.aspx
    #1300:99,800:90,200:80
    #BtSlowLine=95 # Hrana na pomale nabijeni ....
    BtSlowLine=`echo "0.01725*$UBtRequest + 76.43956"|bc|xargs printf '%4.0f\n'`
    LogIt "U_Bt: $UBtRequest, Hrana: $BtSlowLine"
    EtSlowLine=85 # Hrana na pomale nabijeni ....
    LogIt "U_Et: $UEtRequest, Hrana: $EtSlowLine"
    #LogIt "PIDs: $PID1, $PID2"
    while [ $ChargingFlag -eq 1 ]; do
        UBt=`tail -1 $SHMdir/U@Bt|xargs printf '%4.0f\n'`
        StatusBt=`tail -1 $SHMdir/Status@Bt`
        Ucd=`tail -1 $SHMdir/U@Et|xargs printf '%4.0f\n'`
        StatusEt=`tail -1 $SHMdir/Status@Et`
        if [ "$StatusEt" = "Charged" ] && [ "$StatusBt" = "Charged" ];then Finito;ChargingFlag=0;fi
        if [ $UBt -gt $(($UBtRequest*$BtSlowLine/100)) ] && [ $ChargingResistors == 0  ] && [ "$StatusBt" = "Charging" ]; then LogIt "Bt slow PowSup";ChargResON;fi
        if [ $Ucd -gt $(($UEtRequest*$EtSlowLine/100)) ] && [ $ChargingResistors == 0  ] && [ "$StatusEt" = "Charging" ]; then LogIt "Et slow PowSup";ChargResON;fi
        if [ "$StatusEt" = "Charged" ] && [ $ChargingResistors == 1  ] && [ $UBt -lt $(($UBtRequest*$BtSlowLine/100)) ]; then LogIt "Bt boost PowSup";ChargResOFF;fi
        sleep 1
    done
    HVoff
    LogIt "$UPFROM ${FUNCNAME[0]}"
}

function Finito()
{
    #for i in `seq 4`; do kill $PID$i;done  #Priste ...
    kill $PID1;kill $PID2;kill $PID3;kill $PID4
}

PID1=0;PID2=0;PID3=0;PID4=0

function StatusScanGo()
{
    ssh -T golem@Bt "tail -f "$SHM"/OscRespondStream" >> $SHMdir/U@Bt &
    PID1=$!
    ssh -T golem@Bt "tail -f "$SHM"/Status 2> /dev/null" >> $SHMdir/Status@Bt &
    PID2=$!
    ssh -T golem@Et "tail -f "$SHM"/OscRespondStream" >> $SHMdir/U@Et &
    PID3=$!
    ssh -T golem@Et "tail -f "$SHM"/Status 2> /dev/null" >> $SHMdir/Status@Et &
    PID4=$!

}


function Arming()
{
    LogIt "$PASSING ${FUNCNAME[0]}"
}

function Final()
{
    LogIt "$PASSING ${FUNCNAME[0]}"
    echo ":STOP"|$oscilosc_w1
    GetScreenShot
}

function PostDisch()
{
    LogIt "$PASSING ${FUNCNAME[0]}"
}


function Emergency()
{
    #PwSpPap 3L
    HVoff
    LogIt "$DOWNTO ${FUNCNAME[0]}"
    $SHMtouch/Emergency
    LogIt "$UPFROM ${FUNCNAME[0]}"
    
}	

function HVon()
{
    LogIt "HV power supply on"
	HVlightON
	UnPiRelayON 8
	sleep 1
    #PwSpPap 3H
}	

function HVoff()
{
    #PwSpPap 3L
    sleep 0.2
    UnPiRelayOFF 8
    LogIt "HV power supply off"
    HVlightOFF
	ChargResON
}


function ChargResOFF()
{
    LogIt "$PASSING ${FUNCNAME[0]}"
    ChargingResistors=0
    PwSpPap 6H; sleep 1
    PwSpPap 7H; sleep 1
    PwSpPap 8H; sleep 1
    echo "Fast">$SHM/Charging
	#echo "*B1OS6H"|telnet PowSupPap 10001 1>&- 2>&-;sleep 1
	#echo "*B1OS7H"|telnet PowSupPap 10001 1>&- 2>&-;sleep 1
	#echo "*B1OS8H"|telnet PowSupPap 10001 1>&- 2>&-;sleep 1
}	

function ChargResON()
{
    LogIt "$PASSING ${FUNCNAME[0]}"
    ChargingResistors=1
    PwSpPap 6L
    PwSpPap 7L
    PwSpPap 8L
    echo "Slow">$SHM/Charging
	#echo "*B1OS6L"|telnet PowSupPap 10001 1>&- 2>&-
	#echo "*B1OS7L"|telnet PowSupPap 10001 1>&- 2>&-
	#echo "*B1OS8L"|telnet PowSupPap 10001 1>&- 2>&-
}

function HVlightON()
{
	UnPiRelayON 7
}	

function HVlightOFF()
{
	UnPiRelayOFF 7
}