SIM9H - Small Instrumentation Modules 9 Hundred
Документация: Worksheet/SIM9H.
Драйвер SIM9H служит для управления аналоговым PID регулятором SIM960
в корзине SIM900 производства SRS (Stanford Research Systems).
В данной системе принята фиксированная конфигурация:
Контроллер 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