From 231efababb29a5416f186628948a23d128ad5c40 Mon Sep 17 00:00:00 2001 From: hadaq Date: Mon, 29 Dec 2025 16:45:00 +0100 Subject: [PATCH] update hmon files --- hmon/QA.pm | 26 +-- hmon/doc/misc2-boards.htt | 6 + hmon/gethmonroot.cgi | 186 ++++++++++++++++++ hmon/getqa.cgi | 2 +- hmon/hmon_endpoints.pl | 174 ++++++++-------- hmon/hmon_logerrors.pl | 2 +- hmon/hmon_mdc_busy.pl | 0 hmon/hmon_mdc_linkerr.pl | 0 hmon/hmon_mdc_plotmissingboards.pl | 0 hmon/hmon_mdc_rate.pl | 0 hmon/hmon_mdc_ratecheck.pl | 0 hmon/hmon_mdc_retr.pl | 0 hmon/hmon_mdc_tokenmiss.pl | 0 hmon/hmon_mdc_voltage.pl | 0 hmon/hmon_mdcnew_endpoints.pl | 35 +++- hmon/hmon_mdcnew_missing.pl | 8 +- hmon/hmon_mdcnew_rate.pl | 24 +-- hmon/hmon_mdcnew_temp.pl | 6 +- hmon/hmon_mdcnew_voltage.pl | 31 ++- hmon/index.cgi | 11 +- hmon/permanent/HV_FW_off.pl | 38 ++++ hmon/permanent/hmon_environment.pl | 2 +- .../hmon_environment_countinghouse.pl | 146 ++++++++++++++ hmon/permanent/hmon_expertsoncall.pl | 19 +- hmon/permanent/hmon_hub.pl | 2 +- hmon/permanent/hmon_mdcnew_powerstatus.pl | 9 +- hmon/permanent/hmon_richIsobutan.pl | 12 +- hmon/permanent/hmon_spillmon.pl | 1 + .../hmon_tdcchanerrors_testmonitor.pl | 1 + hmon/start.sh | 6 + 30 files changed, 593 insertions(+), 154 deletions(-) create mode 100644 hmon/doc/misc2-boards.htt create mode 100755 hmon/gethmonroot.cgi mode change 100755 => 100644 hmon/hmon_mdc_busy.pl mode change 100755 => 100644 hmon/hmon_mdc_linkerr.pl mode change 100755 => 100644 hmon/hmon_mdc_plotmissingboards.pl mode change 100755 => 100644 hmon/hmon_mdc_rate.pl mode change 100755 => 100644 hmon/hmon_mdc_ratecheck.pl mode change 100755 => 100644 hmon/hmon_mdc_retr.pl mode change 100755 => 100644 hmon/hmon_mdc_tokenmiss.pl mode change 100755 => 100644 hmon/hmon_mdc_voltage.pl create mode 100644 hmon/permanent/HV_FW_off.pl create mode 100755 hmon/permanent/hmon_environment_countinghouse.pl diff --git a/hmon/QA.pm b/hmon/QA.pm index ff9d8b3..d23c852 100644 --- a/hmon/QA.pm +++ b/hmon/QA.pm @@ -60,7 +60,7 @@ $entries->{'hv'} = ['richhv','ecalhv','rpchv','fwhv','tofhv']; #$entries->{'hv2'} = ['mdchv','stshv','frpchv','itofhv','valve']; $entries->{'hv2'} = ['mdchv','','','','sequencer']; $entries->{'misc'} = ['seu','calib','magnet','env','valve']; -$entries->{'misc2'} = ['ecal','tdctot','boards','ip','']; +$entries->{'misc2'} = ['ecal','tdctot','boards','ip','envCH']; $entries->{'pion'} = ['nxstatus', 'HV', 'HVcurr', 'cooling','seu']; @@ -148,20 +148,20 @@ use constant {CTSAddress => 0x0003}; # Switched off systems ############################################################################### -our $RichOff = 0; +our $RichOff = 1; -our $MdcHvOff = 0; -our $RichHvOff = 0; -our $RichGasOff = 0; -our $TofHvOff = 0; -our $RpcHvOff = 0; -our $FwHvOff = 0; -our $MagnetOff = 0; +our $MdcHvOff = 1; +our $RichHvOff = 1; +our $RichGasOff = 1; +our $TofHvOff = 1; +our $RpcHvOff = 1; +our $FwHvOff = 1; +our $MagnetOff = 1; our $StsHvOff = 1; our $StartHvOff = 1; our $ItofHvOff = 1; our $FrpcHvOff = 1; -our $EcalHvOff = 0; +our $EcalHvOff = 1; our $QAServerOff = 0; @@ -170,9 +170,9 @@ our $QAServerOff = 0; ############################################################################### our @mdc_boards_removed =(0x2257); # 2333 added 2024-03-01 #(0x2203, 0x2027, 0x2057); #(0x2257, 0x2029); # 2233 added 2014-08-28 , 2203 at 2014/09/03, 2029 2014/09/23 -our @mdc_new_boards_removed =(0x8e7b,0xa7b0,0xa7b1, - 0x8e5a,0xa5a0,0xa5a1,0xa5a2); #(0x8e95,0xa950,0xa951); #0x8e7b,0xa7b0,0xa7b1 - +our @mdc_new_boards_removed =( #0x8e7b,0xa7b0,0xa7b1, +# 0x8e5a,0xa5a0,0xa5a1,0xa5a2); #(0x8e95,0xa950,0xa951); #0x8e7b,0xa7b0,0xa7b1 +); our @mdc_chambers_removed =(); our @rich_boards_removed =();#(0x71a4,0x71a5,0x71b4,0x71b5,0x72a4,0x72a5,0x72b4,0x72b5,0x73a4,0x73a5,0x73b4,0x73b5,0x826a); our @tof_boards_removed =(); diff --git a/hmon/doc/misc2-boards.htt b/hmon/doc/misc2-boards.htt new file mode 100644 index 0000000..478076f --- /dev/null +++ b/hmon/doc/misc2-boards.htt @@ -0,0 +1,6 @@ +Checks for some boards if they are loaded a correct FPGA design. +
+Checks for all boards if they have somewhat reasonable addresses, e.g. not a default address. + +

Error handling

+Most issues can be solved with a DAQ restart. If the boards are from MDC, do a "Resync MDC". diff --git a/hmon/gethmonroot.cgi b/hmon/gethmonroot.cgi new file mode 100755 index 0000000..aa830af --- /dev/null +++ b/hmon/gethmonroot.cgi @@ -0,0 +1,186 @@ +#!/usr/bin/perl -w +use strict; +use warnings; +use LWP::Simple qw(get); +use JSON qw( decode_json encode_json ); +use Data::Dumper; +use CGI qw(:standard); +use CGI::Carp qw(fatalsToBrowser); +use Scalar::Util; +use File::stat; + +print "Cache-Control: no-cache, must-revalidate, max-age=1\r\n"; +print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\r\n"; +print "Content-type: application/json\r\n\r\n"; + +my $q = CGI->new; + +my $curve = $q->param('curve') // 0; + + +exit unless $q->param('file') and $q->param('file') =~ /^[a-zA-Z0-9_\-\/]+$/; +my $file = $q->param('file'); +$file = "files/$file.json"; +exit unless (-e $file); + + +open(FH,"<",$file) or die "$file.json file doesn't exist!\n"; +my $d = ; +close FH; +my $input = JSON::decode_json($d) or die "Can't read input file"; + +my $data; +my $ts = stat($file)->mtime; + +########## +## Export of 1D +########## + +if($input->{"type"} != 3) { + open(TH,"<","../hadesroot/files/TemplateTH1.json") or die "TemplateTH1.json file doesn't exist!\n"; + local $/ = undef; + $d = ; + close TH; + $data = JSON::decode_json($d) or die "Not a valid JSON Template"; + + if ($input->{"colors"}[$curve]) { + $input->{"colors"}[$curve] =~ s/#//; + $data->{"fOption"} = "hist line_".$input->{"colors"}[$curve]; + } + + my $xbins = (scalar @{$input->{"value"}[$curve]}); + #add overflow bins + unshift(@{$input->{"value"}[$curve]},0); + push(@{$input->{"value"}[$curve]},0); + $data->{"fArray"} = $input->{"value"}[$curve]; + $data->{"fName"} = $q->param('file'); + $data->{"fTitle"} = $input->{"name"} ; + $data->{"NCells"} = $xbins +2; + $data->{"fXaxis"}{"fTitle"} = $input->{"xlabel"}; + $data->{"fXaxis"}{"fNbins"} = $xbins; + $data->{"fXaxis"}{"fXmin"} = 0; + $data->{"fXaxis"}{"fXmax"} = $xbins / ($input->{"xscale"}//1); + $data->{"export_time"} = $ts; + $data->{"fYaxis"}{"fTitle"} = $input->{"ylabel"} ; + } + +########## +## Export of 2D +########## + +else { + open(TH,"<","../hadesroot/files/TemplateTH2.json") or die "TemplateTH2.json file doesn't exist!\n"; + local $/ = undef; + my $d = ; + close TH; + $data = JSON::decode_json($d) or die "Not a valid JSON Template"; + + my $xbins = $input->{"entries"}*1; + my $ybins = $input->{"curves"}*1; + +# my $xbins = (scalar @{$input->{"value"}[-1]}); +# my $ybins = (scalar @{$input->{"value"}}); + +# print "$xbins $ybins \n"; +########## +## Merge 2D into 1D with overflow bins, sanitize values +########## + my $values; + push(@$values,0) for (0..$xbins+1); + for(my $y=0;$y<$ybins;$y++) { + push(@$values,0); +# push(@$values, @{$input->{"value"}[$y]} ); +# foreach my $v (@{$input->{"value"}[$y]}) { + for(my $x=0;$x<$xbins;$x++) { + my $v = $input->{"value"}[$y][$x]; + $v = 0 if !defined $v; + $v = 0 if $v eq 'NaN'; + $v *= 1; + push(@$values,$v); + } + push(@$values,0); + } + +########## +## Copy xtics and ytics +########## + my @xtics; + my @ytics; + if ($input->{"additional"}) { + my @a = split(";",$input->{"additional"}); + foreach my $al (@a) { + next unless $al =~ /^\s*set xtics/; + $al =~ s/^\s*set xtics\s*\(//; + $al =~ s/\s*\)\s*;?\s*$//; + my @tics = split(",",$al); + foreach my $t (@tics) { + my ($tv,$tp) = $t =~ /\s*\'(.+)\'\s*(\d+)/; + if (defined $tv && defined $tp) { + $xtics[$tp]=$tv; + } + else { + ($tp) = $t =~ /^\s*(\d+)\s*$/; + $xtics[$tp]=$tp; + } + } + last; + } + foreach my $al (@a) { + next unless $al =~ /^\s*set ytics/; + $al =~ s/^\s*set ytics\s*\(//; + $al =~ s/\s*\)\s*;\s*$//; + my @tics = split(",",$al); + foreach my $t (@tics) { + my ($tv,$tp) = $t =~ /\s*\'(.+)\'\s*(\d+)/; + $ytics[$tp]=$tv if defined $tv; + ($tp) = $t =~ /\s*(\d+)/ unless defined $tv; + $ytics[$tp]=$tp if defined $tp && !defined $tv; + } + last; + } + } + !defined $_ and $_ = '' for @xtics; + !defined $_ and $_ = '' for @ytics; + +########## +## Fill data in Root structure +########## + $data->{"fName"} = $q->param('file'); + $data->{"fTitle"} = $input->{"title"} // $input->{"name"} ; + $data->{"fNcells"} = ($xbins+2)*($ybins+2); + + $data->{"fXaxis"}{"fNbins"} = $xbins; + $data->{"fXaxis"}{"fXmin"} = 0; + $data->{"fXaxis"}{"fXmax"} = $xbins / ($input->{"xscale"}//1); + $data->{"fXaxis"}{"fTitle"} = $input->{"xlabel"}; + + if(@xtics) { + $data->{"XLABEL"} = \@xtics; + } + if(@ytics) { + $data->{"YLABEL"} = \@ytics; + } + + if(Scalar::Util::looks_like_number($input->{'cbmin'}) && Scalar::Util::looks_like_number($input->{'cbmax'})) { + $data->{"FRAME"}{'zoom_zmin'} = $input->{'cbmin'}; + $data->{"FRAME"}{'zoom_zmax'} = $input->{'cbmax'}; + $data->{"FRAME"}{'zoom_changed_z'} = 1; + } + + $data->{"fYaxis"}{"fNbins"} = $ybins; + $data->{"fYaxis"}{"fXmin"} = 0; + $data->{"fYaxis"}{"fXmax"} = $ybins / ($input->{"yscale"}//1); + $data->{"fYaxis"}{"fTitle"} = $input->{"ylabel"} ; + + $data->{"fZaxis"}{"fTitle"} = $input->{"cblabel"} ; + $data->{"fZaxis"}{"fNbins"} = 50 ; + + $data->{"fArray"} = $values; + $data->{"export_time"} = $ts; + + } +# my $json = JSON->new->allow_nonref; +# $json->canonical(1); +print encode_json($data); +# print $json->pretty->encode($data); + diff --git a/hmon/getqa.cgi b/hmon/getqa.cgi index 36b8002..6d345ec 100755 --- a/hmon/getqa.cgi +++ b/hmon/getqa.cgi @@ -30,7 +30,7 @@ my $out = ""; my $MYF; open ($MYF, "){ - if($_ =~ m/$query/) { + if($_ =~ m/$query"/) { # print $_."
"; $out .= "
Entry$query - "; $_ =~ m/class="(\d+)/; diff --git a/hmon/hmon_endpoints.pl b/hmon/hmon_endpoints.pl index b0f1d1a..7b5d0da 100755 --- a/hmon/hmon_endpoints.pl +++ b/hmon/hmon_endpoints.pl @@ -27,7 +27,7 @@ my $waittime = 15; my $mdcmissingtime = $store->{mdc}{missingtime}; my $loggerperiod = 12; #times 5 seconds sleep my $timecnt; - +my $qastate; my $fh; open ($fh, ">", "/tmp/mdc_number_missing_boards"); @@ -53,7 +53,7 @@ while(1) { ####config my @all_boards =(); - my @mdc_boards =(0x8015,0x8016, + my @mdc_boards =(#0x8015,0x8016, # ###MDC Concentrator # 0x1000,0x1001,0x1002,0x1003,0x1004, # 0x1010,0x1011,0x1012,0x1013,0x1014, @@ -61,12 +61,12 @@ while(1) { # 0x1030,0x1031,0x1032,0x1033,0x1034, # 0x1040,0x1041,0x1042,0x1043,0x1044, # 0x1050,0x1051,0x1052,0x1053,0x1054, - 0x1100,0x1101,0x1102,0x1103,0x1104, - 0x1110,0x1111,0x1112,0x1113,0x1114, - 0x1120,0x1121,0x1122,0x1123,0x1124, - 0x1130,0x1131,0x1132,0x1133,0x1134, - 0x1140,0x1141,0x1142,0x1143,0x1144, - 0x1150,0x1151,0x1152,0x1153,0x1154, +# 0x1100,0x1101,0x1102,0x1103,0x1104, +# 0x1110,0x1111,0x1112,0x1113,0x1114, +# 0x1120,0x1121,0x1122,0x1123,0x1124, +# 0x1130,0x1131,0x1132,0x1133,0x1134, +# 0x1140,0x1141,0x1142,0x1143,0x1144, +# 0x1150,0x1151,0x1152,0x1153,0x1154, ### ); @@ -77,15 +77,15 @@ while(1) { # push(@mdc_boards,( 0x8e60, 0xa600, 0xa601, 0x8e61, 0xa610, 0xa611, 0x8e62, 0xa620, 0xa621, 0x8e63, 0xa630, 0xa631, 0x8e64, 0xa640, 0xa641, 0x8e65, 0xa650, 0xa651, 0x8e66, 0xa660, 0xa661, 0x8e67, 0xa670, 0xa671, 0x8e68, 0xa680, 0xa681, 0x8e69, 0xa690, 0xa691, 0x8e6a, 0xa6a0, 0xa6a1, 0x8e6b, 0xa6b0, 0xa6b1, 0x8e6c, 0xa6c0, 0xa6c1, 0x8e6d, 0xa6d0, 0xa6d1, 0x8e6e, 0xa6e0, 0xa6e1, 0xa6e2, 0x8e6f, 0xa6f0, 0xa6f1, 0xa6f2, 0x8e70, 0xa700, 0xa701, 0x8e71, 0xa710, 0xa711, 0x8e72, 0xa720, 0xa721, 0x8e73, 0xa730, 0xa731, 0x8e74, 0xa740, 0xa741, 0x8e75, 0xa750, 0xa751, 0x8e76, 0xa760, 0xa761, 0x8e77, 0xa770, 0xa771, 0x8e78, 0xa780, 0xa781, 0x8e79, 0xa790, 0xa791, 0x8e7a, 0xa7a0, 0xa7a1, 0x8e7b, 0xa7b0, 0xa7b1, 0x8e7c, 0xa7c0, 0xa7c1, 0x8e7d, 0xa7d0, 0xa7d1, 0x8e7e, 0xa7e0, 0xa7e1, 0xa7e2, 0x8e7f, 0xa7f0, 0xa7f1, 0xa7f2, 0x8e80, 0xa800, 0xa801, 0x8e81, 0xa810, 0xa811, 0x8e82, 0xa820, 0xa821, 0x8e83, 0xa830, 0xa831, 0x8e84, 0xa840, 0xa841, 0x8e85, 0xa850, 0xa851, 0x8e86, 0xa860, 0xa861, 0x8e87, 0xa870, 0xa871, 0x8e88, 0xa880, 0xa881, 0x8e89, 0xa890, 0xa891, 0x8e8a, 0xa8a0, 0xa8a1, 0x8e8b, 0xa8b0, 0xa8b1, 0x8e8c, 0xa8c0, 0xa8c1, 0x8e8d, 0xa8d0, 0xa8d1, 0x8e8e, 0xa8e0, 0xa8e1, 0xa8e2, 0x8e8f, 0xa8f0, 0xa8f1, 0xa8f2, 0x8e90, 0xa900, 0xa901, 0x8e91, 0xa910, 0xa911, 0x8e92, 0xa920, 0xa921, 0x8e93, 0xa930, 0xa931, 0x8e94, 0xa940, 0xa941, 0x8e95, 0xa950, 0xa951, 0x8e96, 0xa960, 0xa961, 0x8e97, 0xa970, 0xa971, 0x8e98, 0xa980, 0xa981, 0x8e99, 0xa990, 0xa991, 0x8e9a, 0xa9a0, 0xa9a1, 0x8e9b, 0xa9b0, 0xa9b1, 0x8e9c, 0xa9c0, 0xa9c1, 0x8e9d, 0xa9d0, 0xa9d1, 0x8e9e, 0xa9e0, 0xa9e1, 0xa9e2, 0x8e9f, 0xa9f0, 0xa9f1, 0xa9f2, 0x8ea0, 0xaa00, 0xaa01, 0x8ea1, 0xaa10, 0xaa11, 0x8ea2, 0xaa20, 0xaa21, 0x8ea3, 0xaa30, 0xaa31, 0x8ea4, 0xaa40, 0xaa41, 0x8ea5, 0xaa50, 0xaa51, 0x8ea6, 0xaa60, 0xaa61, 0x8ea7, 0xaa70, 0xaa71, 0x8ea8, 0xaa80, 0xaa81, 0x8ea9, 0xaa90, 0xaa91, 0x8eaa, 0xaaa0, 0xaaa1, 0x8eab, 0xaab0, 0xaab1, 0x8eac, 0xaac0, 0xaac1, 0x8ead, 0xaad0, 0xaad1, 0x8eae, 0xaae0, 0xaae1, 0xaae2, 0x8eaf, 0xaaf0, 0xaaf1, 0xaaf2, 0x8eb0, 0xab00, 0xab01, 0x8eb1, 0xab10, 0xab11, 0x8eb2, 0xab20, 0xab21, 0x8eb3, 0xab30, 0xab31, 0x8eb4, 0xab40, 0xab41, 0x8eb5, 0xab50, 0xab51, 0x8eb6, 0xab60, 0xab61, 0x8eb7, 0xab70, 0xab71, 0x8eb8, 0xab80, 0xab81, 0x8eb9, 0xab90, 0xab91, 0x8eba, 0xaba0, 0xaba1, 0x8ebb, 0xabb0, 0xabb1, 0x8ebc, 0xabc0, 0xabc1, 0x8ebd, 0xabd0, 0xabd1, 0x8ebe, 0xabe0, 0xabe1, 0xabe2, 0x8ebf, 0xabf0, 0xabf1, 0xabf2)); #MDC II # #old planes 3/4 - foreach my $p (2..3) { - foreach my $s (0..5) { - foreach my $m (0..15) { - next if($p==0 && $m >=14); - my $address = 0x2000 + $p*0x100 + $s*0x10 + $m; - push (@mdc_boards, $address); - } - } - } +# foreach my $p (2..3) { +# foreach my $s (0..5) { +# foreach my $m (0..15) { +# next if($p==0 && $m >=14); +# my $address = 0x2000 + $p*0x100 + $s*0x10 + $m; +# push (@mdc_boards, $address); +# } +# } +# } @@ -257,76 +257,76 @@ while(1) { push @all_boards, $result[$k]; } -###MDC -######################## - my(%mdc_mask, @mdc_results); - $mdc_results[$_] = [] foreach (0 .. 7); - foreach my $element (@all_boards) { $mdc_mask{$element} |= 1 } - foreach my $element (@mdc_boards) { $mdc_mask{$element} |= 2 } - foreach my $element (@QA::mdc_boards_removed) { $mdc_mask{$element} |= 4 } - foreach my $element (keys %mdc_mask) { - push @{$mdc_results[0]}, sprintf("0x%x",$element); - push @{$mdc_results[$mdc_mask{$element}]}, sprintf("0x%x",$element); - } - - my $num_mdc_missing = (scalar @{$mdc_results[2]}); - my $num_mdc_mistake = (scalar @{$mdc_results[4]}); - my @sorted_mdc_results = sort @{$mdc_results[2]}; - - $mdcmissingtime = 0 if $num_mdc_missing < 2; - $mdcmissingtime += max(0,$num_mdc_missing-1); - - #Are two boards from the same chamber missing? - my @mdcboards = (@sorted_mdc_results,@QA::mdc_boards_removed); - chop(@mdcboards); - my @uniqchambers = uniq @mdcboards; - my $samechamberboards = (scalar @mdcboards) - (scalar @uniqchambers); - # if(scalar @mdcboards != scalar @uniqchambers) {$samechamberboards = 1;} - - #Are two boards from the same sector missing? - my @mdcboardssec = chop(@mdcboards); - my @uniqchamberssec = uniq @mdcboardssec; - my $samesectorboards = (scalar @mdcboardssec) - (scalar @uniqchamberssec); - # if(scalar @mdcboards != scalar @uniqchambers) {$samesectorboards = 1;} - - print $fh "$num_mdc_missing\n"; - $fh->autoflush(1); - seek($fh, 0, 0); - - my $title = "MDC 3/4"; - my $value = "OK ".(scalar @mdc_boards - scalar @QA::mdc_boards_removed); - $value .= "(-".(scalar @QA::mdc_boards_removed).")" if scalar @QA::mdc_boards_removed; - if ($num_mdc_missing > 0) {$value = "$num_mdc_missing / ".(scalar @mdc_boards - scalar @QA::mdc_boards_removed)." miss";} - if ($num_mdc_mistake > 0) {$value = "Check Script";} - my $longtext = (scalar @mdc_boards). " boards. ".(scalar @QA::mdc_boards_removed)." removed
"; - if ($num_mdc_missing > 0) {$longtext .= "Endp @sorted_mdc_results missing
"}; - if ($num_mdc_mistake > 0) {$longtext .= " Endp @{$mdc_results[4]} not known";} - - my $qastate = QA::GetQAState('below',$num_mdc_missing,@QA::MdcEndpMissingLimits); - $qastate = max($qastate,QA::ERROR) if $samechamberboards; - $qastate = max($qastate,QA::WARN) if $samesectorboards; - $qastate = max($qastate,QA::ERROR) if $samesectorboards > 2; - $qastate = max($qastate,QA::WARN) if $mdcmissingtime > 200; - $qastate = max($qastate,QA::NOTE) if $num_mdc_missing >= 1; - - $longtext .= "
Some boards are missing for a long time. Better do a restart." if $mdcmissingtime > 360; - - Hmon::Speak('mdcmissonce',"$num_mdc_missing M-D-C Frontends missing") if($qastate > 60 && $qastate < QA::ERROR ); - Hmon::Speak('mdcmiss',"$num_mdc_missing M-D-C Frontends missing") if($qastate >= QA::ERROR ); - QA::WriteQALog($flog,"endp","mdc",$waittime,$qastate,$title,$value,$longtext); - if($qastate > 60) { - $longtext =~ s/\//g; - $longtext =~ s/\(/\\\\\(/g; - $longtext =~ s/\)/\\\\\)/g; - system("logger -p local1.info -t DAQ Endp \\ $longtext") unless (($timecnt->{mdc}++)%$loggerperiod); - } - else {$timecnt->{mdc} = 0;} - - $store->{mdc}{missing} = \@sorted_mdc_results; - $store->{mdc}{missingnumber} = $num_mdc_missing; - $store->{mdc}{missingtime} = $mdcmissingtime; - store($store,$storefile); - +# ###MDC +# ######################## +# my(%mdc_mask, @mdc_results); +# $mdc_results[$_] = [] foreach (0 .. 7); +# foreach my $element (@all_boards) { $mdc_mask{$element} |= 1 } +# foreach my $element (@mdc_boards) { $mdc_mask{$element} |= 2 } +# foreach my $element (@QA::mdc_boards_removed) { $mdc_mask{$element} |= 4 } +# foreach my $element (keys %mdc_mask) { +# push @{$mdc_results[0]}, sprintf("0x%x",$element); +# push @{$mdc_results[$mdc_mask{$element}]}, sprintf("0x%x",$element); +# } +# +# my $num_mdc_missing = (scalar @{$mdc_results[2]}); +# my $num_mdc_mistake = (scalar @{$mdc_results[4]}); +# my @sorted_mdc_results = sort @{$mdc_results[2]}; +# +# $mdcmissingtime = 0 if $num_mdc_missing < 2; +# $mdcmissingtime += max(0,$num_mdc_missing-1); +# +# #Are two boards from the same chamber missing? +# my @mdcboards = (@sorted_mdc_results,@QA::mdc_boards_removed); +# chop(@mdcboards); +# my @uniqchambers = uniq @mdcboards; +# my $samechamberboards = (scalar @mdcboards) - (scalar @uniqchambers); +# # if(scalar @mdcboards != scalar @uniqchambers) {$samechamberboards = 1;} +# +# #Are two boards from the same sector missing? +# my @mdcboardssec = chop(@mdcboards); +# my @uniqchamberssec = uniq @mdcboardssec; +# my $samesectorboards = (scalar @mdcboardssec) - (scalar @uniqchamberssec); +# # if(scalar @mdcboards != scalar @uniqchambers) {$samesectorboards = 1;} +# +# print $fh "$num_mdc_missing\n"; +# $fh->autoflush(1); +# seek($fh, 0, 0); +# +# my $title = "MDC 3/4"; +# my $value = "OK ".(scalar @mdc_boards - scalar @QA::mdc_boards_removed); +# $value .= "(-".(scalar @QA::mdc_boards_removed).")" if scalar @QA::mdc_boards_removed; +# if ($num_mdc_missing > 0) {$value = "$num_mdc_missing / ".(scalar @mdc_boards - scalar @QA::mdc_boards_removed)." miss";} +# if ($num_mdc_mistake > 0) {$value = "Check Script";} +# my $longtext = (scalar @mdc_boards). " boards. ".(scalar @QA::mdc_boards_removed)." removed
"; +# if ($num_mdc_missing > 0) {$longtext .= "Endp @sorted_mdc_results missing
"}; +# if ($num_mdc_mistake > 0) {$longtext .= " Endp @{$mdc_results[4]} not known";} +# +# my $qastate = QA::GetQAState('below',$num_mdc_missing,@QA::MdcEndpMissingLimits); +# $qastate = max($qastate,QA::ERROR) if $samechamberboards; +# $qastate = max($qastate,QA::WARN) if $samesectorboards; +# $qastate = max($qastate,QA::ERROR) if $samesectorboards > 2; +# $qastate = max($qastate,QA::WARN) if $mdcmissingtime > 200; +# $qastate = max($qastate,QA::NOTE) if $num_mdc_missing >= 1; +# +# $longtext .= "
Some boards are missing for a long time. Better do a restart." if $mdcmissingtime > 360; +# +# Hmon::Speak('mdcmissonce',"$num_mdc_missing M-D-C Frontends missing") if($qastate > 60 && $qastate < QA::ERROR ); +# Hmon::Speak('mdcmiss',"$num_mdc_missing M-D-C Frontends missing") if($qastate >= QA::ERROR ); +# QA::WriteQALog($flog,"endp","mdc",$waittime,$qastate,$title,$value,$longtext); +# if($qastate > 60) { +# $longtext =~ s/\//g; +# $longtext =~ s/\(/\\\\\(/g; +# $longtext =~ s/\)/\\\\\)/g; +# system("logger -p local1.info -t DAQ Endp \\ $longtext") unless (($timecnt->{mdc}++)%$loggerperiod); +# } +# else {$timecnt->{mdc} = 0;} +# +# $store->{mdc}{missing} = \@sorted_mdc_results; +# $store->{mdc}{missingnumber} = $num_mdc_missing; +# $store->{mdc}{missingtime} = $mdcmissingtime; +# store($store,$storefile); +# ###RICH ######################## diff --git a/hmon/hmon_logerrors.pl b/hmon/hmon_logerrors.pl index f60c077..436b342 100755 --- a/hmon/hmon_logerrors.pl +++ b/hmon/hmon_logerrors.pl @@ -139,7 +139,7 @@ while (1) { my $value = ""; $value = "$trginperr errors" if $trginperr; - QA::WriteQALog($fqa, "feeerr", "trginp", 60, ($trginperr>5)?QA::ERROR:QA::OK, "Trg. Inputs",$value ,$trginperrlist); + QA::WriteQALog($fqa, "feeerr", "trginp", 60, ($trginperr>10)?QA::WARN_2:QA::OK, "Trg. Inputs",$value ,$trginperrlist); #Clean up and sleep (also needed at start-up) trb_register_write(0xffff,0x20,0x10); diff --git a/hmon/hmon_mdc_busy.pl b/hmon/hmon_mdc_busy.pl old mode 100755 new mode 100644 diff --git a/hmon/hmon_mdc_linkerr.pl b/hmon/hmon_mdc_linkerr.pl old mode 100755 new mode 100644 diff --git a/hmon/hmon_mdc_plotmissingboards.pl b/hmon/hmon_mdc_plotmissingboards.pl old mode 100755 new mode 100644 diff --git a/hmon/hmon_mdc_rate.pl b/hmon/hmon_mdc_rate.pl old mode 100755 new mode 100644 diff --git a/hmon/hmon_mdc_ratecheck.pl b/hmon/hmon_mdc_ratecheck.pl old mode 100755 new mode 100644 diff --git a/hmon/hmon_mdc_retr.pl b/hmon/hmon_mdc_retr.pl old mode 100755 new mode 100644 diff --git a/hmon/hmon_mdc_tokenmiss.pl b/hmon/hmon_mdc_tokenmiss.pl old mode 100755 new mode 100644 diff --git a/hmon/hmon_mdc_voltage.pl b/hmon/hmon_mdc_voltage.pl old mode 100755 new mode 100644 diff --git a/hmon/hmon_mdcnew_endpoints.pl b/hmon/hmon_mdcnew_endpoints.pl index 773cd7b..49182a3 100755 --- a/hmon/hmon_mdcnew_endpoints.pl +++ b/hmon/hmon_mdcnew_endpoints.pl @@ -28,13 +28,38 @@ while(1) { ####config my @mdc_boards; + push(@mdc_boards,(0x8015,0x8016)); +# push(@mdc_boards,(0x8500, 0x8501, 0x8502, 0x8503, 0x8504, 0x8510, 0x8511, 0x8512, 0x8513, 0x8520, 0x8521, 0x8522, 0x8523, 0x8530, 0x8531, 0x8532, 0x8533, 0x8540, 0x8541, 0x8542, 0x8543, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554)); #MDC 1/2 hubs +# push(@mdc_boards,(0x8560, 0x8561, 0x8562, 0x8563, 0x8570, 0x8571, 0x8572, 0x8573, 0x8580, 0x8581, 0x8582, 0x8583, 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85b0, 0x85b1, 0x85b2, 0x85b3)); #MDC 3/4 hubs w/o sec. 4 -push(@mdc_boards,(0x8500, 0x8501, 0x8502, 0x8503, 0x8504, 0x8510, 0x8511, 0x8512, 0x8513, 0x8520, 0x8521, 0x8522, 0x8523, 0x8530, 0x8531, 0x8532, 0x8533, 0x8540, 0x8541, 0x8542, 0x8543, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554)); #MDC 1/2 hubs +# push(@mdc_boards,( 0x8e00, 0xa000, 0xa001, 0x8e01, 0xa010, 0xa011, 0xa012, 0x8e02, 0xa020, 0xa021, 0xa022, 0x8e03, 0xa030, 0xa031, 0x8e04, 0xa040, 0xa041, 0x8e05, 0xa050, 0xa051, 0x8e06, 0xa060, 0xa061, 0xa062, 0x8e07, 0xa070, 0xa071, 0xa072, 0x8e08, 0xa080, 0xa081, 0x8e09, 0xa090, 0xa091, 0x8e0a, 0xa0a0, 0xa0a1, 0xa0a2, 0x8e0b, 0xa0b0, 0xa0b1, 0x8e0c, 0xa0c0, 0xa0c1, 0xa0c2, 0x8e0d, 0xa0d0, 0xa0d1, 0x8e10, 0xa100, 0xa101, 0x8e11, 0xa110, 0xa111, 0xa112, 0x8e12, 0xa120, 0xa121, 0xa122, 0x8e13, 0xa130, 0xa131, 0x8e14, 0xa140, 0xa141, 0x8e15, 0xa150, 0xa151, 0x8e16, 0xa160, 0xa161, 0xa162, 0x8e17, 0xa170, 0xa171, 0xa172, 0x8e18, 0xa180, 0xa181, 0x8e19, 0xa190, 0xa191, 0x8e1a, 0xa1a0, 0xa1a1, 0xa1a2, 0x8e1b, 0xa1b0, 0xa1b1, 0x8e1c, 0xa1c0, 0xa1c1, 0xa1c2, 0x8e1d, 0xa1d0, 0xa1d1, 0x8e20, 0xa200, 0xa201, 0x8e21, 0xa210, 0xa211, 0xa212, 0x8e22, 0xa220, 0xa221, 0xa222, 0x8e23, 0xa230, 0xa231, 0x8e24, 0xa240, 0xa241, 0x8e25, 0xa250, 0xa251, 0x8e26, 0xa260, 0xa261, 0xa262, 0x8e27, 0xa270, 0xa271, 0xa272, 0x8e28, 0xa280, 0xa281, 0x8e29, 0xa290, 0xa291, 0x8e2a, 0xa2a0, 0xa2a1, 0xa2a2, 0x8e2b, 0xa2b0, 0xa2b1, 0x8e2c, 0xa2c0, 0xa2c1, 0xa2c2, 0x8e2d, 0xa2d0, 0xa2d1, 0x8e30, 0xa300, 0xa301, 0x8e31, 0xa310, 0xa311, 0xa312, 0x8e32, 0xa320, 0xa321, 0xa322, 0x8e33, 0xa330, 0xa331, 0x8e34, 0xa340, 0xa341, 0x8e35, 0xa350, 0xa351, 0x8e36, 0xa360, 0xa361, 0xa362, 0x8e37, 0xa370, 0xa371, 0xa372, 0x8e38, 0xa380, 0xa381, 0x8e39, 0xa390, 0xa391, 0x8e3a, 0xa3a0, 0xa3a1, 0xa3a2, 0x8e3b, 0xa3b0, 0xa3b1, 0x8e3c, 0xa3c0, 0xa3c1, 0xa3c2, 0x8e3d, 0xa3d0, 0xa3d1, 0x8e40, 0xa400, 0xa401, 0x8e41, 0xa410, 0xa411, 0xa412, 0x8e42, 0xa420, 0xa421, 0xa422, 0x8e43, 0xa430, 0xa431, 0x8e44, 0xa440, 0xa441, 0x8e45, 0xa450, 0xa451, 0x8e46, 0xa460, 0xa461, 0xa462, 0x8e47, 0xa470, 0xa471, 0xa472, 0x8e48, 0xa480, 0xa481, 0x8e49, 0xa490, 0xa491, 0x8e4a, 0xa4a0, 0xa4a1, 0xa4a2, 0x8e4b, 0xa4b0, 0xa4b1, 0x8e4c, 0xa4c0, 0xa4c1, 0xa4c2, 0x8e4d, 0xa4d0, 0xa4d1, 0x8e50, 0xa500, 0xa501, 0x8e51, 0xa510, 0xa511, 0xa512, 0x8e52, 0xa520, 0xa521, 0xa522, 0x8e53, 0xa530, 0xa531, 0x8e54, 0xa540, 0xa541, 0x8e55, 0xa550, 0xa551, 0x8e56, 0xa560, 0xa561, 0xa562, 0x8e57, 0xa570, 0xa571, 0xa572, 0x8e58, 0xa580, 0xa581, 0x8e59, 0xa590, 0xa591, 0x8e5a, 0xa5a0, 0xa5a1, 0xa5a2, 0x8e5b, 0xa5b0, 0xa5b1, 0x8e5c, 0xa5c0, 0xa5c1, 0xa5c2, 0x8e5d, 0xa5d0, 0xa5d1)); #MDC I +# +# push(@mdc_boards,( 0x8e60, 0xa600, 0xa601, 0x8e61, 0xa610, 0xa611, 0x8e62, 0xa620, 0xa621, 0x8e63, 0xa630, 0xa631, 0x8e64, 0xa640, 0xa641, 0x8e65, 0xa650, 0xa651, 0x8e66, 0xa660, 0xa661, 0x8e67, 0xa670, 0xa671, 0x8e68, 0xa680, 0xa681, 0x8e69, 0xa690, 0xa691, 0x8e6a, 0xa6a0, 0xa6a1, 0x8e6b, 0xa6b0, 0xa6b1, 0x8e6c, 0xa6c0, 0xa6c1, 0x8e6d, 0xa6d0, 0xa6d1, 0x8e6e, 0xa6e0, 0xa6e1, 0xa6e2, 0x8e6f, 0xa6f0, 0xa6f1, 0xa6f2, 0x8e70, 0xa700, 0xa701, 0x8e71, 0xa710, 0xa711, 0x8e72, 0xa720, 0xa721, 0x8e73, 0xa730, 0xa731, 0x8e74, 0xa740, 0xa741, 0x8e75, 0xa750, 0xa751, 0x8e76, 0xa760, 0xa761, 0x8e77, 0xa770, 0xa771, 0x8e78, 0xa780, 0xa781, 0x8e79, 0xa790, 0xa791, 0x8e7a, 0xa7a0, 0xa7a1, 0x8e7b, 0xa7b0, 0xa7b1, 0x8e7c, 0xa7c0, 0xa7c1, 0x8e7d, 0xa7d0, 0xa7d1, 0x8e7e, 0xa7e0, 0xa7e1, 0xa7e2, 0x8e7f, 0xa7f0, 0xa7f1, 0xa7f2, 0x8e80, 0xa800, 0xa801, 0x8e81, 0xa810, 0xa811, 0x8e82, 0xa820, 0xa821, 0x8e83, 0xa830, 0xa831, 0x8e84, 0xa840, 0xa841, 0x8e85, 0xa850, 0xa851, 0x8e86, 0xa860, 0xa861, 0x8e87, 0xa870, 0xa871, 0x8e88, 0xa880, 0xa881, 0x8e89, 0xa890, 0xa891, 0x8e8a, 0xa8a0, 0xa8a1, 0x8e8b, 0xa8b0, 0xa8b1, 0x8e8c, 0xa8c0, 0xa8c1, 0x8e8d, 0xa8d0, 0xa8d1, 0x8e8e, 0xa8e0, 0xa8e1, 0xa8e2, 0x8e8f, 0xa8f0, 0xa8f1, 0xa8f2, 0x8e90, 0xa900, 0xa901, 0x8e91, 0xa910, 0xa911, 0x8e92, 0xa920, 0xa921, 0x8e93, 0xa930, 0xa931, 0x8e94, 0xa940, 0xa941, 0x8e95, 0xa950, 0xa951, 0x8e96, 0xa960, 0xa961, 0x8e97, 0xa970, 0xa971, 0x8e98, 0xa980, 0xa981, 0x8e99, 0xa990, 0xa991, 0x8e9a, 0xa9a0, 0xa9a1, 0x8e9b, 0xa9b0, 0xa9b1, 0x8e9c, 0xa9c0, 0xa9c1, 0x8e9d, 0xa9d0, 0xa9d1, 0x8e9e, 0xa9e0, 0xa9e1, 0xa9e2, 0x8e9f, 0xa9f0, 0xa9f1, 0xa9f2, 0x8ea0, 0xaa00, 0xaa01, 0x8ea1, 0xaa10, 0xaa11, 0x8ea2, 0xaa20, 0xaa21, 0x8ea3, 0xaa30, 0xaa31, 0x8ea4, 0xaa40, 0xaa41, 0x8ea5, 0xaa50, 0xaa51, 0x8ea6, 0xaa60, 0xaa61, 0x8ea7, 0xaa70, 0xaa71, 0x8ea8, 0xaa80, 0xaa81, 0x8ea9, 0xaa90, 0xaa91, 0x8eaa, 0xaaa0, 0xaaa1, 0x8eab, 0xaab0, 0xaab1, 0x8eac, 0xaac0, 0xaac1, 0x8ead, 0xaad0, 0xaad1, 0x8eae, 0xaae0, 0xaae1, 0xaae2, 0x8eaf, 0xaaf0, 0xaaf1, 0xaaf2, 0x8eb0, 0xab00, 0xab01, 0x8eb1, 0xab10, 0xab11, 0x8eb2, 0xab20, 0xab21, 0x8eb3, 0xab30, 0xab31, 0x8eb4, 0xab40, 0xab41, 0x8eb5, 0xab50, 0xab51, 0x8eb6, 0xab60, 0xab61, 0x8eb7, 0xab70, 0xab71, 0x8eb8, 0xab80, 0xab81, 0x8eb9, 0xab90, 0xab91, 0x8eba, 0xaba0, 0xaba1, 0x8ebb, 0xabb0, 0xabb1, 0x8ebc, 0xabc0, 0xabc1, 0x8ebd, 0xabd0, 0xabd1, 0x8ebe, 0xabe0, 0xabe1, 0xabe2, 0x8ebf, 0xabf0, 0xabf1, 0xabf2)); #MDC II -push(@mdc_boards,( 0x8e00, 0xa000, 0xa001, 0x8e01, 0xa010, 0xa011, 0xa012, 0x8e02, 0xa020, 0xa021, 0xa022, 0x8e03, 0xa030, 0xa031, 0x8e04, 0xa040, 0xa041, 0x8e05, 0xa050, 0xa051, 0x8e06, 0xa060, 0xa061, 0xa062, 0x8e07, 0xa070, 0xa071, 0xa072, 0x8e08, 0xa080, 0xa081, 0x8e09, 0xa090, 0xa091, 0x8e0a, 0xa0a0, 0xa0a1, 0xa0a2, 0x8e0b, 0xa0b0, 0xa0b1, 0x8e0c, 0xa0c0, 0xa0c1, 0xa0c2, 0x8e0d, 0xa0d0, 0xa0d1, 0x8e10, 0xa100, 0xa101, 0x8e11, 0xa110, 0xa111, 0xa112, 0x8e12, 0xa120, 0xa121, 0xa122, 0x8e13, 0xa130, 0xa131, 0x8e14, 0xa140, 0xa141, 0x8e15, 0xa150, 0xa151, 0x8e16, 0xa160, 0xa161, 0xa162, 0x8e17, 0xa170, 0xa171, 0xa172, 0x8e18, 0xa180, 0xa181, 0x8e19, 0xa190, 0xa191, 0x8e1a, 0xa1a0, 0xa1a1, 0xa1a2, 0x8e1b, 0xa1b0, 0xa1b1, 0x8e1c, 0xa1c0, 0xa1c1, 0xa1c2, 0x8e1d, 0xa1d0, 0xa1d1, 0x8e20, 0xa200, 0xa201, 0x8e21, 0xa210, 0xa211, 0xa212, 0x8e22, 0xa220, 0xa221, 0xa222, 0x8e23, 0xa230, 0xa231, 0x8e24, 0xa240, 0xa241, 0x8e25, 0xa250, 0xa251, 0x8e26, 0xa260, 0xa261, 0xa262, 0x8e27, 0xa270, 0xa271, 0xa272, 0x8e28, 0xa280, 0xa281, 0x8e29, 0xa290, 0xa291, 0x8e2a, 0xa2a0, 0xa2a1, 0xa2a2, 0x8e2b, 0xa2b0, 0xa2b1, 0x8e2c, 0xa2c0, 0xa2c1, 0xa2c2, 0x8e2d, 0xa2d0, 0xa2d1, 0x8e30, 0xa300, 0xa301, 0x8e31, 0xa310, 0xa311, 0xa312, 0x8e32, 0xa320, 0xa321, 0xa322, 0x8e33, 0xa330, 0xa331, 0x8e34, 0xa340, 0xa341, 0x8e35, 0xa350, 0xa351, 0x8e36, 0xa360, 0xa361, 0xa362, 0x8e37, 0xa370, 0xa371, 0xa372, 0x8e38, 0xa380, 0xa381, 0x8e39, 0xa390, 0xa391, 0x8e3a, 0xa3a0, 0xa3a1, 0xa3a2, 0x8e3b, 0xa3b0, 0xa3b1, 0x8e3c, 0xa3c0, 0xa3c1, 0xa3c2, 0x8e3d, 0xa3d0, 0xa3d1, 0x8e40, 0xa400, 0xa401, 0x8e41, 0xa410, 0xa411, 0xa412, 0x8e42, 0xa420, 0xa421, 0xa422, 0x8e43, 0xa430, 0xa431, 0x8e44, 0xa440, 0xa441, 0x8e45, 0xa450, 0xa451, 0x8e46, 0xa460, 0xa461, 0xa462, 0x8e47, 0xa470, 0xa471, 0xa472, 0x8e48, 0xa480, 0xa481, 0x8e49, 0xa490, 0xa491, 0x8e4a, 0xa4a0, 0xa4a1, 0xa4a2, 0x8e4b, 0xa4b0, 0xa4b1, 0x8e4c, 0xa4c0, 0xa4c1, 0xa4c2, 0x8e4d, 0xa4d0, 0xa4d1, 0x8e50, 0xa500, 0xa501, 0x8e51, 0xa510, 0xa511, 0xa512, 0x8e52, 0xa520, 0xa521, 0xa522, 0x8e53, 0xa530, 0xa531, 0x8e54, 0xa540, 0xa541, 0x8e55, 0xa550, 0xa551, 0x8e56, 0xa560, 0xa561, 0xa562, 0x8e57, 0xa570, 0xa571, 0xa572, 0x8e58, 0xa580, 0xa581, 0x8e59, 0xa590, 0xa591, 0x8e5a, 0xa5a0, 0xa5a1, 0xa5a2, 0x8e5b, 0xa5b0, 0xa5b1, 0x8e5c, 0xa5c0, 0xa5c1, 0xa5c2, 0x8e5d, 0xa5d0, 0xa5d1)); #MDC I - -push(@mdc_boards,( 0x8e60, 0xa600, 0xa601, 0x8e61, 0xa610, 0xa611, 0x8e62, 0xa620, 0xa621, 0x8e63, 0xa630, 0xa631, 0x8e64, 0xa640, 0xa641, 0x8e65, 0xa650, 0xa651, 0x8e66, 0xa660, 0xa661, 0x8e67, 0xa670, 0xa671, 0x8e68, 0xa680, 0xa681, 0x8e69, 0xa690, 0xa691, 0x8e6a, 0xa6a0, 0xa6a1, 0x8e6b, 0xa6b0, 0xa6b1, 0x8e6c, 0xa6c0, 0xa6c1, 0x8e6d, 0xa6d0, 0xa6d1, 0x8e6e, 0xa6e0, 0xa6e1, 0xa6e2, 0x8e6f, 0xa6f0, 0xa6f1, 0xa6f2, 0x8e70, 0xa700, 0xa701, 0x8e71, 0xa710, 0xa711, 0x8e72, 0xa720, 0xa721, 0x8e73, 0xa730, 0xa731, 0x8e74, 0xa740, 0xa741, 0x8e75, 0xa750, 0xa751, 0x8e76, 0xa760, 0xa761, 0x8e77, 0xa770, 0xa771, 0x8e78, 0xa780, 0xa781, 0x8e79, 0xa790, 0xa791, 0x8e7a, 0xa7a0, 0xa7a1, 0x8e7b, 0xa7b0, 0xa7b1, 0x8e7c, 0xa7c0, 0xa7c1, 0x8e7d, 0xa7d0, 0xa7d1, 0x8e7e, 0xa7e0, 0xa7e1, 0xa7e2, 0x8e7f, 0xa7f0, 0xa7f1, 0xa7f2, 0x8e80, 0xa800, 0xa801, 0x8e81, 0xa810, 0xa811, 0x8e82, 0xa820, 0xa821, 0x8e83, 0xa830, 0xa831, 0x8e84, 0xa840, 0xa841, 0x8e85, 0xa850, 0xa851, 0x8e86, 0xa860, 0xa861, 0x8e87, 0xa870, 0xa871, 0x8e88, 0xa880, 0xa881, 0x8e89, 0xa890, 0xa891, 0x8e8a, 0xa8a0, 0xa8a1, 0x8e8b, 0xa8b0, 0xa8b1, 0x8e8c, 0xa8c0, 0xa8c1, 0x8e8d, 0xa8d0, 0xa8d1, 0x8e8e, 0xa8e0, 0xa8e1, 0xa8e2, 0x8e8f, 0xa8f0, 0xa8f1, 0xa8f2, 0x8e90, 0xa900, 0xa901, 0x8e91, 0xa910, 0xa911, 0x8e92, 0xa920, 0xa921, 0x8e93, 0xa930, 0xa931, 0x8e94, 0xa940, 0xa941, 0x8e95, 0xa950, 0xa951, 0x8e96, 0xa960, 0xa961, 0x8e97, 0xa970, 0xa971, 0x8e98, 0xa980, 0xa981, 0x8e99, 0xa990, 0xa991, 0x8e9a, 0xa9a0, 0xa9a1, 0x8e9b, 0xa9b0, 0xa9b1, 0x8e9c, 0xa9c0, 0xa9c1, 0x8e9d, 0xa9d0, 0xa9d1, 0x8e9e, 0xa9e0, 0xa9e1, 0xa9e2, 0x8e9f, 0xa9f0, 0xa9f1, 0xa9f2, 0x8ea0, 0xaa00, 0xaa01, 0x8ea1, 0xaa10, 0xaa11, 0x8ea2, 0xaa20, 0xaa21, 0x8ea3, 0xaa30, 0xaa31, 0x8ea4, 0xaa40, 0xaa41, 0x8ea5, 0xaa50, 0xaa51, 0x8ea6, 0xaa60, 0xaa61, 0x8ea7, 0xaa70, 0xaa71, 0x8ea8, 0xaa80, 0xaa81, 0x8ea9, 0xaa90, 0xaa91, 0x8eaa, 0xaaa0, 0xaaa1, 0x8eab, 0xaab0, 0xaab1, 0x8eac, 0xaac0, 0xaac1, 0x8ead, 0xaad0, 0xaad1, 0x8eae, 0xaae0, 0xaae1, 0xaae2, 0x8eaf, 0xaaf0, 0xaaf1, 0xaaf2, 0x8eb0, 0xab00, 0xab01, 0x8eb1, 0xab10, 0xab11, 0x8eb2, 0xab20, 0xab21, 0x8eb3, 0xab30, 0xab31, 0x8eb4, 0xab40, 0xab41, 0x8eb5, 0xab50, 0xab51, 0x8eb6, 0xab60, 0xab61, 0x8eb7, 0xab70, 0xab71, 0x8eb8, 0xab80, 0xab81, 0x8eb9, 0xab90, 0xab91, 0x8eba, 0xaba0, 0xaba1, 0x8ebb, 0xabb0, 0xabb1, 0x8ebc, 0xabc0, 0xabc1, 0x8ebd, 0xabd0, 0xabd1, 0x8ebe, 0xabe0, 0xabe1, 0xabe2, 0x8ebf, 0xabf0, 0xabf1, 0xabf2)); #MDC II +push(@mdc_boards,( + + +#0x8580, 0x8581, 0x8582, 0x8583, +#0x8f00, 0xb000, 0xb001, 0xb002, 0x8f01, 0xb010, 0xb011, 0x8f02, 0xb020, 0xb021, 0x8f03, 0xb030, 0xb031, 0x8f04, 0xb040, 0xb041, 0x8f05, 0xb050, 0xb051, 0xb052, 0x8f06, 0xb060, 0xb061, 0xb062, 0x8f07, 0xb070, 0xb071, 0x8f08, 0xb080, 0xb081, 0x8f09, 0xb090, 0xb091, 0x8f0a, 0xb0a0, 0xb0a1, 0x8f0b, 0xb0b0, 0xb0b1, 0xb0b2, 0x8f0c, 0xb0c0, 0xb0c1, 0x8f0d, 0xb0d0, 0xb0d1, 0xb0d2, 0x8f0e, 0xb0e0, 0xb0e1, 0xb0e2, 0x8f0f, 0xb0f0, 0xb0f1, 0x8f60, 0xb600, 0xb601, 0x8f61, 0xb610, 0xb611, 0x8f62, 0xb620, 0xb621, 0x8f63, 0xb630, 0xb631, 0xb632, 0x8f64, 0xb640, 0xb641, 0xb642, 0x8f65, 0xb650, 0xb651, 0x8f66, 0xb660, 0xb661, 0x8f67, 0xb670, 0xb671, 0x8f68, 0xb680, 0xb681, 0x8f69, 0xb690, 0xb691, 0xb692, 0x8f6a, 0xb6a0, 0xb6a1, 0xb6a2, 0x8f6b, 0xb6b0, 0xb6b1, 0x8f6c, 0xb6c0, 0xb6c1, 0x8f6d, 0xb6d0, 0xb6d1, 0xb6d2, 0x8f6e, 0xb6e0, 0xb6e1, 0xb6e2, 0x8f6f, 0xb6f0, 0xb6f1, #MDC 3/4 sec. 0 + + +#0x8570, 0x8571, 0x8572, 0x8573, +#0x8f10, 0xb100, 0xb101, 0xb102, 0x8f11, 0xb110, 0xb111, 0x8f12, 0xb120, 0xb121, 0x8f13, 0xb130, 0xb131, 0x8f14, 0xb140, 0xb141, 0x8f15, 0xb150, 0xb151, 0xb152, 0x8f16, 0xb160, 0xb161, 0xb162, 0x8f17, 0xb170, 0xb171, 0x8f18, 0xb180, 0xb181, 0x8f19, 0xb190, 0xb191, 0x8f1a, 0xb1a0, 0xb1a1, 0x8f1b, 0xb1b0, 0xb1b1, 0xb1b2, 0x8f1c, 0xb1c0, 0xb1c1, 0x8f1d, 0xb1d0, 0xb1d1, 0xb1d2, 0x8f1e, 0xb1e0, 0xb1e1, 0xb1e2, 0x8f1f, 0xb1f0, 0xb1f1, 0x8f70, 0xb700, 0xb701, 0x8f71, 0xb710, 0xb711, 0x8f72, 0xb720, 0xb721, 0x8f73, 0xb730, 0xb731, 0xb732, 0x8f74, 0xb740, 0xb741, 0xb742, 0x8f75, 0xb750, 0xb751, 0x8f76, 0xb760, 0xb761, 0x8f77, 0xb770, 0xb771, 0x8f78, 0xb780, 0xb781, 0x8f79, 0xb790, 0xb791, 0xb792, 0x8f7a, 0xb7a0, 0xb7a1, 0xb7a2, 0x8f7b, 0xb7b0, 0xb7b1, 0x8f7c, 0xb7c0, 0xb7c1, 0x8f7d, 0xb7d0, 0xb7d1, 0xb7d2, 0x8f7e, 0xb7e0, 0xb7e1, 0xb7e2, 0x8f7f, 0xb7f0, 0xb7f1, #MDC 3/4 sec. 1 + + +0x8580, 0x8581, 0x8582, 0x8582, +0x8f20, 0xb200, 0xb201, 0xb202, 0x8f21, 0xb210, 0xb211, 0x8f22, 0xb220, 0xb221, 0x8f23, 0xb230, 0xb231, 0x8f24, 0xb240, 0xb241, 0x8f25, 0xb250, 0xb251, 0xb252, 0x8f26, 0xb260, 0xb261, 0xb262, 0x8f27, 0xb270, 0xb271, 0x8f28, 0xb280, 0xb281, 0x8f29, 0xb290, 0xb291, 0x8f2a, 0xb2a0, 0xb2a1, 0x8f2b, 0xb2b0, 0xb2b1, 0xb2b2, 0x8f2c, 0xb2c0, 0xb2c1, 0x8f2d, 0xb2d0, 0xb2d1, 0xb2d2, 0x8f2e, 0xb2e0, 0xb2e1, 0xb2e2, 0x8f2f, 0xb2f0, 0xb2f1, 0x8f80, 0xb800, 0xb801, 0x8f81, 0xb810, 0xb811, 0x8f82, 0xb820, 0xb821, 0x8f83, 0xb830, 0xb831, 0xb832, 0x8f84, 0xb840, 0xb841, 0xb842, 0x8f85, 0xb850, 0xb851, 0x8f86, 0xb860, 0xb861, 0x8f87, 0xb870, 0xb871, 0x8f88, 0xb880, 0xb881, 0x8f89, 0xb890, 0xb891, 0xb892, 0x8f8a, 0xb8a0, 0xb8a1, 0xb8a2, 0x8f8b, 0xb8b0, 0xb8b1, 0x8f8c, 0xb8c0, 0xb8c1, 0x8f8d, 0xb8d0, 0xb8d1, 0xb8d2, 0x8f8e, 0xb8e0, 0xb8e1, 0xb8e2, 0x8f8f, 0xb8f0, 0xb8f1, #MDC 3/4 sec. 2 + +0x8590, 0x8591, 0x8592, 0x8593, +0x8f30, 0xb300, 0xb301, 0xb302, 0x8f31, 0xb310, 0xb311, 0x8f32, 0xb320, 0xb321, 0x8f33, 0xb330, 0xb331, 0x8f34, 0xb340, 0xb341, 0x8f35, 0xb350, 0xb351, 0xb352, 0x8f36, 0xb360, 0xb361, 0xb362, 0x8f37, 0xb370, 0xb371, 0x8f38, 0xb380, 0xb381, 0x8f39, 0xb390, 0xb391, 0x8f3a, 0xb3a0, 0xb3a1, 0x8f3b, 0xb3b0, 0xb3b1, 0xb3b2, 0x8f3c, 0xb3c0, 0xb3c1, 0x8f3d, 0xb3d0, 0xb3d1, 0xb3d2, 0x8f3e, 0xb3e0, 0xb3e1, 0xb3e2, 0x8f3f, 0xb3f0, 0xb3f1, 0x8f90, 0xb900, 0xb901, 0x8f91, 0xb910, 0xb911, 0x8f92, 0xb920, 0xb921, 0x8f93, 0xb930, 0xb931, 0xb932, 0x8f94, 0xb940, 0xb941, 0xb942, 0x8f95, 0xb950, 0xb951, 0x8f96, 0xb960, 0xb961, 0x8f97, 0xb970, 0xb971, 0x8f98, 0xb980, 0xb981, 0x8f99, 0xb990, 0xb991, 0xb992, 0x8f9a, 0xb9a0, 0xb9a1, 0xb9a2, 0x8f9b, 0xb9b0, 0xb9b1, 0x8f9c, 0xb9c0, 0xb9c1, 0x8f9d, 0xb9d0, 0xb9d1, 0xb9d2, 0x8f9e, 0xb9e0, 0xb9e1, 0xb9e2, 0x8f9f, 0xb9f0, 0xb9f1, #MDC 3/4 sec. 3 + +0x85a0, 0x85a1, 0x85a2, 0x85a3, +0x8f40, 0xb400, 0xb401, 0xb402, 0x8f41, 0xb410, 0xb411, 0x8f42, 0xb420, 0xb421, 0x8f43, 0xb430, 0xb431, 0x8f44, 0xb440, 0xb441, 0x8f45, 0xb450, 0xb451, 0xb452, 0x8f46, 0xb460, 0xb461, 0xb462, 0x8f47, 0xb470, 0xb471, 0x8f48, 0xb480, 0xb481, 0x8f49, 0xb490, 0xb491, 0x8f4a, 0xb4a0, 0xb4a1, 0x8f4b, 0xb4b0, 0xb4b1, 0xb4b2, 0x8f4c, 0xb4c0, 0xb4c1, 0x8f4d, 0xb4d0, 0xb4d1, 0xb4d2, 0x8f4e, 0xb4e0, 0xb4e1, 0xb4e2, 0x8f4f, 0xb4f0, 0xb4f1, 0x8fa0, 0xba00, 0xba01, 0x8fa1, 0xba10, 0xba11, 0x8fa2, 0xba20, 0xba21, 0x8fa3, 0xba30, 0xba31, 0xba32, 0x8fa4, 0xba40, 0xba41, 0xba42, 0x8fa5, 0xba50, 0xba51, 0x8fa6, 0xba60, 0xba61, 0x8fa7, 0xba70, 0xba71, 0x8fa8, 0xba80, 0xba81, 0x8fa9, 0xba90, 0xba91, 0xba92, 0x8faa, 0xbaa0, 0xbaa1, 0xbaa2, 0x8fab, 0xbab0, 0xbab1, 0x8fac, 0xbac0, 0xbac1, 0x8fad, 0xbad0, 0xbad1, 0xbad2, 0x8fae, 0xbae0, 0xbae1, 0xbae2, 0x8faf, 0xbaf0, 0xbaf1, #MDC 3/4 sec. 4 + +#0x85b0, 0x85b1, 0x85b2, 0x85b3, +#0x8f50, 0xb500, 0xb501, 0xb502, 0x8f51, 0xb510, 0xb511, 0x8f52, 0xb520, 0xb521, 0x8f53, 0xb530, 0xb531, 0x8f54, 0xb540, 0xb541, 0x8f55, 0xb550, 0xb551, 0xb552, 0x8f56, 0xb560, 0xb561, 0xb562, 0x8f57, 0xb570, 0xb571, 0x8f58, 0xb580, 0xb581, 0x8f59, 0xb590, 0xb591, 0x8f5a, 0xb5a0, 0xb5a1, 0x8f5b, 0xb5b0, 0xb5b1, 0xb5b2, 0x8f5c, 0xb5c0, 0xb5c1, 0x8f5d, 0xb5d0, 0xb5d1, 0xb5d2, 0x8f5e, 0xb5e0, 0xb5e1, 0xb5e2, 0x8f5f, 0xb5f0, 0xb5f1, 0x8fb0, 0xbb00, 0xbb01, 0x8fb1, 0xbb10, 0xbb11, 0x8fb2, 0xbb20, 0xbb21, 0x8fb3, 0xbb30, 0xbb31, 0xbb32, 0x8fb4, 0xbb40, 0xbb41, 0xbb42, 0x8fb5, 0xbb50, 0xbb51, 0x8fb6, 0xbb60, 0xbb61, 0x8fb7, 0xbb70, 0xbb71, 0x8fb8, 0xbb80, 0xbb81, 0x8fb9, 0xbb90, 0xbb91, 0xbb92, 0x8fba, 0xbba0, 0xbba1, 0xbba2, 0x8fbb, 0xbbb0, 0xbbb1, 0x8fbc, 0xbbc0, 0xbbc1, 0x8fbd, 0xbbd0, 0xbbd1, 0xbbd2, 0x8fbe, 0xbbe0, 0xbbe1, 0xbbe2, 0x8fbf, 0xbbf0, 0xbbf1, #MDC 3/4 sec. 5 +)); my $totalboards = scalar @mdc_boards; my $removedboards = scalar @QA::mdc_new_boards_removed; my $missingboards; @@ -133,7 +158,7 @@ my $longtext = ""; Hmon::Speak('mdcmissonce',"$missing_number new M-D-C Frontends missing") if($qastate > 60 && $qastate < QA::ERROR ); Hmon::Speak('mdcmiss',"$missing_number new M-D-C Frontends missing") if($qastate >= QA::ERROR ); -QA::WriteQALog($flog,"endp","mdc12",10,$qastate,"MDC 1/2",$value,$longtext); +QA::WriteQALog($flog,"endp","mdc12",10,$qastate,"MDC",$value,$longtext); sleep(5); } diff --git a/hmon/hmon_mdcnew_missing.pl b/hmon/hmon_mdcnew_missing.pl index 2d2f4ad..b07fcd9 100755 --- a/hmon/hmon_mdcnew_missing.pl +++ b/hmon/hmon_mdcnew_missing.pl @@ -20,9 +20,9 @@ trb_init_ports() or die trb_strerror(); while (1) { my $store; - my $boards = trb_register_read(0xfffb,0) or sleep 5 and next; + my $boards = trb_register_read(0xfffb,0); # or sleep 5 and next; # print Dumper $boards; - for (my $l = 0; $l < 2;$l++) { + for (my $l = 0; $l < 4;$l++) { for (my $s = 0; $s < 6;$s++) { for (my $b = 0; $b < 16;$b++) { next unless defined $boards->{MDC::get_address($l,$s,$b,5)}; @@ -41,9 +41,9 @@ while (1) { my $cnt = 0; - my $page = Hmon::MakeTitle(10, 6, "MDCnew Missing"); + my $page = Hmon::MakeTitle(9, 10, "MDCnew Missing"); my ($color,$raw); - for (my $l = 0; $l < 2;$l++) { + for (my $l = 0; $l < 4;$l++) { $page .= "

"; for (my $s = 0; $s < 6;$s++) { for (my $b = 0; $b < 16; $b++) { diff --git a/hmon/hmon_mdcnew_rate.pl b/hmon/hmon_mdcnew_rate.pl index 09f5cfa..7fd6d4c 100755 --- a/hmon/hmon_mdcnew_rate.pl +++ b/hmon/hmon_mdcnew_rate.pl @@ -25,22 +25,22 @@ HPlot::PlotInit({ file => "files/MdcRate", title => "MDC Rate", entries => 96, - curves => 240, + curves => 480, type => HPlot::TYPE_HEATMAP, output => HPlot::OUT_PNG, zlabel => "Hitrate", sizex => 510, - sizey => 810, + sizey => 1170, nokey => 1, buffer => 1, - ymin => 239.5, + ymin => 479.5, ymax => -0.5, xmin => -0.5, xmax => 95.5, cbmax => "1000<*<1E6", cbmin => 0, noinit => 1, - additional => "set logscale cb;set format cb \"_{10}{\%L}\";set xtics ('0' -0.5, '16' 15.5, '32' 31.5, '48' 47.5, '64' 63.5, '80' 79.5); set ytics ('I0' 8,'I2' 48,'I4' 88,'II0' 128,'II2' 168,'II4' 208); set grid xtics front; set ytics scale 0;", + additional => "set logscale cb;set format cb \"_{10}{\%L}\";set xtics ('0' -0.5, '16' 15.5, '32' 31.5, '48' 47.5, '64' 63.5, '80' 79.5); set ytics ('I0' 8,'I2' 48,'I4' 88,'II0' 128,'II2' 168,'II4' 208,'III0' 248,'III2' 288,'III4' 328,'IV0' 368,'IV2' 408,'IV4' 448); set grid xtics front; set ytics scale 0;", showvalues => 0, }); @@ -50,22 +50,22 @@ HPlot::PlotInit({ file => "files/MdcSpikeRate", title => "MDC Spike Rate", entries => 96, - curves => 240, + curves => 480, type => HPlot::TYPE_HEATMAP, output => HPlot::OUT_PNG, zlabel => "Hitrate", sizex => 510, - sizey => 810, + sizey => 1170, nokey => 1, buffer => 1, - ymin => 239.5, + ymin => 479.5, ymax => -0.5, xmin => -0.5, xmax => 95.5, cbmax => "1000<*<1E6", cbmin => 0, noinit => 1, - additional => "set logscale cb;set format cb \"_{10}{\%L}\";set xtics ('0' -0.5, '16' 15.5, '32' 31.5, '48' 47.5, '64' 63.5, '80' 79.5); set ytics ('I0' 8,'I2' 48,'I4' 88,'II0' 128,'II2' 168,'II4' 208); set grid xtics front; set ytics scale 0;", + additional => "set logscale cb;set format cb \"_{10}{\%L}\";set xtics ('0' -0.5, '16' 15.5, '32' 31.5, '48' 47.5, '64' 63.5, '80' 79.5); set ytics ('I0' 8,'I2' 48,'I4' 88,'II0' 128,'II2' 168,'II4' 208,'III0' 248,'III2' 288,'III4' 328,'IV0' 368,'IV2' 408,'IV4' 448); set grid xtics front; set ytics scale 0;", showvalues => 0, }); @@ -99,7 +99,7 @@ HPlot::PlotInit({ }); -my $str = Hmon::MakeTitle(13, 17, "MDC Saved Hit Rate / MDC Spike Rate",0); +my $str = Hmon::MakeTitle(13, 24, "MDC Saved Hit Rate / MDC Spike Rate",0); $str .= qq@\n@; $str .= qq@\n@; $str .= Hmon::MakeFooter(); @@ -136,13 +136,13 @@ while(1) { my $tdiff->[0] = (time() - $oldtime->[0])||1; $oldtime->[0] = time(); - my $o->[0] = trb_register_read_mem(0xfe91,0xc120,0,32) or die trb_strerror() or sleep 5 and next; + my $o->[0] = trb_register_read_mem(0xfe91,0xc120,0,32) or sleep 5 and next; $tdiff->[1] = (time() - $oldtime->[1])||1; $oldtime->[1] = time(); - $o->[1] = trb_register_read_mem(0xfe91,0xc100,0,32) or die trb_strerror() or sleep 5 and next; + $o->[1] = trb_register_read_mem(0xfe91,0xc100,0,32) or sleep 5 and next; $tdiff->[2] = (time() - $oldtime->[2])||1; $oldtime->[2] = time(); - $o->[2] = trb_register_read_mem(0xfe91,0xdfc0,0,32) or die trb_strerror() or sleep 5 and next; + $o->[2] = trb_register_read_mem(0xfe91,0xdfc0,0,32) or sleep 5 and next; if (defined $old) { foreach my $b (keys %{$o->[0]}) { diff --git a/hmon/hmon_mdcnew_temp.pl b/hmon/hmon_mdcnew_temp.pl index 715b838..59ffd66 100755 --- a/hmon/hmon_mdcnew_temp.pl +++ b/hmon/hmon_mdcnew_temp.pl @@ -52,8 +52,8 @@ while (1) { } ($min,$max) = Hmon::MakeMinMax3($store, 4, 6, 16); - $str[0][4] = Hmon::MakeTitle(10, 6, "MDC Temperatures"); - for (my $l = 0; $l < 2;$l++) { + $str[0][4] = Hmon::MakeTitle(9, 10, "MDC Temperatures"); + for (my $l = 0; $l < 4;$l++) { # $str[0][$l] = Hmon::MakeTitle(9, 3, "MDC $l Temperatures"); $str[1][$l] = ""; for (my $s = 0; $s < 6;$s++) { @@ -67,7 +67,7 @@ while (1) { } $str[2][0] = Hmon::DrawScale($min,$max,42); $str[2][0] .= Hmon::MakeFooter(); - Hmon::WriteFile("MDCNewTemperature",$str[0][4]."

".$str[1][0]."

".$str[1][1]."

".$str[2][0]);#."

".$str[1][2]."

".$str[1][3].$str[2][0]); + Hmon::WriteFile("MDCNewTemperature",$str[0][4]."

".$str[1][0]."

".$str[1][1]."

".$str[1][2]."

".$str[1][3]."

".$str[2][0]);#."

".$str[1][2]."

".$str[1][3].$str[2][0]); $store = {}; diff --git a/hmon/hmon_mdcnew_voltage.pl b/hmon/hmon_mdcnew_voltage.pl index 35dcb97..a1e5c85 100755 --- a/hmon/hmon_mdcnew_voltage.pl +++ b/hmon/hmon_mdcnew_voltage.pl @@ -83,7 +83,36 @@ while (1) { } $page .= Hmon::MakeFooter(); - Hmon::WriteFile("MDCNewVoltage",$page); + Hmon::WriteFile("MDCNewVoltage12",$page); + +#####Repeat for MDC III/IV + $cnt = 0; + $page = Hmon::MakeTitle(9, 21, "MDCnew Voltages"); + foreach my $regs (@$store2) { +# my ($min,$max) = ($fminimum[$cnt],$fmaximum[$cnt]); +# my ($min,$max) = Hmon::MakeMinMax3( $regs, 4, 6, 16); +# print "$min $max\n"; + my ($color,$raw); + for (my $l = 2; $l < 4;$l++) { + $page .= "

"; + for (my $s = 0; $s < 6;$s++) { + for (my $b = 0; $b < 16; $b++) { + $color->{$b} = sprintf("style=\"background:%4s;\"",Hmon::findcolorVoltages($regs->{$l}->{$s}->{$b}//0,$fminimum[$cnt],$fmaximum[$cnt],$minimum[$cnt],$maximum[$cnt],0)); +# $color->{$b} = "style=\"background:#000;\"" unless defined $regs->{$l}->{$s}->{$b}; + + $raw->{$b} = sprintf("%1.2f",$regs->{$l}->{$s}->{$b}//"NaN"); + } + $page .= Hmon::DrawMDC($l,$s,$color,$raw); + } + } + $page .= Hmon::DrawScaleVoltages($fminimum[$cnt],$fmaximum[$cnt],$minimum[$cnt],$maximum[$cnt],42); + $cnt++; + } + + $page .= Hmon::MakeFooter(); + Hmon::WriteFile("MDCNewVoltage34",$page); + + sleep 30; diff --git a/hmon/index.cgi b/hmon/index.cgi index c33e415..e89096a 100755 --- a/hmon/index.cgi +++ b/hmon/index.cgi @@ -39,10 +39,9 @@ function openwin(url) {