Справка по SIM9H


SIM9H - Small Instrumentation Modules 9 Hundred


Документация: Worksheet/SIM9H.


Драйвер SIM9H служит для управления аналоговым PID регулятором SIM960 в корзине SIM900 производства SRS (Stanford Research Systems).
В данной системе принята фиксированная конфигурация:

  1. Корзина (Mainframe SIM900), подключенная к порту COM1-115200-8-N-1.
    DIP - переключатель скорости обмена находится на корзине сзади.
  2. Аналоговый PID регулятор (Analog PID Controller SIM960) в слоте №6 (порт 6).
Драйвер может быть легко расширен при необходимости добавления других устройств SRS.
Он может использоваться как DEMO и как прототип для других систем, использующих модули серии SRS SIM900.

Контроллер PID серии SIM960 осуществляет стабилизацию целевого параметра с помощью аналогового PID регулятора, работающего по формуле:

   где:
    Setpoint - целевое значение (уставка) стабилизируемого параметра (например, датчика тока магнита)
    Measure  - измеренное значение стабилизируемого параметра (например, датчика тока магнита)
    Output   - управляющий выход регулятора (например, управляющий ЦАП генератора тока магнита)
    ε        - сигнал ошибки (error) т.е. рассогласования между измеренным и целевым значением
    P×ε      - усиленный сигнал ошибки (amplified error)
    P        - пропорциональный фактор
    I        - интегральный фактор
    D        - дифференциальный фактор
    Offset   - постоянное смещение выхода
   
При этом, хотя используется аналоговое регулирование, коэффициенты P, I, D, Setpoint, Offset - задаются цифровым способом, через команды контроллера. Это позволяет получить высокую скорость работы PID регулятора (полоса пропускания усилителя - до 100 кГц), сохраняя при этом высокую гибкость настройки и возможность его включения в автоматизированные системы.

Основные характеристики контроллера PID серии SIM960 приведены в таблице:


Список сокращений и аббревиатур


Для именования кривых, тегов, сенсоров, окон и других программных объектов используются следующие соглашения о наименовании:

    Manufacturer:
     SRS      - Stanford Research Systems
    SubSystems:
     SIM9H    - Small Instrumentation Modules 900 (9 handreds)
     MFR      - Mainframe SIM900
     PID      - Analog PID Controller SIM960
    Parameters:
    Common:
     PollRate - Device polling rate, Hz
     ErrorCnt - Device error counter
     MFR:
      XIDN    - Device firmware identifier
     PID:
      XIDN    - Device firmware identifier
      PCTL    - Proportional action ON/OFF
      ICTL    - Integral action ON/OFF
      DCTL    - Derivative action ON/OFF
      OCTL    - Offset ON/OFF
      APOL    - Controller Polarity
      GAIN    - Proportional Gain
      INTG    - Integral Gain
      DERV    - Derivative Gain
      OFST    - Output Offset
      AMAN    - Output (Manual Output/PID Control)
      INPT    - Input (Internal/External Setpoint)
      SETP    - New setpoint
      RAMP    - Internal setpoint ramping ON/OFF
      RATE    - Setpoint ramping Rate
      RMPS    - Setpoint ramping status
      MOUT    - Manual Output
      SMON    - Setpoint Input Monitor
      MMON    - Measure Input Monitor
      EMON    - Amplified Error Monitor
      OMON    - Output Monitor
      ULIM    - Upper Output Limit
      LLIM    - Lower Output Limit
    Examples:
     SIM9H.MFR.XIDN  - Mainframe firmware identifier
     SIM9H.PID.GAIN  - Proportional gain of PID Controler
   


Конфигурирование и использование


Драйвер (см. программный код sim9h_drv.pas) имеет примерно такую конфигурацию (в качестве префикса системы взято DEMO):

[DeviceList]
&DEMO.SIM9H.DRV = device software program
[&DEMO.SIM9H.DRV]
Comment        = Hardware driver for SIM900
InquiryPeriod  = 0
DevicePolling  = 10, tpTimeCritical
ProgramSource  = ..\DaqPas\sim9h_drv.pas
StartupScript  = [&DEMO.SIM9H.DRV.StartupScript]
FinallyScript  = [∓DEMO.SIM9H.DRV.FinallyScript]
Simulator      = 0                                                 ; Must be 0 for driver
ComPort        = 1                                                 ; COM port number
PidPort        = 6                                                 ; PID port number
ComTimeOut     = 500                                               ; COM I/O timeout,ms
ComTimeGap     = 10                                                ; COM I/O timegap
PollPeriod     = 20                                                ; Poll period,ms
DebugFlags     = 3
OpenConsole    = 2
tagSIM9H       = DEMO.SIM9H
HelpFile       = ..\Help\sim9h.htm
AnalogOutputs  = 25
Link AnalogOutput 0  with curve DEMO.SIM9H.POLLRATE          history 1000
Link AnalogOutput 1  with curve DEMO.SIM9H.ERRORCNT          history 1000
Link AnalogOutput 2  with curve DEMO.SIM9H.PID.PCTL          history 1000
Link AnalogOutput 3  with curve DEMO.SIM9H.PID.ICTL          history 1000
Link AnalogOutput 4  with curve DEMO.SIM9H.PID.DCTL          history 1000
Link AnalogOutput 5  with curve DEMO.SIM9H.PID.OCTL          history 1000
Link AnalogOutput 6  with curve DEMO.SIM9H.PID.GAIN          history 1000
Link AnalogOutput 7  with curve DEMO.SIM9H.PID.INTG          history 1000
Link AnalogOutput 8  with curve DEMO.SIM9H.PID.DERV          history 1000
Link AnalogOutput 9  with curve DEMO.SIM9H.PID.OFST          history 1000
Link AnalogOutput 10 with curve DEMO.SIM9H.PID.MMON          history 1000
Link AnalogOutput 11 with curve DEMO.SIM9H.PID.OMON          history 1000
Link AnalogOutput 12 with curve DEMO.SIM9H.PID.AMAN          history 1000
Link AnalogOutput 13 with curve DEMO.SIM9H.PID.INPT          history 1000
Link AnalogOutput 14 with curve DEMO.SIM9H.PID.SETP          history 1000
Link AnalogOutput 15 with curve DEMO.SIM9H.PID.RAMP          history 1000
Link AnalogOutput 16 with curve DEMO.SIM9H.PID.RATE          history 1000
Link AnalogOutput 17 with curve DEMO.SIM9H.PID.MOUT          history 1000
Link AnalogOutput 18 with curve DEMO.SIM9H.PID.APOL          history 1000
Link AnalogOutput 19 with curve DEMO.SIM9H.PID.SMON          history 1000
Link AnalogOutput 20 with curve DEMO.SIM9H.PID.EMON          history 1000
Link AnalogOutput 21 with curve DEMO.SIM9H.PID.RMPS          history 1000
Link AnalogOutput 22 with curve DEMO.SIM9H.PID.ULIM          history 1000
Link AnalogOutput 23 with curve DEMO.SIM9H.PID.LLIM          history 1000
;------ Save custom parameters to INI file
CustomIniTagList  = [SIM9H.CustomParameters.TagList]
CustomIniFileRef  = ..\Data\SIM9H_Custom.ini
CustomIniSection  = [SIM9H.CustomParameters]
CustomIniBackups  = ..\Data\Custom
CustomIniAutoLoad = 1
CustomIniAutoSave = 0
[]
[ConfigFileList]
ConfigFile = ..\Data\SIM9H_Custom.ini
[]

[SerialPort-COM1]; Use switch on back side of SIM900 to change baudrate
Port     = COM1
BaudRate = 115200
Parity   = NONE
DataBits = 8
StopBits = 1
[]

[DataStorage]
DEMO.SIM9H.POLLRATE      = Curve 0 100 Black  15 1 ; Polling rate, poll/sec
DEMO.SIM9H.ERRORCNT      = Curve 0 100 Black  15 1 ; Device error counter
DEMO.SIM9H.PID.MMON      = Curve 0 100 Black  15 1 ; Measured input     monitor, V
DEMO.SIM9H.PID.OMON      = Curve 0 100 Black  15 1 ; Measured output    monitor, V
DEMO.SIM9H.PID.SMON      = Curve 0 100 Black  15 1 ; Measured setpoint  monitor, V
DEMO.SIM9H.PID.EMON      = Curve 0 100 Black  15 1 ; Measured error P*e monitor, V
DEMO.SIM9H.PID.PCTL      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.ICTL      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.DCTL      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.OCTL      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.GAIN      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.INTG      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.DERV      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.OFST      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.AMAN      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.INPT      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.SETP      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.RAMP      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.RATE      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.MOUT      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.APOL      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.RMPS      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.ULIM      = Curve 0 100 Black  15 1
DEMO.SIM9H.PID.LLIM      = Curve 0 100 Black  15 1
[]

[TagList]
DEMO.SIM9H.CMD.HELP      = integer 0       ; Command to call Help
DEMO.SIM9H.CMD.RESET     = integer 0       ; Command to full reset
DEMO.SIM9H.CMD.SAVEINI   = integer 0       ; Command to save INI file
DEMO.SIM9H.CMD.LOADINI   = integer 0       ; Command to load INI file
DEMO.SIM9H.MFR.XIDN      = string  OFFLINE ; Mainframe SIM900 *IDN?
DEMO.SIM9H.PID.XIDN      = string  OFFLINE ; PID port6 SIM960 *IDN?
DEMO.SIM9H.PID.PCTL      = integer 0       ; P GAIN ON/OFF
DEMO.SIM9H.PID.ICTL      = integer 0       ; I ICTL ON/OFF
DEMO.SIM9H.PID.DCTL      = integer 0       ; D DERV ON/OFF
DEMO.SIM9H.PID.OCTL      = integer 0       ; O OFST ON/OFF
DEMO.SIM9H.PID.GAIN      = real    0       ; P gain
DEMO.SIM9H.PID.INTG      = real    0       ; I gain
DEMO.SIM9H.PID.DERV      = real    0       ; D gain
DEMO.SIM9H.PID.OFST      = real    0       ; Offset, Volts
DEMO.SIM9H.PID.AMAN      = integer 0       ; PID control ON/OFF
DEMO.SIM9H.PID.INPT      = integer 0       ; Exter.input ON/OFF
DEMO.SIM9H.PID.SETP      = real    0       ; Setpoint, Volts
DEMO.SIM9H.PID.RAMP      = integer 0       ; Ramping ON/OFF
DEMO.SIM9H.PID.RATE      = real    0       ; Ramping rate, V/s
DEMO.SIM9H.PID.MOUT      = real    0       ; Manual out, Volts
DEMO.SIM9H.PID.APOL      = integer 0       ; Polarity 1/0=POS/NEG
DEMO.SIM9H.PID.RMPS      = integer 0       ; Setpoint ramping status
DEMO.SIM9H.PID.ULIM      = real    0       ; Upper Output Limit, Volts
DEMO.SIM9H.PID.LLIM      = real    0       ; Lower Output Limit, Volts
[]
   

Для хранения данных, полученных от устройства, используются кривые, подключенные к выходам (AnalogOutputs) и одноименные им теги (некоторые теги не имеют одноименных им кривых, например, теги идентификатор устройств DEMO.SIM9H.MFR.XIDN, DEMO.SIM9H.PID.XIDN). Обновление этих кривых и тегов идет автоматически в цикле опроса.

Для задания новых значений параметров PID регулятора используются сообщения:

    Сообщения:
     @PID.n v     - Присвоить PID параметру n новое значение v. Допускается имя n из списка:
                    PCTL,ICTL,DCTL,OCTL,AMAN,INPT,RAMP,GAIN,INTG,DERV,OFST,SETP,RATE,MOUT,ULIM,LLIM
     @Edit PID.n  - Редактировать PID параметр n. Допускается имя n из списка:
                    GAIN,INTG,DERV,OFST,SETP,RATE,MOUT,ULIM,LLIM
     @SaveIni     - Сохранить параметры PID регулятора в  INI файл
     @LoadIni     - Загрузить параметры PID регулятора из INI файла
    Примеры сообщений:
     @Edit PID.GAIN
     @PID.GAIN 3.14
     @PID.PCTL 1
     @LoadIni