Сценарии использования

Основным режимом работы блока питания является программно-управляемая развертка тока магнита (в большинстве случаев линейная с постоянной скоростью). Такой режим используется при измерениях сигналов ЭПР, коэффициента Холла или магнетосопротивления. Пользователю обычно требуется запускать и останавливать развертку тока, изменять скорость развертки и контролировать текущее значение тока и/или магнитного поля. Ниже приведен текст простого сценария для Data Master 2003, реализующий указанные функции.

<html>

<head>

<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="MSThemeCompatible" content="Yes">
<meta name="GENERATOR" content="DM Script Editor">
<meta name="Author" content="RRR">
<meta name="vs_targetSchema" content="HTML 4.0">

<title>PU Control v1.3</title>

<link rel="stylesheet" href="applets.css" type="text/css">
<script src="cookies.vbs" language="VBScript"></script>

</head>

<body topmargin="0" leftmargin="10" scroll="no">

<script id="clientEventHandlersVBS" language="VBScript">

Option Explicit

private FScanU, FScanD, pubuf, PUDelay, PUStep, PUPortNumber, Field, QHCoef

FScanU=false              ' field scanning (PU)
FScanD=false
pubuf=""
PUPortNumber="1"
PUStep="0A"               ' must be 2-char HEX string
PUDelay=100               ' scan delay (msec)
Field=0.0
QHCoef=0.001085           ' QH -> H

Sub window_onload
dim Tmp
  Tmp=ReadCookie("PUPortNumber")
  if Tmp<>"" then PUPortNumber=Tmp
  PUComPort.value=PUPortNumber
  Tmp=ReadCookie("PUStep")
  if Tmp<>"" then PUStep=Tmp
  PUStepSelect.value=PUStep
  Tmp=ReadCookie("PUDelay")
  if Tmp<>"" then PUDelay=Tmp
  PUDelaySelect.value=PUDelay
  Tmp=ReadCookie("QHCoef")
  if Tmp<>"" then QHCoef=Tmp
  QHCoefEdit.value=QHCoef
  PUPort.Open(PUPortNumber & ",9600,3,8,0")
  call PUPort.Write("S" & PUStep & vbCr) ' set scan step
End Sub

Sub window_onunload
  WriteCookie "PUPortNumber", PUPortNumber, false
  WriteCookie "PUStep", PUStep, false
  WriteCookie "PUDelay", PUDelay, false
  WriteCookie "QHCoef", QHCoef, false
  PUPort.Close
End Sub

sub HDownBtn_onclick
  FScanD=true
  FScanU=false
  public_DTrigger
end sub

sub HUpBtn_onclick
  FScanU=true
  FScanD=false
  public_UTrigger
end sub

sub HStopBtn_onclick
  FScanU=false
  FScanD=false
end sub

sub PUComPort_onchange
  PUPortNumber=PUComPort.value
  PUPort.Close
  PUPort.Open(PUPortNumber & ",9600,3,8,0")
end sub

sub PUStepSelect_onchange
  PUStep=PUStepSelect.value
  call PUPort.Write("S" & PUStep & vbCr) ' set scan step
end sub

sub PUDelaySelect_onchange
  PUDelay=PUDelaySelect.value
end sub

sub QHCoefEdit_onchange
  QHCoef=QHCoefEdit.value
end sub

sub PUPort_OnRead(Str)
dim temp
  pubuf=pubuf+Str
  if InStr(pubuf, "!")>0 then
    PUPort.Write("L" & vbCr)
    pubuf=""
    exit sub
  end if
  temp="&H" & Mid(pubuf,1,4)
  if (InStr(pubuf, vbCr)>0) and IsNumeric(temp) then
    QHDisplay.innerHTML=CLng(temp)
    Field=CLng(temp)*QHCoef
    HDisplay.innerHTML=FormatNumber(Field, 3)
    temp=Round(CLng(temp)*100/65536)
    if temp=0 then temp=1    ' assign td1.width=0 causes ERROR!!!
    if temp=100 then temp=99 ' the same, but for td2.width...
    td1.width=temp & "%"
    td2.width=(100-temp) & "%"
    pubuf=""
    if FScanU then call SetTimeout("public_UTrigger", PUDelay)
    if FScanD then call SetTimeout("public_DTrigger", PUDelay)
  end if
end sub

' -- external trigger methods
sub public_UTrigger
  call PUPort.Write("+")
end sub

sub public_DTrigger
  call PUPort.Write("-")
end sub

' -- Field property getter
function public_get_Field
  public_get_Field=Field
end function

' -- Setup property getter
function public_get_Setup
  public_get_Setup=SetupPU.style.display="block"
end function

' -- Setup property putter
sub public_put_Setup(val)
  if val then SetupPU.style.display="block" else SetupPU.style.display="none"
end sub

</script>

<!-- front panel -->
<fieldset style="width: 188">
<legend>Field</legend>
H<sub>Q</sub> ~ <span class="display" id="HDisplay">00.00
</span> &nbsp;kOe&nbsp;&nbsp;Q<sub>H</sub> =
<span class="display" id="QHDisplay">00000</span><br>
<table border="0" height="5" width="170" cellspacing="0" cellpadding="0"
bgcolor="#000000"><tr><td width="0%" bgcolor="#ff0000" id="td1"></td>
<td width="100%" id="td2"></td></tr></table>
<button id="HDownBtn" style="width: 60">&lt;&lt; Down</button>
<button id="HStopBtn" style="width: 60">| | Pause</button>
<button id="HUpBtn" style="width: 50">Up &gt;&gt;</button>
</fieldset>

<!-- setup panel -->
<div id="SetupPU">
<table border="0" cellspacing="0" cellpadding="5">
<tr>
<td>Port:</td><td align="right"><select id="PUComPort" size=1>
<option selected value="1">COM1</option>
<option value="2">COM2</option>
<option value="3">COM3</option>
<option value="4">COM4</option>
<option value="5">COM5</option>
<option value="6">COM6</option>
<option value="7">COM7</option>
<option value="8">COM8</option>
</select></td>
</tr>
<tr>
<td>Step:</td><td align="right"><select id="PUStepSelect" size=1>
<option value="01">1</option>
<option value="02">2</option>
<option value="05">5</option>
<option selected value="0A">10</option>
<option value="14">20</option>
</select></td>
</tr>
<tr>
<td>Delay, ms:</td><td align="right"><select id="PUDelaySelect" size=1>
<option value="50">50</option>
<option selected value="100">100</option>
<option value="500">500</option>
</select></td>
</tr>
<tr>
<td>QHCoef:</td><td align="right"><input type="text"
size="10" value="" id="QHCoefEdit"></td>
</tr>
</table>
</div>

<object classid="clsid:673AAF16-9A0B-11D4-B2A4-FD6847C75367"
id="PUPort" width="1" height="1">
</object>

</body>

</html>

Панель управления источником питания соленоида в составе системы автоматизации измерений магнетосопротивления

Панель управления источником питания соленоида в составе системы автоматизации измерений магнетосопротивления. Сценарий внедрен в контейнер - скриптлет (группа элементов управления "Field").