1439 lines
39 KiB
Plaintext
1439 lines
39 KiB
Plaintext
; @Keywords:
|
|
; --------------------------------------------------------------------------------
|
|
; @Title: Menu for PI Analog Probe
|
|
; @Description:
|
|
; This menu can be loaded with MENU.ReProgram t32adc.men
|
|
; @Author: STA
|
|
; @Copyright: (C) 1989-2014 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: t32adc.men 7587 2014-08-29 09:32:38Z estahleder $
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; Menu for PI Analog Probe
|
|
; --------------------------------------------------------------------------------
|
|
; missing:
|
|
; - ADC probe detection
|
|
|
|
|
|
add
|
|
menu
|
|
(
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; Trace pulldown submenue
|
|
; --------------------------------------------------------------------------------
|
|
|
|
popup "&ProbeADC"
|
|
(
|
|
default
|
|
menuitem "[:aconfig]&Configuration..." "Integrator"
|
|
menuitem "[:aconfig]&Configuration ADC" "Pod A"
|
|
menuitem "[:aconfig]&Configuration Energy" "ETA"
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; --------------------------------------------------------------------------------
|
|
enable INTEGRATOR()
|
|
menuitem "[:time]&Recoding Time"
|
|
(
|
|
|
|
&chan=0.
|
|
if I.ADC.ENABLE(i.v0a)
|
|
&chan=&chan+1.
|
|
if I.ADC.ENABLE(i.v1a)
|
|
&chan=&chan+1.
|
|
if I.ADC.ENABLE(i.v2a)
|
|
&chan=&chan+1.
|
|
if I.ADC.ENABLE(i.v3a)
|
|
&chan=&chan+1.
|
|
if I.ADC.ENABLE(i.i0a)||I.ADC.ENABLE(i.p0a)
|
|
&chan=&chan+1.
|
|
if I.ADC.ENABLE(i.i1a)||I.ADC.ENABLE(i.p1a)
|
|
&chan=&chan+1.
|
|
if I.ADC.ENABLE(i.i2a)||I.ADC.ENABLE(i.p2a)
|
|
&chan=&chan+1.
|
|
|
|
dialog
|
|
(&
|
|
header "Expand Recoding Time"
|
|
pos 2. 0.5 25. 1.
|
|
text "Number of enabled ADC channels = &chan"
|
|
pos 2. 1.5 17. 1.
|
|
text "Time to trace (seconds)"
|
|
pos 2. 2.5 17. 1.
|
|
TIME: EDIT "2." ""
|
|
|
|
pos 1. 4.5 9.
|
|
defbutton "Ok"
|
|
(
|
|
dialog.execute apply
|
|
dialog.end
|
|
)
|
|
pos 25. 4.5 9.
|
|
button "Cancel" "dialog.end"
|
|
|
|
pos 13. 4.5 9.
|
|
apply: button "Apply"
|
|
(
|
|
local &recstring &waitstring &cval &time &rectime &waittime
|
|
|
|
&recstring=""
|
|
&waitstring=""
|
|
|
|
; &chan=dialog.string("CHAN")
|
|
&cval=dialog.string("TIME")
|
|
|
|
if "&cval"!=""
|
|
(
|
|
on error gosub
|
|
(
|
|
&cval=""
|
|
&time=""
|
|
return
|
|
)
|
|
|
|
|
|
EVAL &cval
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="&cval"+" no valid time value!"
|
|
print %ERROR "&t1"
|
|
&cval=""
|
|
)
|
|
)
|
|
&time=&cval
|
|
|
|
&rectime=((&chan)*1600.)
|
|
&recstring="&rectime"+"ns"
|
|
|
|
&waittime=&time*&chan*1000000000.0
|
|
&waittime=(&waittime/524288.)-&rectime
|
|
&waittime=conv.floattoint(&waittime)
|
|
&waitstring="&waittime"+"ns"
|
|
|
|
if ((&time<1)||(&chan==0))
|
|
(
|
|
Integrator.ReProgram
|
|
(
|
|
)
|
|
print %ERROR "Wrong Time or Channel Count"
|
|
)
|
|
else
|
|
(
|
|
Integrator.ReProgram
|
|
(
|
|
; Expand Recording Time: Channels: &chan, Seconds: &time
|
|
|
|
TimeCouNTer COUNT0 &recstring
|
|
TimeCouNTer COUNT1 &waitstring
|
|
|
|
LEVEL0:
|
|
Counter.Increment COUNT0
|
|
Counter.Restart COUNT1 IF COUNT0
|
|
GOTO LEVEL1 IF COUNT0
|
|
SAMPLE.ENABLE IF !COUNT0
|
|
|
|
LEVEL1:
|
|
Counter.Increment COUNT1
|
|
Counter.Restart COUNT0 IF COUNT1
|
|
GOTO LEVEL0 IF COUNT1
|
|
)
|
|
print "Analyzer programmed."
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; --------------------------------------------------------------------------------
|
|
enable INTEGRATOR()
|
|
popup "[:atrigger]&Trigger Definition"
|
|
(
|
|
menuitem "[:program]&Current Program"
|
|
(
|
|
Integrator.Program
|
|
)
|
|
menuitem "[:program]&New Program"
|
|
(
|
|
Integrator.ReProgram
|
|
(
|
|
)
|
|
Integrator.Program
|
|
)
|
|
menuitem "&Directory..."
|
|
(
|
|
Integrator.Program *.tap
|
|
)
|
|
separator
|
|
menuitem "Clear Program"
|
|
(
|
|
Integrator.ReProgram
|
|
)
|
|
; --------------------------------------------------------------------------------
|
|
; --------------------------------------------------------------------------------
|
|
menuitem "&Trace from Start to End..."
|
|
(
|
|
local &csel
|
|
|
|
&csel=""
|
|
if I.ADC.ENABLE(i.v0a)
|
|
&csel="&csel"+",V0"
|
|
if I.ADC.ENABLE(i.v1a)
|
|
&csel="&csel"+",V1"
|
|
if I.ADC.ENABLE(i.v2a)
|
|
&csel="&csel"+",V2"
|
|
if I.ADC.ENABLE(i.v3a)
|
|
&csel="&csel"+",V3"
|
|
if I.ADC.ENABLE(i.i0a)&&(I.ADC.SHUNT(i.i0a)!=0)
|
|
&csel="&csel"+",I0"
|
|
if I.ADC.ENABLE(i.i1a)&&(I.ADC.SHUNT(i.i1a)!=0)
|
|
&csel="&csel"+",I1"
|
|
if I.ADC.ENABLE(i.i2a)&&(I.ADC.SHUNT(i.i2a)!=0)
|
|
&csel="&csel"+",I2"
|
|
if I.ADC.ENABLE(i.p0a)&&(I.ADC.SHUNT(i.p0a)!=0)
|
|
&csel="&csel"+",P0"
|
|
if I.ADC.ENABLE(i.p1a)&&(I.ADC.SHUNT(i.p1a)!=0)
|
|
&csel="&csel"+",P1"
|
|
if I.ADC.ENABLE(i.p2a)&&(I.ADC.SHUNT(i.p2a)!=0)
|
|
&csel="&csel"+",P2"
|
|
|
|
if string.mid("&csel",0,1)==","
|
|
&csel=string.cut("&csel",1)
|
|
|
|
dialog
|
|
(&
|
|
header "Trace from Start to Stop Point"
|
|
|
|
pos 0x1 1.3 6. 1.
|
|
chanA: PULLDOWN "&csel" ""
|
|
pos 0x8 1.3 22.
|
|
addrA: defedit "" ""
|
|
pos 33. 0.7 7. 1.
|
|
a.eq: choosebox "equal" ""
|
|
pos 33. 1.7 7. 1.
|
|
a.not: choosebox "! equal" ""
|
|
pos 41. 0.7 7. 1.
|
|
a.ris: choosebox "rising" ""
|
|
pos 41. 1.7 7. 1.
|
|
a.fal: choosebox "falling" ""
|
|
pos 0x1 4.3 6. 1.
|
|
chanB: PULLDOWN "&csel" ""
|
|
pos 0x8 4.3 22.
|
|
addrB: edit "" ""
|
|
pos 33. 3.7 7. 1.
|
|
b.eq: choosebox "equal" ""
|
|
pos 33. 4.7 7. 1.
|
|
b.not: choosebox "! equal" ""
|
|
pos 41. 3.7 7. 1.
|
|
b.ris: choosebox "rising" ""
|
|
pos 41. 4.7 7. 1.
|
|
b.fal: choosebox "falling" ""
|
|
|
|
|
|
pos 15. 6.5 9.
|
|
defbutton "Ok"
|
|
(
|
|
dialog.execute apply
|
|
dialog.end
|
|
)
|
|
pos 39. 6.5 9.
|
|
button "Cancel" "dialog.end"
|
|
|
|
pos 27. 6.5 9.
|
|
apply: button "Apply"
|
|
(
|
|
local &addrA &triggerA &addrB &triggerB &triggerC &triggerD
|
|
local &addr1 &addr2 &channel &chanA &chanNrB
|
|
local &addrAl &addrAh &addrBl &addrBh &addrCl &addrCh &addrDl &addrDh
|
|
|
|
on error jumpto
|
|
(
|
|
beep 5.
|
|
print "Input error, please check syntax"
|
|
enddo
|
|
)
|
|
|
|
; ----- A ----------------------------------------------------------------
|
|
&addrdeclA=""
|
|
&addrA=dialog.string(addrA)
|
|
&chanA=dialog.string(chanA)
|
|
|
|
gosub CheckRange &addrA &chanA
|
|
ENTRY &addrA1 &addrA2
|
|
|
|
&channelA="&channel"
|
|
|
|
if dialog.boolean(a.ris)
|
|
(
|
|
&triggerA=" if AlphaRange&&ChannelA"
|
|
&triggerC=" if CharlyRange&&ChannelA"
|
|
&addrAl=0.
|
|
&addrAh=&addrA1
|
|
&addrCl=&addrA1
|
|
&addrCh=4096.
|
|
)
|
|
else if dialog.boolean(a.fal)
|
|
(
|
|
&triggerA=" if AlphaRange&&ChannelA"
|
|
&triggerC=" if CharlyRange&&ChannelA"
|
|
&addrAh=4096.
|
|
&addrAl=&addrA2
|
|
&addrCh=&addrA2
|
|
&addrCl=0.
|
|
)
|
|
else if dialog.boolean(a.eq)
|
|
(
|
|
&triggerA=""
|
|
&triggerC=" if CharlyRange&&ChannelA"
|
|
&addrAl=0.
|
|
&addrAh=0
|
|
&addrCl=&addrA1
|
|
&addrCh=&addrA2
|
|
)
|
|
else
|
|
(
|
|
&triggerA=""
|
|
&triggerC=" if !CharlyRange&&ChannelA"
|
|
&addrAl=0.
|
|
&addrAh=0
|
|
&addrCl=&addrA1
|
|
&addrCh=&addrA2
|
|
)
|
|
|
|
|
|
; ----- B ----------------------------------------------------------------
|
|
&addrdeclB=""
|
|
&addrB=dialog.string(addrB)
|
|
&chanB=dialog.string(chanB)
|
|
|
|
gosub CheckRange &addrB &chanB
|
|
ENTRY &addrB1 &addrB2
|
|
|
|
&channelB="&channel"
|
|
|
|
if dialog.boolean(b.ris)
|
|
(
|
|
&triggerB=" if BetaRange&&ChannelB"
|
|
&triggerD=" if DeltaRange&&ChannelB"
|
|
&addrBl=0.
|
|
&addrBh=&addrB1
|
|
&addrDl=&addrB1
|
|
&addrDh=4096.
|
|
)
|
|
else if dialog.boolean(b.fal)
|
|
(
|
|
&triggerB=" if BetaRange&&ChannelB"
|
|
&triggerD=" if DeltaRange&&ChannelB"
|
|
&addrBh=4096.
|
|
&addrBl=&addrB2
|
|
&addrDh=&addrB2
|
|
&addrDl=0.
|
|
)
|
|
else if dialog.boolean(b.eq)
|
|
(
|
|
&triggerB=""
|
|
&triggerD=" if DeltaRange&&ChannelB"
|
|
&addrBl=0.
|
|
&addrBh=0
|
|
&addrDl=&addrB1
|
|
&addrDh=&addrB2
|
|
)
|
|
else
|
|
(
|
|
&triggerB=""
|
|
&triggerD=" if !DeltaRange&&ChannelB"
|
|
&addrBl=0.
|
|
&addrBh=0
|
|
&addrDl=&addrB1
|
|
&addrDh=&addrB2
|
|
)
|
|
|
|
; ------------------------------------------------------------------------
|
|
Integrator.ReProgram
|
|
(
|
|
; Volt/Amp/Watt Range for Start: &addrA
|
|
SELECTORRANGE AlphaRange &addrAl--&addrAh
|
|
SELECTORRANGE CharlyRange &addrCl--&addrCh
|
|
|
|
; Volt/Amp/Watt Range for Stop: &addrB
|
|
SELECTORRANGE BetaRange &addrBl--&addrBh
|
|
SELECTORRANGE DeltaRange &addrDl--&addrDh
|
|
|
|
; Channel Start: &chanA
|
|
SELECTOR ChannelA i.A15.Falling &channelA
|
|
|
|
; Channel Stop: &chanB
|
|
SELECTOR ChannelB i.A15.Falling &channelB
|
|
|
|
start:
|
|
CONTinue &triggerA
|
|
startA:
|
|
Sample.enable &triggerC
|
|
CONTinue &triggerC
|
|
|
|
occured:
|
|
Sample.Enable
|
|
CONTinue &triggerB
|
|
occuredB:
|
|
Sample.Enable
|
|
Goto start &triggerD
|
|
)
|
|
|
|
|
|
print "Analyzer programmed."
|
|
goto applyend
|
|
|
|
|
|
;---------
|
|
CheckRange:
|
|
ENTRY &addr &chan
|
|
|
|
local &shunt &PwrVolt
|
|
|
|
&shunt=0
|
|
&PwrVolt=0
|
|
|
|
; check channel
|
|
if "&chan"=="V0"
|
|
&channel="i.A14.Low i.A13.Low i.A12.Low"
|
|
else if "&chan"=="V1"
|
|
&channel="i.A14.Low i.A13.Low i.A12.High"
|
|
else if "&chan"=="V2"
|
|
&channel="i.A14.Low i.A13.High i.A12.Low"
|
|
else if "&chan"=="V3"
|
|
&channel="i.A14.Low i.A13.High i.A12.High"
|
|
else if "&chan"=="I0"||"&chan"=="P0"
|
|
(
|
|
&channel="i.A14.High i.A13.Low i.A12.Low"
|
|
&shunt=I.ADC.SHUNT(i.i0a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p0a)
|
|
)
|
|
else if "&chan"=="I1"||"&chan"=="P1"
|
|
(
|
|
&channel="i.A14.High i.A13.Low i.A12.High"
|
|
&shunt=I.ADC.SHUNT(i.i1a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p1a)
|
|
)
|
|
else if "&chan"=="I2"||"&chan"=="P2"
|
|
(
|
|
&channel="i.A14.High i.A13.High i.A12.Low"
|
|
&shunt=I.ADC.SHUNT(i.i2a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p2a)
|
|
)
|
|
|
|
; check empty
|
|
if "&addr"==""
|
|
(
|
|
beep 5.
|
|
print "Input error: Empty Range"
|
|
enddo
|
|
)
|
|
; check range
|
|
EVAL &addr
|
|
&t1=eval.type()
|
|
if (&t1==0x80) ; DRange
|
|
(
|
|
&len=STRING.LEN("&addr")
|
|
&cut=STRING.SCAN("&addr","--",0)
|
|
&addr1=STRING.CUT("&addr",-(&len-&cut))
|
|
&addr2=STRING.CUT("&addr",&cut+2)
|
|
)
|
|
else
|
|
(
|
|
&addr1=&addr
|
|
&addr2=&addr
|
|
)
|
|
|
|
; check lo-val
|
|
EVAL &addr1
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="Input Error: "+"&t1"+" no valid value!"
|
|
print %ERROR "&t1"
|
|
enddo
|
|
)
|
|
; check hi-val
|
|
EVAL &addr2
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="Input Error: "+"&t1"+" no valid value!"
|
|
print %ERROR "&t1"
|
|
enddo
|
|
)
|
|
|
|
; calculation of trigger value
|
|
if "&chan"=="V0"||"&chan"=="V1"||"&chan"=="V2"||"&chan"=="V3"
|
|
(
|
|
; voltage calculation
|
|
; &addr1=&addr1*4096.*1000./5000.
|
|
&addr1=&addr1*819.2
|
|
&addr2=&addr2*819.2
|
|
)
|
|
else
|
|
(
|
|
if "&chan"=="P0"||"&chan"=="P1"||"&chan"=="P2"
|
|
(
|
|
&addr1=&addr1/&PwrVolt
|
|
&addr2=&addr2/&PwrVolt
|
|
)
|
|
; current calculation
|
|
; &addr1=&addr1*&shunt*4096.*1000.*2./125.
|
|
&addr1=&addr1*&shunt*32768.
|
|
&addr2=&addr2*&shunt*32768.
|
|
)
|
|
|
|
if &addr1==0.0
|
|
&addr1=0.
|
|
else if &addr1>4096.
|
|
&addr1=4096.
|
|
else
|
|
&addr1=conv.floattoint(&addr1)
|
|
|
|
if &addr2==0.0
|
|
&addr2=0.
|
|
else if &addr2>4096.
|
|
&addr2=4096.
|
|
else
|
|
&addr2=conv.floattoint(&addr2)
|
|
|
|
return &addr1 &addr2
|
|
;---------
|
|
|
|
|
|
applyend:
|
|
)
|
|
pos 0. 0. 49. 3.5
|
|
box "Channel Volt/Amp/Watt Range for Start"
|
|
pos 0. 3.0 49. 3.5
|
|
box "Channel Volt/Amp/Watt Range for Stop"
|
|
)
|
|
dialog.set a.eq
|
|
dialog.set b.eq
|
|
)
|
|
; --------------------------------------------------------------------------------
|
|
; --------------------------------------------------------------------------------
|
|
menuitem "&Selective Trace..."
|
|
(
|
|
local &csel
|
|
|
|
&csel=""
|
|
if I.ADC.ENABLE(i.v0a)
|
|
&csel="&csel"+",V0"
|
|
if I.ADC.ENABLE(i.v1a)
|
|
&csel="&csel"+",V1"
|
|
if I.ADC.ENABLE(i.v2a)
|
|
&csel="&csel"+",V2"
|
|
if I.ADC.ENABLE(i.v3a)
|
|
&csel="&csel"+",V3"
|
|
if I.ADC.ENABLE(i.i0a)&&(I.ADC.SHUNT(i.i0a)!=0)
|
|
&csel="&csel"+",I0"
|
|
if I.ADC.ENABLE(i.i1a)&&(I.ADC.SHUNT(i.i1a)!=0)
|
|
&csel="&csel"+",I1"
|
|
if I.ADC.ENABLE(i.i2a)&&(I.ADC.SHUNT(i.i2a)!=0)
|
|
&csel="&csel"+",I2"
|
|
if I.ADC.ENABLE(i.p0a)&&(I.ADC.SHUNT(i.p0a)!=0)
|
|
&csel="&csel"+",P0"
|
|
if I.ADC.ENABLE(i.p1a)&&(I.ADC.SHUNT(i.p1a)!=0)
|
|
&csel="&csel"+",P1"
|
|
if I.ADC.ENABLE(i.p2a)&&(I.ADC.SHUNT(i.p2a)!=0)
|
|
&csel="&csel"+",P2"
|
|
|
|
if string.mid("&csel",0,1)==","
|
|
&csel=string.cut("&csel",1)
|
|
|
|
dialog
|
|
(&
|
|
header "Voltage/Current Selective Trace"
|
|
|
|
pos 0x1 1.3 6. 1.
|
|
chan: PULLDOWN "&csel" ""
|
|
pos 0x8 1.3 22.
|
|
addr: defedit "" ""
|
|
|
|
pos 0. 0. 41. 3.5
|
|
box "Channel Volt/Amp/Watt Range"
|
|
|
|
pos 33. 0.7 7. 1.
|
|
a.eq: choosebox "equal" ""
|
|
pos 33. 1.7 7. 1.
|
|
a.not: choosebox "! equal" ""
|
|
|
|
pos 1. 3.5 9.
|
|
defbutton "Ok"
|
|
(
|
|
dialog.execute apply
|
|
dialog.end
|
|
)
|
|
|
|
pos 25. 3.5 9.
|
|
button "Cancel" "dialog.end"
|
|
|
|
pos 13. 3.5 9.
|
|
apply: button "Apply"
|
|
(
|
|
local &addr &addrdecl &triggerA
|
|
local &addr1 &addr2
|
|
local &chan &channel
|
|
|
|
on error jumpto
|
|
(
|
|
beep 5.
|
|
print "Input error, please check syntax"
|
|
enddo
|
|
)
|
|
|
|
; -----------------------------------------------------------------------
|
|
&addrdecl=""
|
|
&addr=dialog.string(addr)
|
|
&chan=dialog.string(chan)
|
|
|
|
gosub CheckRange &addr &chan
|
|
ENTRY &addr1 &addr2
|
|
|
|
if dialog.boolean(a.eq)
|
|
&triggerA="AlphaRange"
|
|
else
|
|
&triggerA="!AlphaRange"
|
|
; -----------------------------------------------------------------------
|
|
|
|
Integrator.ReProgram
|
|
(
|
|
; Volt/Amp/Watt Range: &addr
|
|
SELECTORRANGE AlphaRange &addr1--&addr2
|
|
|
|
; Channel &chan
|
|
SELECTOR Channel &channel
|
|
|
|
start:
|
|
Sample.enable if AlphaRange&&Channel
|
|
CONTinue if AlphaRange&&Channel
|
|
|
|
occured:
|
|
Sample.Enable
|
|
Goto Start if !AlphaRange&&Channel
|
|
)
|
|
print "Analyzer programmed."
|
|
goto applyend
|
|
|
|
|
|
;---------
|
|
CheckRange:
|
|
ENTRY &addr &chan
|
|
|
|
local &shunt &PwrVolt
|
|
|
|
&shunt=0
|
|
&PwrVolt=0
|
|
|
|
; check channel
|
|
if "&chan"=="V0"
|
|
&channel="i.A14.Low i.A13.Low i.A12.Low"
|
|
else if "&chan"=="V1"
|
|
&channel="i.A14.Low i.A13.Low i.A12.High"
|
|
else if "&chan"=="V2"
|
|
&channel="i.A14.Low i.A13.High i.A12.Low"
|
|
else if "&chan"=="V3"
|
|
&channel="i.A14.Low i.A13.High i.A12.High"
|
|
else if "&chan"=="I0"||"&chan"=="P0"
|
|
(
|
|
&channel="i.A14.High i.A13.Low i.A12.Low"
|
|
&shunt=I.ADC.SHUNT(i.i0a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p0a)
|
|
)
|
|
else if "&chan"=="I1"||"&chan"=="P1"
|
|
(
|
|
&channel="i.A14.High i.A13.Low i.A12.High"
|
|
&shunt=I.ADC.SHUNT(i.i1a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p1a)
|
|
)
|
|
else if "&chan"=="I2"||"&chan"=="P2"
|
|
(
|
|
&channel="i.A14.High i.A13.High i.A12.Low"
|
|
&shunt=I.ADC.SHUNT(i.i2a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p2a)
|
|
)
|
|
|
|
|
|
; check empty
|
|
if "&addr"==""
|
|
(
|
|
beep 5.
|
|
print "Input error: Empty Range"
|
|
enddo
|
|
)
|
|
; check range
|
|
EVAL &addr
|
|
&t1=eval.type()
|
|
if (&t1==0x80) ; DRange
|
|
(
|
|
&len=STRING.LEN("&addr")
|
|
&cut=STRING.SCAN("&addr","--",0)
|
|
&addr1=STRING.CUT("&addr",-(&len-&cut))
|
|
&addr2=STRING.CUT("&addr",&cut+2)
|
|
)
|
|
else
|
|
(
|
|
beep 5.
|
|
print "Input error: No Range"
|
|
enddo
|
|
)
|
|
|
|
; check lo-val
|
|
EVAL &addr1
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="Input Error: "+"&t1"+" no valid value!"
|
|
print %ERROR "&t1"
|
|
enddo
|
|
)
|
|
; check hi-val
|
|
EVAL &addr2
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="Input Error: "+"&t1"+" no valid value!"
|
|
print %ERROR "&t1"
|
|
enddo
|
|
)
|
|
|
|
; calculation of trigger value
|
|
if "&chan"=="V0"||"&chan"=="V1"||"&chan"=="V2"||"&chan"=="V3"
|
|
(
|
|
; voltage calculation
|
|
; &addr1=&addr1*4096.*1000./5000.
|
|
&addr1=&addr1*819.2
|
|
&addr2=&addr2*819.2
|
|
)
|
|
else
|
|
(
|
|
if "&chan"=="P0"||"&chan"=="P1"||"&chan"=="P2"
|
|
(
|
|
&addr1=&addr1/&PwrVolt
|
|
&addr2=&addr2/&PwrVolt
|
|
)
|
|
; current calculation
|
|
; &addr1=&addr1*&shunt*4096.*1000.*2./125.
|
|
&addr1=&addr1*&shunt*32768.
|
|
&addr2=&addr2*&shunt*32768.
|
|
)
|
|
|
|
if &addr1==0.0
|
|
&addr1=0.
|
|
else if &addr1>4096.
|
|
&addr1=4096.
|
|
else
|
|
&addr1=conv.floattoint(&addr1)
|
|
|
|
if &addr2==0.0
|
|
&addr2=0.
|
|
else if &addr2>4096.
|
|
&addr2=4096.
|
|
else
|
|
&addr2=conv.floattoint(&addr2)
|
|
|
|
return &addr1 &addr2
|
|
;---------
|
|
|
|
|
|
applyend:
|
|
)
|
|
)
|
|
dialog.set a.eq
|
|
)
|
|
; --------------------------------------------------------------------------------
|
|
; --------------------------------------------------------------------------------
|
|
menuitem "&Trace around / Trigger..."
|
|
(
|
|
local &csel
|
|
|
|
&csel=""
|
|
if I.ADC.ENABLE(i.v0a)
|
|
&csel="&csel"+",V0"
|
|
if I.ADC.ENABLE(i.v1a)
|
|
&csel="&csel"+",V1"
|
|
if I.ADC.ENABLE(i.v2a)
|
|
&csel="&csel"+",V2"
|
|
if I.ADC.ENABLE(i.v3a)
|
|
&csel="&csel"+",V3"
|
|
if I.ADC.ENABLE(i.i0a)&&(I.ADC.SHUNT(i.i0a)!=0)
|
|
&csel="&csel"+",I0"
|
|
if I.ADC.ENABLE(i.i1a)&&(I.ADC.SHUNT(i.i1a)!=0)
|
|
&csel="&csel"+",I1"
|
|
if I.ADC.ENABLE(i.i2a)&&(I.ADC.SHUNT(i.i2a)!=0)
|
|
&csel="&csel"+",I2"
|
|
if I.ADC.ENABLE(i.p0a)&&(I.ADC.SHUNT(i.p0a)!=0)
|
|
&csel="&csel"+",P0"
|
|
if I.ADC.ENABLE(i.p1a)&&(I.ADC.SHUNT(i.p1a)!=0)
|
|
&csel="&csel"+",P1"
|
|
if I.ADC.ENABLE(i.p2a)&&(I.ADC.SHUNT(i.p2a)!=0)
|
|
&csel="&csel"+",P2"
|
|
|
|
if string.mid("&csel",0,1)==","
|
|
&csel=string.cut("&csel",1)
|
|
|
|
dialog
|
|
(&
|
|
header "Trace around or Trigger"
|
|
|
|
pos 0x1 1.3 6. 1.
|
|
chan: PULLDOWN "&csel" ""
|
|
pos 0x8 1.3 22.
|
|
addr: defedit "" ""
|
|
pos 33. 0.7 7. 1.
|
|
a.eq: choosebox "equal" ""
|
|
pos 33. 1.7 7. 1.
|
|
a.not: choosebox "! equal" ""
|
|
pos 41. 0.7 7. 1.
|
|
a.ris: choosebox "rising" ""
|
|
pos 41. 1.7 7. 1.
|
|
a.fal: choosebox "falling" ""
|
|
|
|
pos 0. 0. 49. 3.5
|
|
box "Channel Volt/Amp/Watt Range"
|
|
|
|
pos 1. 3.2 11. 1.
|
|
d.pre: choosebox "TrigDelay 10%" ""
|
|
d.center: choosebox "TrigDelay 50%" ""
|
|
d.post: choosebox "TrigDelay 90%" ""
|
|
|
|
pos 15. 3.2 12. 1.
|
|
t.break: choosebox "Break Analyzer" ""
|
|
t.trigg: choosebox "Break Program" ""
|
|
|
|
|
|
pos 15. 5.5 9.
|
|
defbutton "Ok"
|
|
(
|
|
dialog.execute apply
|
|
dialog.end
|
|
)
|
|
|
|
pos 39. 5.5 9.
|
|
button "Cancel" "dialog.end"
|
|
|
|
pos 27. 5.5 9.
|
|
apply: button "Apply"
|
|
(
|
|
local &addr &addrdecl &triggerA &tdelay &breakarg &tracetrigger
|
|
local &addr1 &addr2 &addr1l &addr1h &addr2l &addr2h
|
|
local &chan &channel
|
|
|
|
on error jumpto
|
|
(
|
|
beep 5.
|
|
print "Input error, please check syntax"
|
|
enddo
|
|
)
|
|
|
|
; -----------------------------------------------------------------------
|
|
&addrdecl=""
|
|
&addr=dialog.string(addr)
|
|
&chan=dialog.string(chan)
|
|
|
|
gosub CheckRange &addr &chan
|
|
ENTRY &addr1 &addr2
|
|
|
|
|
|
; -----------------------------------------------------------------------
|
|
|
|
if dialog.boolean(d.pre)
|
|
&tdelay=52428.
|
|
else if dialog.boolean(d.center)
|
|
&tdelay=524288./2.
|
|
else
|
|
&tdelay=524288.-52428.
|
|
|
|
; &tdelay=&tdelay*1.6
|
|
; &tdelay=conv.floattoint(&tdelay)
|
|
; &tdelay="&tdelay"+"us"
|
|
|
|
I.TDelay 100%
|
|
|
|
if dialog.boolean(t.break)
|
|
(
|
|
&breakarg="BREAK.TRACE IF tdelay"
|
|
i.TOut BusA OFF
|
|
)
|
|
else
|
|
(
|
|
&breakarg="TRIGGER.PODBUS IF tdelay"
|
|
i.TOut BusA ON
|
|
TRIGGER.Set.Break ON
|
|
)
|
|
&tracetrigger="TRUE"
|
|
|
|
; ------------------------------------------------------------------------
|
|
if dialog.boolean(a.eq)||dialog.boolean(a.not)
|
|
(
|
|
if dialog.boolean(a.eq)
|
|
&triggerA="AlphaRange"
|
|
else if dialog.boolean(a.not)
|
|
&triggerA="!AlphaRange"
|
|
|
|
Integrator.ReProgram
|
|
(
|
|
; Volt/Amp/Watt Range: &addr
|
|
SELECTORRANGE AlphaRange &addr1--&addr2
|
|
|
|
; Channel &chan
|
|
SELECTOR Channel i.A15.Falling &channel
|
|
|
|
; DelayCounter
|
|
EXTERNSYNCCOUNTER tdelay &tdelay
|
|
|
|
Sample.ON
|
|
start:
|
|
TRIGGER.TRACE IF &triggerA&&Channel
|
|
CONTinue IF &triggerA&&Channel
|
|
occured:
|
|
Counter.Increment tdelay
|
|
&breakarg
|
|
)
|
|
)
|
|
else
|
|
(
|
|
if dialog.boolean(a.ris)
|
|
(
|
|
&addr1l=0.
|
|
&addr1h=&addr1
|
|
&addr2l=&addr1
|
|
&addr2h=4096.
|
|
)
|
|
else
|
|
(
|
|
&addr2l=0.
|
|
&addr2h=&addr2
|
|
&addr1l=&addr2
|
|
&addr1h=4096.
|
|
)
|
|
|
|
Integrator.ReProgram
|
|
(
|
|
; Volt/Amp/Watt Range: &addr
|
|
SELECTORRANGE AlphaRange &addr1l--&addr1h
|
|
SELECTORRANGE BetaRange &addr2l--&addr2h
|
|
|
|
; Channel &chan
|
|
SELECTOR Channel i.A15.Falling &channel
|
|
|
|
; DelayCounter
|
|
EXTERNSYNCCOUNTER tdelay &tdelay
|
|
|
|
Sample.ON
|
|
start:
|
|
CONTinue IF AlphaRange&&Channel
|
|
startA:
|
|
TRIGGER.TRACE IF BetaRange&&Channel
|
|
CONTinue IF BetaRange&&Channel
|
|
occured:
|
|
Counter.Increment tdelay
|
|
&breakarg
|
|
)
|
|
)
|
|
|
|
print "Analyzer programmed."
|
|
goto applyend
|
|
|
|
|
|
;---------
|
|
CheckRange:
|
|
ENTRY &addr &chan
|
|
|
|
local &shunt &PwrVolt
|
|
|
|
&shunt=0
|
|
&PwrVolt=0
|
|
|
|
; check channel
|
|
if "&chan"=="V0"
|
|
&channel="i.A14.Low i.A13.Low i.A12.Low"
|
|
else if "&chan"=="V1"
|
|
&channel="i.A14.Low i.A13.Low i.A12.High"
|
|
else if "&chan"=="V2"
|
|
&channel="i.A14.Low i.A13.High i.A12.Low"
|
|
else if "&chan"=="V3"
|
|
&channel="i.A14.Low i.A13.High i.A12.High"
|
|
else if "&chan"=="I0"||"&chan"=="P0"
|
|
(
|
|
&channel="i.A14.High i.A13.Low i.A12.Low"
|
|
&shunt=I.ADC.SHUNT(i.i0a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p0a)
|
|
)
|
|
else if "&chan"=="I1"||"&chan"=="P1"
|
|
(
|
|
&channel="i.A14.High i.A13.Low i.A12.High"
|
|
&shunt=I.ADC.SHUNT(i.i1a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p1a)
|
|
)
|
|
else if "&chan"=="I2"||"&chan"=="P2"
|
|
(
|
|
&channel="i.A14.High i.A13.High i.A12.Low"
|
|
&shunt=I.ADC.SHUNT(i.i2a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p2a)
|
|
)
|
|
|
|
|
|
; check empty
|
|
if "&addr"==""
|
|
(
|
|
beep 5.
|
|
print "Input error: Empty Range"
|
|
enddo
|
|
)
|
|
; check range
|
|
EVAL &addr
|
|
&t1=eval.type()
|
|
if (&t1==0x80) ; DRange
|
|
(
|
|
&len=STRING.LEN("&addr")
|
|
&cut=STRING.SCAN("&addr","--",0)
|
|
&addr1=STRING.CUT("&addr",-(&len-&cut))
|
|
&addr2=STRING.CUT("&addr",&cut+2)
|
|
)
|
|
else
|
|
(
|
|
&addr1=&addr
|
|
&addr2=&addr
|
|
)
|
|
|
|
; check lo-val
|
|
EVAL &addr1
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="Input Error: "+"&t1"+" no valid value!"
|
|
print %ERROR "&t1"
|
|
enddo
|
|
)
|
|
; check hi-val
|
|
EVAL &addr2
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="Input Error: "+"&t1"+" no valid value!"
|
|
print %ERROR "&t1"
|
|
enddo
|
|
)
|
|
|
|
; calculation of trigger value
|
|
if "&chan"=="V0"||"&chan"=="V1"||"&chan"=="V2"||"&chan"=="V3"
|
|
(
|
|
; voltage calculation
|
|
; &addr1=&addr1*4096.*1000./5000.
|
|
&addr1=&addr1*819.2
|
|
&addr2=&addr2*819.2
|
|
)
|
|
else
|
|
(
|
|
if "&chan"=="P0"||"&chan"=="P1"||"&chan"=="P2"
|
|
(
|
|
&addr1=&addr1/&PwrVolt
|
|
&addr2=&addr2/&PwrVolt
|
|
)
|
|
; current calculation
|
|
; &addr1=&addr1*&shunt*4096.*1000.*2./125.
|
|
&addr1=&addr1*&shunt*32768.
|
|
&addr2=&addr2*&shunt*32768.
|
|
)
|
|
|
|
if &addr1==0.0
|
|
&addr1=0.
|
|
else if &addr1>4096.
|
|
&addr1=4096.
|
|
else
|
|
&addr1=conv.floattoint(&addr1)
|
|
|
|
if &addr2==0.0
|
|
&addr2=0.
|
|
else if &addr2>4096.
|
|
&addr2=4096.
|
|
else
|
|
&addr2=conv.floattoint(&addr2)
|
|
|
|
return &addr1 &addr2
|
|
;---------
|
|
|
|
|
|
applyend:
|
|
)
|
|
)
|
|
dialog.set a.eq
|
|
dialog.set d.center
|
|
dialog.set t.break
|
|
|
|
)
|
|
; --------------------------------------------------------------------------------
|
|
; --------------------------------------------------------------------------------
|
|
menuitem "Multiple trace after..."
|
|
(
|
|
local &csel
|
|
|
|
&csel=""
|
|
if I.ADC.ENABLE(i.v0a)
|
|
&csel="&csel"+",V0"
|
|
if I.ADC.ENABLE(i.v1a)
|
|
&csel="&csel"+",V1"
|
|
if I.ADC.ENABLE(i.v2a)
|
|
&csel="&csel"+",V2"
|
|
if I.ADC.ENABLE(i.v3a)
|
|
&csel="&csel"+",V3"
|
|
if I.ADC.ENABLE(i.i0a)&&(I.ADC.SHUNT(i.i0a)!=0)
|
|
&csel="&csel"+",I0"
|
|
if I.ADC.ENABLE(i.i1a)&&(I.ADC.SHUNT(i.i1a)!=0)
|
|
&csel="&csel"+",I1"
|
|
if I.ADC.ENABLE(i.i2a)&&(I.ADC.SHUNT(i.i2a)!=0)
|
|
&csel="&csel"+",I2"
|
|
if I.ADC.ENABLE(i.p0a)&&(I.ADC.SHUNT(i.p0a)!=0)
|
|
&csel="&csel"+",P0"
|
|
if I.ADC.ENABLE(i.p1a)&&(I.ADC.SHUNT(i.p1a)!=0)
|
|
&csel="&csel"+",P1"
|
|
if I.ADC.ENABLE(i.p2a)&&(I.ADC.SHUNT(i.p2a)!=0)
|
|
&csel="&csel"+",P2"
|
|
|
|
if string.mid("&csel",0,1)==","
|
|
&csel=string.cut("&csel",1)
|
|
|
|
dialog
|
|
(&
|
|
header "Multiple trace after "
|
|
pos 0x1 1.3 6. 1.
|
|
chan: PULLDOWN "&csel" ""
|
|
pos 0x8 1.3 22.
|
|
addr: defedit "" ""
|
|
pos 33. 0.7 7. 1.
|
|
a.eq: choosebox "equal" ""
|
|
pos 33. 1.7 7. 1.
|
|
a.not: choosebox "! equal" ""
|
|
pos 41. 0.7 7. 1.
|
|
a.ris: choosebox "rising" ""
|
|
pos 41. 1.7 7. 1.
|
|
a.fal: choosebox "falling" ""
|
|
|
|
pos 0. 0. 49. 3.5
|
|
box "Channel Volt/Amp/Watt Range"
|
|
|
|
pos 1. 3. 11. 1.
|
|
text "Cycles to trace:"
|
|
delay: edit "1000." ""
|
|
|
|
pos 15. 3.5 9.
|
|
defbutton "Ok"
|
|
(
|
|
dialog.execute apply
|
|
dialog.end
|
|
)
|
|
|
|
pos 39. 3.5 9.
|
|
button "Cancel" "dialog.end"
|
|
|
|
pos 27. 3.5 9.
|
|
apply: button "Apply"
|
|
(
|
|
local &addr &addrdecl &triggerA &tdelay &tracetrigger
|
|
local &addr1 &addr2 &addr1l &addr1h &addr2l &addr2h
|
|
local &chan &channel
|
|
|
|
on error jumpto
|
|
(
|
|
beep 5.
|
|
print "Input error, please check syntax"
|
|
enddo
|
|
)
|
|
|
|
|
|
; -----------------------------------------------------------------------
|
|
&addrdecl=""
|
|
&addr=dialog.string(addr)
|
|
&chan=dialog.string(chan)
|
|
|
|
gosub CheckRange &addr &chan
|
|
ENTRY &addr1 &addr2
|
|
|
|
; ------------------------------------------------------------------------
|
|
|
|
&tdelay=dialog.string(delay)
|
|
; &tdelay=&tdelay*1.6
|
|
; &tdelay=conv.floattoint(&tdelay)
|
|
; &tdelay="&tdelay"+"us"
|
|
|
|
|
|
if dialog.boolean(a.eq)||dialog.boolean(a.not)
|
|
(
|
|
if dialog.boolean(a.eq)
|
|
&triggerA="AlphaRange"
|
|
else if dialog.boolean(a.not)
|
|
&triggerA="!AlphaRange"
|
|
|
|
Integrator.ReProgram
|
|
(
|
|
; Volt/Amp/Watt Range: &addr
|
|
SELECTORRANGE AlphaRange &addr1--&addr2
|
|
|
|
; Channel &chan
|
|
SELECTOR Channel i.A15.Falling &channel
|
|
|
|
; Delay Counter
|
|
EXTERNSYNCCOUNTER delay &tdelay
|
|
|
|
start:
|
|
Sample.ON if &triggerA&&Channel
|
|
CONTinue if &triggerA&&Channel
|
|
occured:
|
|
Counter.Enable delay
|
|
Counter.Restart delay IF delay
|
|
Sample.OFF IF delay
|
|
GOTO start IF delay
|
|
)
|
|
)
|
|
else
|
|
(
|
|
if dialog.boolean(a.ris)
|
|
(
|
|
&addr1l=0.
|
|
&addr1h=&addr1
|
|
&addr2l=&addr1
|
|
&addr2h=4096.
|
|
)
|
|
else
|
|
(
|
|
&addr2l=0.
|
|
&addr2h=&addr2
|
|
&addr1l=&addr2
|
|
&addr1h=4096.
|
|
)
|
|
|
|
Integrator.ReProgram
|
|
(
|
|
; Voltage/Current Range: &addr
|
|
SELECTORRANGE AlphaRange &addr1l--&addr1h
|
|
SELECTORRANGE BetaRange &addr2l--&addr2h
|
|
|
|
; Channel &chan
|
|
SELECTOR Channel i.A15.Falling &channel
|
|
|
|
; DelayCounter
|
|
EXTERNSYNCCOUNTER delay &tdelay
|
|
|
|
start:
|
|
CONTinue IF AlphaRange&&Channel
|
|
startA:
|
|
Sample.ON IF BetaRange&&Channel
|
|
CONTinue IF BetaRange&&Channel
|
|
occured:
|
|
Counter.Enable delay
|
|
Counter.Restart delay IF delay
|
|
Sample.OFF IF delay
|
|
GOTO start IF delay
|
|
)
|
|
)
|
|
|
|
|
|
print "Analyzer programmed."
|
|
goto applyend
|
|
|
|
|
|
;---------
|
|
CheckRange:
|
|
ENTRY &addr &chan
|
|
|
|
local &shunt &PwrVolt
|
|
|
|
&shunt=0
|
|
&PwrVolt=0
|
|
|
|
; check channel
|
|
if "&chan"=="V0"
|
|
&channel="i.A14.Low i.A13.Low i.A12.Low"
|
|
else if "&chan"=="V1"
|
|
&channel="i.A14.Low i.A13.Low i.A12.High"
|
|
else if "&chan"=="V2"
|
|
&channel="i.A14.Low i.A13.High i.A12.Low"
|
|
else if "&chan"=="V3"
|
|
&channel="i.A14.Low i.A13.High i.A12.High"
|
|
else if "&chan"=="I0"||"&chan"=="P0"
|
|
(
|
|
&channel="i.A14.High i.A13.Low i.A12.Low"
|
|
&shunt=I.ADC.SHUNT(i.i0a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p0a)
|
|
)
|
|
else if "&chan"=="I1"||"&chan"=="P1"
|
|
(
|
|
&channel="i.A14.High i.A13.Low i.A12.High"
|
|
&shunt=I.ADC.SHUNT(i.i1a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p1a)
|
|
)
|
|
else if "&chan"=="I2"||"&chan"=="P2"
|
|
(
|
|
&channel="i.A14.High i.A13.High i.A12.Low"
|
|
&shunt=I.ADC.SHUNT(i.i2a)
|
|
&PwrVolt=I.ADC.SHUNT(i.p2a)
|
|
)
|
|
|
|
; check empty
|
|
if "&addr"==""
|
|
(
|
|
beep 5.
|
|
print "Input error: Empty Range"
|
|
enddo
|
|
)
|
|
; check range
|
|
EVAL &addr
|
|
&t1=eval.type()
|
|
if (&t1==0x80) ; DRange
|
|
(
|
|
&len=STRING.LEN("&addr")
|
|
&cut=STRING.SCAN("&addr","--",0)
|
|
&addr1=STRING.CUT("&addr",-(&len-&cut))
|
|
&addr2=STRING.CUT("&addr",&cut+2)
|
|
)
|
|
else
|
|
(
|
|
&addr1=&addr
|
|
&addr2=&addr
|
|
)
|
|
|
|
; check lo-val
|
|
EVAL &addr1
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="Input Error: "+"&t1"+" no valid value!"
|
|
print %ERROR "&t1"
|
|
enddo
|
|
)
|
|
; check hi-val
|
|
EVAL &addr2
|
|
&t1=eval.type()
|
|
; &DInteger DIntNum DFloat DHex DNumeric
|
|
if (&t1!=0x08)&&(&t1!=0x2E)&&(&t1!=0x10)&&(&t1!=0x04)&&(&t1!=0x3E)
|
|
(
|
|
&t1="Input Error: "+"&t1"+" no valid value!"
|
|
print %ERROR "&t1"
|
|
enddo
|
|
)
|
|
|
|
; calculation of trigger value
|
|
if "&chan"=="V0"||"&chan"=="V1"||"&chan"=="V2"||"&chan"=="V3"
|
|
(
|
|
; voltage calculation
|
|
; &addr1=&addr1*4096.*1000./5000.
|
|
&addr1=&addr1*819.2
|
|
&addr2=&addr2*819.2
|
|
)
|
|
else
|
|
(
|
|
if "&chan"=="P0"||"&chan"=="P1"||"&chan"=="P2"
|
|
(
|
|
&addr1=&addr1/&PwrVolt
|
|
&addr2=&addr2/&PwrVolt
|
|
)
|
|
; current calculation
|
|
; &addr1=&addr1*&shunt*4096.*1000.*2./125.
|
|
&addr1=&addr1*&shunt*32768.
|
|
&addr2=&addr2*&shunt*32768.
|
|
)
|
|
|
|
if &addr1==0.0
|
|
&addr1=0.
|
|
else if &addr1>4096.
|
|
&addr1=4096.
|
|
else
|
|
&addr1=conv.floattoint(&addr1)
|
|
|
|
if &addr2==0.0
|
|
&addr2=0.
|
|
else if &addr2>4096.
|
|
&addr2=4096.
|
|
else
|
|
&addr2=conv.floattoint(&addr2)
|
|
|
|
return &addr1 &addr2
|
|
;---------
|
|
|
|
|
|
applyend:
|
|
; v end button OK
|
|
)
|
|
)
|
|
; v end menuitem multiple trace after
|
|
dialog.set a.eq
|
|
)
|
|
)
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; --------------------------------------------------------------------------------
|
|
popup "[:alist]&List"
|
|
(
|
|
default
|
|
menuitem "&Default" "Integrator.List i.V0A i.V1A i.V2A i.V3A i.I0A i.I1A i.I2A"
|
|
menuitem "&All" "Integrator.List ALL"
|
|
menuitem "[:correlate]&Tracking with Timing and Draw"
|
|
(
|
|
Integrator.Timing /ZoomTrack
|
|
Integrator.Draw i.V0A i.V1A i.V2A i.V3A i.I0A i.I1A i.I2A /ZoomTrack
|
|
Integrator.List i.V0A i.V1A i.V2A i.V3A i.I0A i.I1A i.I2A /Track
|
|
)
|
|
)
|
|
; - - - - - - - - - - - - - - - - -
|
|
popup "[:atiming]&Timing"
|
|
(
|
|
default
|
|
menuitem "&Default" "Integrator.Timing"
|
|
menuitem "&All" "Integrator.Timing ALL"
|
|
menuitem "[:correlate]&Tracking with List and Draw"
|
|
(
|
|
Integrator.List i.V0A i.V1A i.V2A i.V3A i.I0A i.I1A i.I2A /Track
|
|
Integrator.Draw i.V0A i.V1A i.V2A i.V3A i.I0A i.I1A i.I2A /ZoomTrack
|
|
Integrator.Timing /ZoomTrack
|
|
)
|
|
)
|
|
popup "[:adraw]&Draw"
|
|
(
|
|
default
|
|
menuitem "&Default" "Integrator.Draw %Float.MICRO"
|
|
menuitem "&Channel V0-V1-V2-V3" "Integrator.Draw %Float.MICRO i.V0A i.V1A i.V2A i.V3A"
|
|
menuitem "&Channel V0" "Integrator.Draw %Float.MICRO i.V0A"
|
|
menuitem "&Channel V1" "Integrator.Draw %Float.MICRO i.V1A"
|
|
menuitem "&Channel V2" "Integrator.Draw %Float.MICRO i.V2A"
|
|
menuitem "&Channel V3" "Integrator.Draw %Float.MICRO i.V3A"
|
|
menuitem "&Channel I0-I1-I2" "Integrator.Draw %Float.MICRO i.I0A i.I1A i.I2A"
|
|
menuitem "&Channel I0" "Integrator.Draw %Float.MICRO i.I0A"
|
|
menuitem "&Channel I1" "Integrator.Draw %Float.MICRO i.I1A"
|
|
menuitem "&Channel I2" "Integrator.Draw %Float.MICRO i.I2A"
|
|
menuitem "&Channel P0-P1-P2" "Integrator.Draw %Float.MICRO i.P0A i.P1A i.P2A"
|
|
menuitem "&Channel P0" "Integrator.Draw %Float.MICRO i.P0A"
|
|
menuitem "&Channel P1" "Integrator.Draw %Float.MICRO i.P1A"
|
|
menuitem "&Channel P2" "Integrator.Draw %Float.MICRO i.P2A"
|
|
|
|
menuitem "[:correlate]&Tracking with List and Timing"
|
|
(
|
|
Integrator.List i.V0A i.V1A i.V2A i.V3A i.I0A i.I1A i.I2A /Track
|
|
Integrator.Timing /ZoomTrack
|
|
Integrator.Draw i.V0A i.V1A i.V2A i.V3A i.I0A i.I1A i.I2A /ZoomTrack
|
|
)
|
|
)
|
|
addhere
|
|
separator
|
|
menuitem "[:save]Save trace data ..." "Integrator.SAVE"
|
|
menuitem "[:load]Load reference data ..." "Integrator.LOAD *"
|
|
separator
|
|
; - - - - - - - - - - - - - - - - -
|
|
menuitem "&Reset" "Integrator.RESet"
|
|
)
|
|
)
|
|
; --------------------------------------------------------------------------------
|
|
; --------------------------------------------------------------------------------
|