From 7cd35eea25cf5de6bc5ddca15adf56cbd816f2d3 Mon Sep 17 00:00:00 2001 From: Cbm Rich Date: Mon, 17 Nov 2014 22:34:14 +0100 Subject: [PATCH] New Billboard incl. Gas and Mirror --- dmon/scripts/dmon_billboard.pl | 50 ++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/dmon/scripts/dmon_billboard.pl b/dmon/scripts/dmon_billboard.pl index a1e1ba5..2af2384 100755 --- a/dmon/scripts/dmon_billboard.pl +++ b/dmon/scripts/dmon_billboard.pl @@ -14,6 +14,22 @@ use Perl2Epics; my %config = Dmon::StartUp(); my $t0; +sub encInt { + my $val = shift; + my $factor = shift; + my $bits = shift; + + $bits = 16 unless $bits; + $factor = 1 unless $factor; + + return (2 << $bits) - 1 unless defined $val; + + $val *= $factor; + $val = (2 << $bits) - 1 if $val >= (2 << $bits); + + return $val; +} + for(my $i = 0; $i< 16 ; $i++) { Perl2Epics::Connect("PC".$i, sprintf('CBM:PWRSWITCH:GetCurrent%02X',$i)); @@ -24,6 +40,23 @@ for(my $i = 0; $i< 16 ; $i++) { Perl2Epics::Connect("Pres","CBM:BMP180:GetPressure"); Perl2Epics::Connect("Temp","CBM:BMP180:GetTemp"); +Perl2Epics::Connect("M1", "CBM:RICH:Mirror:Pos:ActualPosition1"); +Perl2Epics::Connect("M2", "CBM:RICH:Mirror:Pos:ActualPosition2"); + +Perl2Epics::Connect("O2", "CBM:RICH:Gas:O2"); +Perl2Epics::Connect("H2O", "CBM:RICH:Gas:H2O"); +Perl2Epics::Connect("PT-1", "CBM:RICH:Gas:PT-1"); +Perl2Epics::Connect("PT-2", "CBM:RICH:Gas:PT-2"); +Perl2Epics::Connect("PT-3", "CBM:RICH:Gas:PT-3"); +Perl2Epics::Connect("PT-4", "CBM:RICH:Gas:PT-4"); +Perl2Epics::Connect("PTB", "CBM:RICH:Gas:PTB"); +Perl2Epics::Connect("TT-1", "CBM:RICH:Gas:TT-1"); +Perl2Epics::Connect("TT-2", "CBM:RICH:Gas:TT-2"); +Perl2Epics::Connect("FM-1", "CBM:RICH:Gas:FM-1"); +Perl2Epics::Connect("RefrIndex", "CBM:RICH:Gas:RefrIndex"); + + + while(1) { # update billboard my @billboardValues = (); @@ -45,7 +78,6 @@ while(1) { push(@billboardValues, $reg) if ($i & 1); } - # threshold timestamp my $threshTime = do($config{UserDirectory} . '/thresh/billboard_info'); @@ -56,10 +88,22 @@ while(1) { push @billboardValues, ((($epicsData->{"HV_I".$i}->{"val"} * 1e6) & 0xffff) << 16) | ((($epicsData->{"HV_U".$i}->{"val"} * 1e2) & 0xffff) << 0); - - #print(($epicsData->{"HV_I".$i}->{"val"} * 1e6) . "uA @ " . ($epicsData->{"HV_U".$i}->{"val"} * 1e3) . " mV \n"); } + # mirror position + push @billboardValues, (encInt($epicsData->{"M2"}->{"val"} , 100.0) << 16) | encInt($epicsData->{"M1"}->{"val"} , 100.0); + + push @billboardValues, (encInt($epicsData->{"H2O"}->{"val"} , 32.0) << 16) | encInt($epicsData->{"O2"}->{"val"} , 32.0); + + push @billboardValues, (encInt($epicsData->{"PTB"}->{"val"} , 32.0) << 16) | encInt($epicsData->{"PT-1"}->{"val"} , 12800.0); + push @billboardValues, (encInt($epicsData->{"PT-3"}->{"val"} , 32.0) << 16) | encInt($epicsData->{"PT-2"}->{"val"} , 32.0); + push @billboardValues, (encInt($epicsData->{"TT-2"}->{"val"} , 128.0) << 16) | encInt($epicsData->{"TT-1"}->{"val"} , 128.0); + push @billboardValues, (encInt($epicsData->{"FM-1"}->{"val"} , 512.0) << 16) | encInt($epicsData->{"PT-4"}->{"val"} , 16384.0); + + push @billboardValues, encInt($epicsData->{"RefrIndex"}->{"val"} , 128000000.0); + + #print Dumper $epicsData; + trb_register_write_mem($config{BillboardAddress}, 0xb100, 0, \@billboardValues, scalar @billboardValues); # copy data trb_register_write($config{BillboardAddress}, 0xb000, scalar @billboardValues); # commit -- 2.43.0