Subversion Repositories f9daq

Rev

Rev 162 | Rev 164 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 162 Rev 163
1
#include "MPOD.h"
1
#include "MPOD.h"
-
 
2
#include <utility.h>
2
#include "HVtest_ui.h"
3
#include "HVtest_ui.h"
3
 
4
 
4
#define HVSLOT 3
5
#define HVSLOT 3
5
 
6
 
6
static int p1h, pID, rID, tfID;
7
static int p1h, pID, rID, tfID;
7
 
8
 
8
int CVICALLBACK refreshTimer (int panel, int control, int event, void *callbackData,
9
int CVICALLBACK refreshTimer (int panel, int control, int event, void *callbackData,
9
                              int eventData1, int eventData2) {
10
                              int eventData1, int eventData2) {
10
  QueueUserEvent (9000, p1h, P1_REFRESHTIMER);
11
  QueueUserEvent (9000, p1h, P1_REFRESHTIMER);
11
  return (0);
12
  return (0);
12
}
13
}
13
 
14
 
14
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
15
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
15
                       LPSTR lpszCmdLine, int nCmdShow) {
16
                       LPSTR lpszCmdLine, int nCmdShow) {
16
 
17
 
17
  const int mo=3;
18
  const int mo=HVSLOT;
18
  const int ch0=100*mo;
19
  const int ch0=100*mo;
19
 
20
 
20
  int mainonoff,HVonoffall;
21
  int mainonoff,HVonoffall;
21
  int HVonoff[4],HVonoff_rID[4]={P1_HVonoff_0,P1_HVonoff_1,P1_HVonoff_2,P1_HVonoff_3};
22
  int HVonoff[4],HVonoff_rID[4]={P1_HVonoff_0,P1_HVonoff_1,P1_HVonoff_2,P1_HVonoff_3};
22
  int HVvdis_rID[4]={P1_HVvdis_0,P1_HVvdis_1,P1_HVvdis_2,P1_HVvdis_3};
23
  int HVvdis_rID[4]={P1_HVvdis_0,P1_HVvdis_1,P1_HVvdis_2,P1_HVvdis_3};
23
  int HVcdis_rID[4]={P1_HVcdis_0,P1_HVcdis_1,P1_HVcdis_2,P1_HVcdis_3};
24
  int HVcdis_rID[4]={P1_HVcdis_0,P1_HVcdis_1,P1_HVcdis_2,P1_HVcdis_3};
24
  int iret;
25
  int iret;
25
  int i, j;
26
  int i, j;
26
  double ret;
27
  double ret;
27
  double HVvset[4],HVcset[4],HVvrise,HVvfall;
28
  double HVvset[4],HVcset[4],HVvrise,HVvfall;
28
  double HVvdis[4],HVcdis[4];
29
  double HVvdis[4],HVcdis[4];
29
  char cret[2000];
30
  char cret[2000];
30
  char cMainSwitch[2][30]= {"Turn system OFF?","Turn system ON?"};
31
  char cMainSwitch[2][30]= {"Turn system OFF?","Turn system ON?"};
31
 
32
 
32
  HSNMP crate1;
33
  HSNMP crate1;
33
 
34
 
34
  if (InitCVIRTE (hInstance, 0, 0) == 0)
35
  if (InitCVIRTE (hInstance, 0, 0) == 0)
35
    return -1;    /* out of memory */
36
    return -1;    /* out of memory */
36
 
37
 
37
  MPOD_Start();
38
  MPOD_Start();
38
//  MPOD_Open(0,"f9mpod.ijs.si");
39
//  MPOD_Open(0,"f9mpod.ijs.si");
39
  MPOD_Open(0,"arich-mpod1.kek.jp");
40
  MPOD_Open(0,"arich-mpod1.kek.jp");
40
  crate1 = crateHsnmp[0];
41
  crate1 = crateHsnmp[0];
41
 
42
 
42
//  iret=MPOD_GetInt(0,"moduleNumber.0");
43
//  iret=MPOD_GetInt(0,"moduleNumber.0");
43
//  printf("Module Number = %i\n", iret);
44
//  printf("Module Number = %i\n", iret);
44
//  strcpy(cret, MPOD_GetString(0,"moduleDescription.ma2"));
45
//  strcpy(cret, MPOD_GetString(0,"moduleDescription.ma2"));
45
//  printf("Module type: %s\n",cret);
46
//  printf("Module type: %s\n",cret);
46
//  iret=MPOD_GetIntCh(0,"fanNominalSpeed",0);
47
//  iret=MPOD_GetIntCh(0,"fanNominalSpeed",0);
47
//  printf("Fan nominal speed = %i\n", iret);
48
//  printf("Fan nominal speed = %i\n", iret);
48
 
49
 
49
  if ((p1h = LoadPanel (0, "HVtest_ui.uir", P1)) < 0) return -1;
50
  if ((p1h = LoadPanel (0, "HVtest_ui.uir", P1)) < 0) return -1;
50
  DisplayPanel (p1h);
51
  DisplayPanel (p1h);
51
 
52
 
52
//Initial state
53
//Initial state
53
  mainonoff=getMainSwitch(crate1);
54
  mainonoff=getMainSwitch(crate1);
54
  SetCtrlVal (p1h, P1_MSW, mainonoff);
55
  SetCtrlVal (p1h, P1_MSW, mainonoff);
55
  SetCtrlVal (p1h, P1_MSWLED, mainonoff);
56
  SetCtrlVal (p1h, P1_MSWLED, mainonoff);
56
  iret=getMainStatus(crate1);
57
  iret=getMainStatus(crate1);
57
  SetCtrlVal (p1h, P1_MST, iret);
58
  SetCtrlVal (p1h, P1_MST, iret);
58
  iret=getFanNominalSpeed(crate1);
59
  iret=getFanNominalSpeed(crate1);
59
  SetCtrlVal (p1h, P1_MFS, iret);
60
  SetCtrlVal (p1h, P1_MFS, iret);
60
  if (mainonoff) {
61
  if (mainonoff) {
61
    HVonoffall=0;
62
    HVonoffall=0;
62
    for (i=0;i<4;i++) {
63
    for (i=0;i<4;i++) {
63
      HVonoff[i]=getChannelSwitch(crate1, ch0+i);
64
      HVonoff[i]=getChannelSwitch(crate1, ch0+i);
64
      if (HVonoff[i]) HVonoffall=1;
65
      if (HVonoff[i]) HVonoffall=1;
65
    }
66
    }
66
    for (i=0;i<4;i++) {
67
    for (i=0;i<4;i++) {
67
      if (!HVonoffall) HVonoff[i]=1;
68
      if (!HVonoffall) HVonoff[i]=1;
68
      SetCtrlVal (p1h, HVonoff_rID[i], HVonoff[i]);
69
        SetCtrlVal (p1h, HVonoff_rID[i], HVonoff[i]);
69
    }
70
    }
70
    HVvset[0]=getOutputVoltage(crate1,ch0);
71
    HVvset[0]=getOutputVoltage(crate1,ch0);
71
    SetCtrlVal (p1h, P1_HVvset, HVvset[0]);
72
    SetCtrlVal (p1h, P1_HVvset, HVvset[0]);
72
    HVcset[0]=1e+6*getOutputCurrent(crate1,ch0);
73
    HVcset[0]=1e+6*getOutputCurrent(crate1,ch0);
73
    SetCtrlVal (p1h, P1_HVcset, HVcset[0]);
74
    SetCtrlVal (p1h, P1_HVcset, HVcset[0]);
-
 
75
    SetAxisScalingMode (p1h, P1_G1, VAL_LEFT_YAXIS, VAL_MANUAL, -(HVcset[0]+1), 1.);
74
    HVvrise=getModuleRampSpeedVoltage(crate1,mo);
76
    HVvrise=getModuleRampSpeedVoltage(crate1,mo);
75
    SetCtrlVal (p1h, P1_HVvrise, HVvrise);
77
    SetCtrlVal (p1h, P1_HVvrise, HVvrise);
76
//    vfall[0]=abs(getOutputFallRate(crate1,ch));
78
//    vfall[0]=abs(getOutputFallRate(crate1,ch));
77
//    SetCtrlVal (p1h, P1_VFA0, vfall[0]);
79
//    SetCtrlVal (p1h, P1_VFA0, vfall[0]);
78
  }
80
  }
79
//  QueueUserEvent (1000, p1h, P1_RESET);
81
//  QueueUserEvent (1000, p1h, P1_RESET);
80
  QueueUserEvent (9000, p1h, P1_REFRESHTIMER);
82
  QueueUserEvent (9000, p1h, P1_REFRESHTIMER);
81
 
83
 
82
  do {
84
  do {
83
    GetUserEvent (1, &pID, &rID);
85
    GetUserEvent (1, &pID, &rID);
84
    switch (rID) {
86
    switch (rID) {
85
      case P1_REFRESHTIMER:
87
      case P1_REFRESHTIMER:
86
        mainonoff=getMainSwitch(crate1);
88
        mainonoff=getMainSwitch(crate1);
87
        SetCtrlVal (p1h, P1_MSW, mainonoff);
89
        SetCtrlVal (p1h, P1_MSW, mainonoff);
88
        SetCtrlVal (p1h, P1_MSWLED, mainonoff);
90
        SetCtrlVal (p1h, P1_MSWLED, mainonoff);
89
        iret=getMainStatus(crate1);
91
        iret=getMainStatus(crate1);
90
        SetCtrlVal (p1h, P1_MST, iret);
92
        SetCtrlVal (p1h, P1_MST, iret);
91
//        ret=getOutputSenseMeasurement(crate1, ch);
93
//        ret=getOutputSenseMeasurement(crate1, ch);
92
        for (i=0;i<4;i++) {
94
        for (i=0;i<4;i++) {
93
          HVvdis[i]=getOutputTerminalMeasurement(crate1, ch0+i);
95
          HVvdis[i]=getOutputTerminalMeasurement(crate1, ch0+i);
94
          SetCtrlVal (p1h, HVvdis_rID[i], HVvdis[i]);
96
          SetCtrlVal (p1h, HVvdis_rID[i], HVvdis[i]);
95
          HVcdis[i]=1e+6*getCurrentMeasurement(crate1, ch0+i);
97
          HVcdis[i]=1e+6*getCurrentMeasurement(crate1, ch0+i);
96
          SetCtrlVal (p1h, HVcdis_rID[i], HVcdis[i]);
98
          SetCtrlVal (p1h, HVcdis_rID[i], HVcdis[i]);
-
 
99
        }
97
          PlotStripChart (p1h, P1_G1, HVcdis, 4, 0, 0, VAL_DOUBLE);
100
        PlotStripChart (p1h, P1_G1, HVcdis, 4, 0, 0, VAL_DOUBLE);
98
        break;
101
        break;
99
      case P1_MSW:
102
      case P1_MSW:
100
        GetCtrlVal (p1h, P1_MSW, &mainonoff);
103
        GetCtrlVal (p1h, P1_MSW, &mainonoff);
101
        if (ConfirmPopup("Main switch!!!", cMainSwitch[mainonoff]))
104
        if (ConfirmPopup("Main switch!!!", cMainSwitch[mainonoff]))
102
          setMainSwitch(crate1, mainonoff);
105
          setMainSwitch(crate1, mainonoff);
103
        if (mainonoff) {
106
        if (mainonoff) {
104
          Delay(5);
107
          Delay(5);
105
          HVonoffall=0;
108
          HVonoffall=0;
106
          for (i=0; i<4; i++) {
109
          for (i=0; i<4; i++) {
107
            HVonoff[i]=getChannelSwitch(crate1, ch0+i);
110
            HVonoff[i]=getChannelSwitch(crate1, ch0+i);
108
            if (HVonoff[i]) HVonoffall=1;
111
            if (HVonoff[i]) HVonoffall=1;
109
          }
112
          }
110
          for (i=0; i<4; i++) {
113
          for (i=0; i<4; i++) {
111
            if (!HVonoffall) HVonoff[i]=1;
114
            if (!HVonoffall) HVonoff[i]=1;
112
            SetCtrlVal (p1h, HVonoff_rID[i], HVonoff[i]);
115
            SetCtrlVal (p1h, HVonoff_rID[i], HVonoff[i]);
113
          }
116
          }
114
          HVvset[0]=getOutputVoltage(crate1,ch0);
117
          HVvset[0]=getOutputVoltage(crate1,ch0);
115
          SetCtrlVal (p1h, P1_HVvset, HVvset[0]);
118
          SetCtrlVal (p1h, P1_HVvset, HVvset[0]);
116
          HVcset[0]=1e+6*getOutputCurrent(crate1,ch0);
119
          HVcset[0]=1e+6*getOutputCurrent(crate1,ch0);
117
          SetCtrlVal (p1h, P1_HVcset, HVcset[0]);
120
          SetCtrlVal (p1h, P1_HVcset, HVcset[0]);
-
 
121
          SetAxisScalingMode (p1h, P1_G1, VAL_LEFT_YAXIS, VAL_MANUAL, -(HVcset[0]+1), 1.);
118
          HVvrise=getModuleRampSpeedVoltage(crate1,mo);
122
          HVvrise=getModuleRampSpeedVoltage(crate1,mo);
119
          SetCtrlVal (p1h, P1_HVvrise, HVvrise);
123
          SetCtrlVal (p1h, P1_HVvrise, HVvrise);
120
        }
124
        }
121
        break;
125
        break;
122
    }
126
      }
123
    if (!mainonoff) continue;
127
    if (!mainonoff) continue;
124
    switch (rID) {
128
    switch (rID) {
125
      case P1_HVonoff:
129
      case P1_HVonoffall:
126
        GetCtrlVal (p1h, P1_HVonoff, &HVonoffall);
130
        GetCtrlVal (p1h, P1_HVonoffall, &HVonoffall);
-
 
131
        for (i=0;i<4;i++) {
-
 
132
          GetCtrlVal (p1h, HVonoff_rID[i], &HVonoff[i]);
-
 
133
          if (HVonoff[i])
127
        for (i=0;i<4;isetChannelSwitch(crate1, ch, onoff[0]);
134
            setChannelSwitch(crate1, ch0+i, HVonoffall);
-
 
135
        }
128
        break;
136
        break;
129
      case P1_V0:
137
      case P1_HVvset:
130
        GetCtrlVal (p1h, P1_V0, &vset[0]);
138
        GetCtrlVal (p1h, P1_HVvset, &HVvset[0]);
-
 
139
        for (i=0;i<4;i++)
131
        setOutputVoltage(crate1, ch, vset[0]);
140
          setOutputVoltage(crate1, ch0+i, HVvset[0]);
132
        break;
141
        break;
133
      case P1_C0:
142
      case P1_HVcset:
134
        GetCtrlVal (p1h, P1_C0, &cset[0]);
143
        GetCtrlVal (p1h, P1_HVcset, &HVcset[0]);
-
 
144
        SetAxisScalingMode (p1h, P1_G1, VAL_LEFT_YAXIS, VAL_MANUAL, -(HVcset[0]+1), 1.);
135
        cset[0]/=1e+6; //[uA]
145
        HVcset[0]/=1e+6; //[uA]
-
 
146
        for (i=0;i<4;i++)
136
        setOutputCurrent(crate1, ch, cset[0]);
147
          setOutputCurrent(crate1, ch0+i, HVcset[0]);
137
        break;
148
        break;
138
      case P1_VRI0:
149
      case P1_HVvrise:
139
        GetCtrlVal (p1h, P1_VRI0, &ret);
150
        GetCtrlVal (p1h, P1_HVvrise, &HVvrise);
140
        setModuleRampSpeedVoltage(crate1, mo, ret);
151
        setModuleRampSpeedVoltage(crate1, mo, HVvrise);
141
        vrise[0]=getModuleRampSpeedVoltage(crate1,mo);
152
        HVvrise=getModuleRampSpeedVoltage(crate1,mo);
142
        SetCtrlVal (p1h, P1_VRI0, vrise[0]);
153
        SetCtrlVal (p1h, P1_HVvrise, HVvrise);
143
        break;
154
        break;
144
//      case P1_VFA0:
155
//      case P1_VFA0:
145
//        GetCtrlVal (p1h, P1_VFA0, &ret);
156
//        GetCtrlVal (p1h, P1_VFA0, &ret);
146
//        setOutputFallRate(crate1, ch, ret);
157
//        setOutputFallRate(crate1, ch, ret);
147
//        vfall[0]=abs(getOutputFallRate(crate1,ch));
158
//        vfall[0]=abs(getOutputFallRate(crate1,ch));
148
//        SetCtrlVal (p1h, P1_VFA0, vfall[0]);
159
//        SetCtrlVal (p1h, P1_VFA0, vfall[0]);
149
//        break;
160
//        break;
150
    }
161
    }
151
  } while ((rID != P1_EXIT));
162
  } while ((rID != P1_EXIT));
152
 
163
 
153
  DiscardPanel (p1h);
164
  DiscardPanel (p1h);
154
 
165
 
155
  MPOD_Close(0);
166
  MPOD_Close(0);
156
  MPOD_End();
167
  MPOD_End();
157
 
168
 
158
  return 0;
169
  return 0;
159
}
170
}
160
 
171