update stages config

This commit is contained in:
2023-11-23 16:29:54 +01:00
parent 348fe208d1
commit 228caf0729
9 changed files with 88 additions and 350 deletions

View File

@@ -1463,4 +1463,21 @@ Sys.Udata[0];EncTable[20].PrevEnc
2.1 trigger zu spät
1.9 trigger zu früh
```
23.11.23 Changing stages
------------------------
```
https://jira.psi.ch/browse/SFELPHOTON-888
recommissioning exchanged stages. The software must not be changed.
the cabeling has to change so that it fits as it worked before.
SAR-EXPMX:MOT_FX: stages behave totally different not working
SAR-EXPMX:MOT_FY: stages behave totally different not working.encoder counts inverse?
SAR-EXPMX:MOT_CX: moves in closed loop, limitswitch +- must be swapped
SAR-EXPMX:MOT_CZ: moves in closed loop, limitswitch +- must be swapped
SAR-EXPMX:MOT_CY: before commissioning check encoder signal Level TTL?
-> we need the old stage to be able to check and compare each motor step by step.
```

View File

@@ -23,9 +23,16 @@
//Mot 2: Stage X Parker MX80L D11 25mm one pole cycle = 13mm = 2048 phase_step
//Enc 2: Stage X Parker MX80L D11 inc_enc 20nm one pole cycle = 13mm = 650000 enc_step (20nm/enc_step)
//OLD Stage 3
//Mot 3: Rotation stage LS Mecapion MDM-DC06DNC0H 32 poles = 1 rev = 16*2048=32768 phase_step
//Enc 3: Rotation stage LS Mecapion 1 rev = 1048576 enc_steps
// OWIS stage HMV 10N-303HiDS 42.N00.30WJ (DC-Mot. mech Endswitch Norm.Closed)
// 30mm max 12mm/s max 35V max 2.1A 500um/rev 2000enc_cnt/rev Incr. enc with home mark TTL level
//Mot 3: Stage Y DC-Motor (Brushed DC)
//Enc 3: Stage Y Incr. Encoder
//Mot 4: Stage X Stada Stepper 670mA 200 poles 1 rev = 100*2048 phase_step (2 stepper motor)
//Enc 4: Renishaw absolute BiSS
@@ -66,8 +73,9 @@ Motor[1].pEncLoss=0
Motor[2].pEncLoss=0
//rot stage
//---------
//rot stage (decomissioned)
//-------------------------
//use 360'000 for 360 deg as motor unit
//1 rev = 16*2048=32768 phase_step = 1048576 enc_steps
//PhasePosSf= 8*el_cycle/enc_step =8*16/1048576=1./8192
@@ -77,11 +85,23 @@ Motor[2].pEncLoss=0
// Motor 3: 0dB at 18.8Hz Friction 70curr_bits
// Kaff= 1/((18.8*2*np.pi)**2/5000**2 ) = 1791.6970285327388
//!encoder_sim(enc=3,tbl=11,mot=11,posSf=360000./32768)
//!encoder_biss(enc=3,tbl=3,mot=3,numBits=20,posSf=360000./1048576)
//Motor[3].pPhaseEnc=Acc84B[0].Chan[2].SerialEncDataA.a
//!motor_servo(mot=3,ctrl='ServoCtrl',Kp=10,Kvfb=220,Ki=0.001,Kvff=220,Kaff=1792,MaxInt=1000,Kfff=5)
//!motor(mot=3,dirCur=0,contCur=1000,peakCur=2000,timeAtPeak=1,IiGain=2,IpfGain=12,IpbGain=12,JogSpeed=180.,numPhase=3,invDir=False,servo=None,PhasePosSf=1./8192,PhaseFindingDac=100,PhaseFindingTime=50,SlipGain=0,AdvGain=0,PwmSf=10000,FatalFeLimit=3000,WarnFeLimit=1000,InPosBand=10, HomeOffset=228987)
//Y stage OWIS
//------------
//2000enc/rev 500um/rev
//1 rev = 2000 enc_cnt = 500um
// max. 2.1A 36V
!encoder_sim(enc=3,tbl=11,mot=11,posSf=360000./32768)
!encoder_biss(enc=3,tbl=3,mot=3,numBits=20,posSf=360000./1048576)
Motor[3].pPhaseEnc=Acc84B[0].Chan[2].SerialEncDataA.a
!motor_servo(mot=3,ctrl='ServoCtrl',Kp=10,Kvfb=220,Ki=0.001,Kvff=220,Kaff=1792,MaxInt=1000,Kfff=5)
!motor(mot=3,dirCur=0,contCur=1000,peakCur=2000,timeAtPeak=1,IiGain=2,IpfGain=12,IpbGain=12,JogSpeed=180.,numPhase=3,invDir=False,servo=None,PhasePosSf=1./8192,PhaseFindingDac=100,PhaseFindingTime=50,SlipGain=0,AdvGain=0,PwmSf=10000,FatalFeLimit=3000,WarnFeLimit=1000,InPosBand=10, HomeOffset=228987)
!encoder_inc(enc=3,tbl=3,mot=3,posSf=13000./650000)
!motor_servo(mot=3,ctrl='ServoCtrl',Kp=10,Kvfb=0,Ki=0.0,Kvff=0,Kaff=0,MaxInt=1000,Kfff=0)
!motor(mot=3,dirCur=0,contCur=1000,peakCur=2000,timeAtPeak=1,IiGain=1,IpfGain=3,IpbGain=3,JogSpeed=2.,numPhase=2,invDir=False,servo=None,PhasePosSf=0,PhaseFindingDac=0,PhaseFindingTime=0,SlipGain=0,AdvGain=0,PwmSf=10000,FatalFeLimit=3000,WarnFeLimit=1000,InPosBand=10,homing='enc-index')
//Stada stage
@@ -90,10 +110,10 @@ Motor[3].pPhaseEnc=Acc84B[0].Chan[2].SerialEncDataA.a
//posSf = userUnits/encoder_steps
//servoSf=motor_u_steps/userUnits
!encoder_biss(enc=4,numBits=32,posSf=1./20)
!encoder_biss(enc=5,numBits=32,posSf=1./20)
!motor(mot=4,current=200,JogSpeed=0.5,invDir=1,servoSf=204.8,InPosBand=1,HomeOffset=39278)
!motor(mot=5,current=200,JogSpeed=0.5,invDir=1,servoSf=204.8,InPosBand=1,HomeOffset=39736)
!encoder_biss(enc=4,numBits=32,posSf=-1./20)
!encoder_biss(enc=5,numBits=32,posSf=-1./20)
!motor(mot=4,current=200,JogSpeed=0.5,invDir=0,servoSf=204.8,InPosBand=1,HomeOffset=-39278)
!motor(mot=5,current=200,JogSpeed=0.5,invDir=0,servoSf=204.8,InPosBand=1,HomeOffset=-39736)
//Interferometer 1,2

View File

@@ -30,15 +30,22 @@ Motor[5].Servo.BreakPosErr=0
// PKP266D14BA2 1.4A 1.8deb/step
// encoder: Renishaw: RL26BAT050B050A 26 bit, 50nm/enc_cnt
//!encoder_sim(enc=6)
//!motor(mot=6,dirCur=1400,JogSpeed=40,InPosBand=0,FatalFeLimit=1000,HomeOffset=0.)
// #6j=102400 -> 1 rev
//#6j=102400 == 1 rev == 102400 enc_cnt == 2000*1um
//#6j=102400 steps == 1 rev == 2000*20 enc_cnt == 2000*1um
//servoSf : motorusteps/user_units = 102400./2000
//posSf : user_units/encoder_steps = 2000./102400
//posSf : user_units/encoder_steps = 0.05nm/1enc_cnt=1/20
//Open loop
//!encoder_sim(enc=6,posSf=2000./102400,pos2Sf=0)
!encoder_sim(enc=6,posSf=2000./102400)
!motor(mot=6,dirCur=1400,servoSf=102400./2000,invDir=False,JogSpeed=2,InPosBand=1,FatalFeLimit=1000,HomeOffset=0.)
//!encoder_biss(enc=6,tbl=16,mot=16,numBits=26,posSf=1./20)
//!motor(mot=6,dirCur=1400,servoSf=102400./2000,invDir=False,JogSpeed=2,InPosBand=1,FatalFeLimit=1000,HomeOffset=0.)
//Closed loop
!encoder_sim(enc=6,tbl=16,mot=16,posSf=2000./102400)
!encoder_biss(enc=6,numBits=26,posSf=1./20)
!motor(mot=6,dirCur=1400,servoSf=102400./2000,invDir=False,JogSpeed=2,InPosBand=1,FatalFeLimit=1000,HomeOffset=1516405.)
// break configuration

View File

@@ -53,6 +53,7 @@ enable plc 1
#1..5dkill
#6hmz
//motor 1..5 use break setup to kill motor
!holding_current(m6=[0,700])

View File

@@ -53,8 +53,8 @@ class Generate:
('SLITS:X2' , 'MCS11', 10 , 10 , -10 , 1 , 'mm' , 'S' ) ,
('SLITS:Y1' , 'MCS12', 11 , 10 , -10 , 1 , 'mm' , 'S' ) ,
('SLITS:Y2' , 'MCS13', 12 , 10 , -10 , 1 , 'mm' , 'S' ) ,
('XEYE:TX' , 'MCS14', 13 , 10 , -10 , 0 , 'mm' , 'S' ) ,
('XEYE:TY' , 'MCS15', 14 , 10 , -10 , 0 , 'mm' , 'S' ) ,
('unused' , 'MCS14', 13 , 10 , -10 , 0 , 'mm' , 'S' ) ,
('unused' , 'MCS15', 14 , 10 , -10 , 0 , 'mm' , 'S' ) ,
),
}
}
@@ -71,9 +71,9 @@ class Generate:
( 'DESC' , 'M' , 'ADDR' , 'DIR' , 'VELO' , 'HVEL' , 'MRES' , 'PREC' , 'EGU' ) ,
( '"Sample F-Trans Y"' , 'MOT_FY' , 1 , 0 , 16 , 2 , 0.001 , 4 , 'mm' ) ,
( '"Sample F-Trans X"' , 'MOT_FX' , 2 , 1 , 16 , 2 , 0.001 , 4 , 'mm' ) ,
( '"Rotation Y"' , 'MOT_ROT_Y' , 3 , 0 , 50 , 50 , 0.001 , 4 , 'deg' ) ,
( '"Sample C-Trans X"' , 'MOT_CX' , 4 , 1 , 2 , 2 , 0.001 , 4 , 'mm' ) ,
( '"Sample C-Trans Z"' , 'MOT_CZ' , 5 , 1 , 2 , 2 , 0.001 , 4 , 'mm' ) ,
( '"Sample C-Trans Y"' , 'MOT_CY' , 3 , 0 , 2 , 2 , 0.001 , 4 , 'mm' ) ,
( '"Sample C-Trans X"' , 'MOT_CX' , 4 , 0 , 2 , 2 , 0.001 , 4 , 'mm' ) ,
( '"Sample C-Trans Z"' , 'MOT_CZ' , 5 , 0 , 2 , 2 , 0.001 , 4 , 'mm' ) ,
( '"Interfero Y"' , 'ENC_FY' , 6 , 0 , 2 , 2 , 0.001 , 4 , 'mm' ) ,
( '"Interfero X"' , 'ENC_FX' , 7 , 0 , 2 , 2 , 0.001 , 4 , 'mm' ) ,
),
@@ -426,7 +426,7 @@ file PPMACMotor.template
for motPar in motLst:
motPar=dict(zip(hdr, motPar))
try:
motPar['PTYP']=lutPSENS[motPar['PTYP']][1] #idx0 is for MCS1
motPar['PTYP']=lutPSENS[motPar['PTYP']][1] #idx1 is for MCS1
except KeyError as e:
if motPar['PTYP']!=0:
_log.info(f'{motPar["PTYP"]} not in lookup table')

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>776</width>
<height>619</height>
<height>798</height>
</rect>
</property>
<property name="windowTitle">
@@ -48,15 +48,15 @@
<rect>
<x>20</x>
<y>70</y>
<width>725</width>
<height>240</height>
<width>731</width>
<height>420</height>
</rect>
</property>
<property name="macro">
<string>P=$(P),M=MOT_GIR_1;P=$(P),M=MOT_GIR_2;P=$(P),M=MOT_GIR_3;P=$(P),M=MOT_GIR_4;P=$(P),M=MOT_GIR_5;P=$(P),M=MOT_GIR_X;P=$(P),M=MOT_GIR_Y;P=$(P),M=MOT_GIR_U;P=$(P),M=MOT_GIR_V;P=$(P),M=MOT_GIR_W</string>
</property>
<property name="filename" stdset="0">
<string notr="true">ESB_MX_motor.ui</string>
<string notr="true">PB_motor.ui</string>
</property>
<property name="numberOfItems" stdset="0">
<number>10</number>
@@ -195,7 +195,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>570</y>
<y>750</y>
<width>411</width>
<height>31</height>
</rect>
@@ -211,7 +211,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>520</y>
<y>700</y>
<width>451</width>
<height>41</height>
</rect>
@@ -225,7 +225,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>320</y>
<y>500</y>
<width>341</width>
<height>194</height>
</rect>
@@ -1223,7 +1223,7 @@
<property name="geometry">
<rect>
<x>450</x>
<y>330</y>
<y>510</y>
<width>161</width>
<height>31</height>
</rect>

View File

@@ -29,7 +29,7 @@
<string>Expert</string>
</property>
<property name="text">
<string>Smaract Controller $(S):$(M)</string>
<string>Smaract Controller $(P):$(M)</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading</set>
@@ -65,7 +65,7 @@
</rect>
</property>
<property name="macro">
<string>S=$(S),T=$(T),M=$(M)1;S=$(S),T=$(T),M=$(M)2;S=$(S),T=$(T),M=$(M)3;S=$(S),T=$(T),M=$(M)4;S=$(S),T=$(T),M=$(M)5;S=$(S),T=$(T),M=$(M)6;S=$(S),T=$(T),M=$(M)7;S=$(S),T=$(T),M=$(M)8;S=$(S),T=$(T),M=$(M)9;S=$(S),T=$(T),M=$(M)10;S=$(S),T=$(T),M=$(M)11;S=$(S),T=$(T),M=$(M)12;S=$(S),T=$(T),M=$(M)13;S=$(S),T=$(T),M=$(M)14;S=$(S),T=$(T),M=$(M)15</string>
<string>P=$(P),T=$(T),M=$(M)1;P=$(P),T=$(T),M=$(M)2;P=$(P),T=$(T),M=$(M)3;P=$(P),T=$(T),M=$(M)4;P=$(P),T=$(T),M=$(M)5;P=$(P),T=$(T),M=$(M)6;P=$(P),T=$(T),M=$(M)7;P=$(P),T=$(T),M=$(M)8;P=$(P),T=$(T),M=$(M)9;P=$(P),T=$(T),M=$(M)10;P=$(P),T=$(T),M=$(M)11;P=$(P),T=$(T),M=$(M)12;P=$(P),T=$(T),M=$(M)13;P=$(P),T=$(T),M=$(M)14;P=$(P),T=$(T),M=$(M)15</string>
</property>
<property name="filename" stdset="0">
<string notr="true">MCS_stage.ui</string>

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>776</width>
<height>640</height>
<height>977</height>
</rect>
</property>
<property name="windowTitle">
@@ -47,155 +47,26 @@
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>725</width>
<height>504</height>
<y>50</y>
<width>731</width>
<height>882</height>
</rect>
</property>
<property name="macro">
<string>P=$(P),M=MOT_FY;P=$(P),M=MOT_FX;P=$(P),M=MOT_ROT_Y;P=$(P),M=MOT_CX;P=$(P),M=MOT_CZ;P=$(P),M=MOT_WEDGE1;P=$(P),M=MOT_WEDGE2;P=$(P),M=MOT_WEDGE3;P=$(P),M=MOT_WEDGE4;P=$(P),M=MOT_WEDGEX;P=$(P),M=MOT_WEDGEY;P=$(P),M=MOT_WEDGEA;P=$(P),M=MOT_WEDGEB;P=$(P),M=MOT_BLGT;P=$(P),M=MOT_CRYO;P=$(P),M=MOT_GIR_X;P=$(P),M=MOT_GIR_Y;P=$(P),M=MOT_GIR_U;P=$(P),M=MOT_GIR_V;P=$(P),M=MOT_GIR_W;P=$(P),M=MOT_DET_Z</string>
<string>P=$(P),M=MOT_FY;P=$(P),M=MOT_FX;P=$(P),M=MOT_CY;P=$(P),M=MOT_CX;P=$(P),M=MOT_CZ;P=$(P),M=MOT_WEDGE1;P=$(P),M=MOT_WEDGE2;P=$(P),M=MOT_WEDGE3;P=$(P),M=MOT_WEDGE4;P=$(P),M=MOT_WEDGEX;P=$(P),M=MOT_WEDGEY;P=$(P),M=MOT_WEDGEA;P=$(P),M=MOT_WEDGEB;P=$(P),M=MOT_BLGT;P=$(P),M=MOT_CRYO;P=$(P),M=MOT_GIR_X;P=$(P),M=MOT_GIR_Y;P=$(P),M=MOT_GIR_U;P=$(P),M=MOT_GIR_V;P=$(P),M=MOT_GIR_W;P=$(P),M=MOT_DET_Z</string>
</property>
<property name="filename" stdset="0">
<string notr="true">ESB_MX_motor.ui</string>
<string notr="true">PB_motor.ui</string>
</property>
<property name="numberOfItems" stdset="0">
<number>21</number>
</property>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>50</y>
<width>731</width>
<height>21</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="5,3,4,0,0,3">
<property name="spacing">
<number>2</number>
</property>
<item>
<widget class="QLabel" name="lbl_DESC_1">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>DESC</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_VAL_1">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>VAL</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_RBV_1">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>RBV</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_LLS_1">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>25</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>20</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>LLS</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_HLS_1">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>25</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>20</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>HLS</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="MotPan_1">
<property name="text">
<string>Motors Panels</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="caMessageButton" name="camessagebutton">
<property name="geometry">
<rect>
<x>140</x>
<y>590</y>
<y>940</y>
<width>120</width>
<height>22</height>
</rect>
@@ -217,7 +88,7 @@
<property name="geometry">
<rect>
<x>360</x>
<y>590</y>
<y>940</y>
<width>100</width>
<height>22</height>
</rect>
@@ -239,7 +110,7 @@
<property name="geometry">
<rect>
<x>260</x>
<y>590</y>
<y>940</y>
<width>90</width>
<height>22</height>
</rect>
@@ -258,7 +129,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>590</y>
<y>940</y>
<width>120</width>
<height>22</height>
</rect>
@@ -280,7 +151,7 @@
<property name="geometry">
<rect>
<x>560</x>
<y>590</y>
<y>940</y>
<width>180</width>
<height>31</height>
</rect>
@@ -303,13 +174,13 @@
</color>
</property>
<property name="labels">
<string>SmarAct;SmarAct (old);Girder;EVR;EVR-simple</string>
<string>SmarAct;Girder;EVR;EVR-simple</string>
</property>
<property name="files">
<string>ESB_MX_SmarAct.ui;ESB_MX_SmarAct_main.ui;ESB_MX_5cam.ui;G_EVR_main.ui;S_LAS-TMAIN.ui</string>
<string>ESB_MX_SmarAct.ui;ESB_MX_5cam.ui;G_EVR_main.ui;S_LAS-TMAIN.ui</string>
</property>
<property name="args">
<string>S=SARES30-SMX,M=MCS,T=MCS;P=SARES30-ESBMX;P=$(P);SYS=$(P),DEVICE=EVR0,FF=PCIe;SYS=$(P),DEVICE=EVR0,FF=PCIe</string>
<string>P=SARES30-SMX,M=MCS,T=MCS;P=$(P);SYS=$(P),DEVICE=EVR0,FF=PCIe;SYS=$(P),DEVICE=EVR0,FF=PCIe</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caRowColMenu::Menu</enum>

View File

@@ -1,178 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>725</width>
<height>24</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="5,3,4,0,0,0,3">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item>
<widget class="caLineEdit" name="ca_DESC_1">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="channel" stdset="0">
<string notr="true">$(P):$(M).DESC</string>
</property>
</widget>
</item>
<item>
<widget class="caTextEntry" name="ca_VAL_1">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="channel" stdset="0">
<string notr="true">$(P):$(M).VAL</string>
</property>
</widget>
</item>
<item>
<widget class="caLineEdit" name="ca_RBV_1">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="channel" stdset="0">
<string notr="true">$(P):$(M).RBV</string>
</property>
<property name="unitsEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="caLed" name="caled_3">
<property name="minimumSize">
<size>
<width>25</width>
<height>4</height>
</size>
</property>
<property name="channel" stdset="0">
<string notr="true">$(P):$(M).DMOV</string>
</property>
<property name="trueColor">
<color>
<red>0</red>
<green>85</green>
<blue>255</blue>
</color>
</property>
</widget>
</item>
<item>
<widget class="caLed" name="caled">
<property name="minimumSize">
<size>
<width>25</width>
<height>4</height>
</size>
</property>
<property name="channel" stdset="0">
<string notr="true">$(P):$(M).LLS</string>
</property>
</widget>
</item>
<item>
<widget class="caLed" name="caled_2">
<property name="minimumSize">
<size>
<width>25</width>
<height>4</height>
</size>
</property>
<property name="channel" stdset="0">
<string notr="true">$(P):$(M).HLS</string>
</property>
</widget>
</item>
<item>
<widget class="caRelatedDisplay" name="carelateddisplay_2">
<property name="label">
<string notr="true">-$(M)</string>
</property>
<property name="background">
<color>
<red>128</red>
<green>136</green>
<blue>255</blue>
</color>
</property>
<property name="labels">
<string>more;all</string>
</property>
<property name="files">
<string>motorx_more.ui;motorx_all.ui</string>
</property>
<property name="args">
<string>P=$(P):,M=$(M);P=$(P):,M=$(M)</string>
</property>
<property name="stackingMode" stdset="0">
<enum>caRowColMenu::Menu</enum>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>caRelatedDisplay</class>
<extends>QWidget</extends>
<header>caRelatedDisplay</header>
</customwidget>
<customwidget>
<class>caTextEntry</class>
<extends>caLineEdit</extends>
<header>caTextEntry</header>
</customwidget>
<customwidget>
<class>caLed</class>
<extends>QWidget</extends>
<header>caLed</header>
</customwidget>
<customwidget>
<class>caLineEdit</class>
<extends>QLineEdit</extends>
<header>caLineEdit</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>