- «rp_01, rp_02, rp_03, rp_04, rp_05» – расход пульпы в вертикальные аппараты №1, №2, №3, №4 и №5 соответственно;
- «rgv_01, rgv_02, rgv_03, rgv_04, rgv_05» – расход горячей (промывной) воды в аппараты №1, №2, №3, №4 и №5 соответственно;
- «rasrastv_01, rasrastv_02, rasrastv_03, rasrastv_04, rasrastv_05» – расход раствора на выходе из аппаратов №1, №2, №3, №4 и №5 соответственно;
- «Lev_01, Lev_02, Lev_03, Lev_04, Lev_05» – отклонение в аппаратах №1, №2, №3, №4 и №5 соответственно.
Текст основной программы, моделирующей автоматическую стабилизацию уровня раствора в аппарате №1 (для аппаратов №2, №3, №4 и №5 реализовано аналогично):
if vklpom and vkl then rp_01=1000+300*sin(SysTime()/10000.0) else rp_01=1000 end
/*
Моделирование синусоидальных помех, влияющих на величину расхода пульпы в аппарат
*/
Lev_01_old=Lev_01
Lev_01=Lev_01+0.3183*(rp_01+rgv_01-rasrastv_01)/3600
/*
Моделирование изменения отклонения уровня в аппарате, где:
- «0.3183» – отношение скорости изменения уровня в аппарате к расходу раствора на выходе из аппарата;
- «3600» - количество секунд в одном часе;
- «Lev_01_old» - предыдущее значении переменной «Lev_01»
*/
if vstr=1 then rgv_01=243 end
if vstr=0 then rgv_01=0 end
if vklpom then
rgv_01=rgv_01+3*sin(SysTime()/1000)
if rgv_01<0 then rgv_01=0 end
end
if (SysTime()-time_01)>=5000 then
time_01=SysTime()
vstr=1-vstr
end
/*программная реализация импульсной подачи промывной воды в аппарат с промежутком в 5 секунд*, где:
- «3*sin(sysTime()/1000)» - реализация синусоидальных помех, влияющих на расход горячей воды в аппарат;
- «SysTime» - функция Cicode, возвращающая значение величины времени, прошедшего от начала работы проекта (режима исполнения)
*/
if vkl=0 then
Lev_01=0
rasrastv_01=1136.5
rgv_01=121.5
end
/*
Реализация установки номинального значения расхода раствора на выходе из аппарата, номинального уровня в аппарате и номинального расхода горячей воды в аппарат
*/
if vkl1=1 and vkl=1 then rasrastv_01=rasrastv_011 else I_01=I_01+Lev_01*ki_01*5/32000
rarastv_01=1136.5+Lev_01*kp_01*200/32000+I_01+kd_01* *10/32000*(Lev_01-Lev_01_old) end
/*
Реализация ПИД - закона регулирования уровня раствора в аппарате, где:
- «kp_01» - пропорциональная составляющая закона регулирования;
- «I_01» - интегральная составляющая закона регулирования;
- «kd_01» - дифференциальная составляющая закона регулирования;
- «1136.5» - номинальный расход раствора на выходе из аппарата при отсутствии помех;
- «32000» - выходное значение сигнала устройства ввода/вывода;
*/
После определения всех переменных тэгов задаются тэги, используемые при построении трендов (TrendTags). Для этого в меню «Tags» редактора проектов выбирается пункт «TrendTags». В появившемся окне (рисунок 11) заполняются поля:
- «TrendTagName» – имя тэга;
- «Expression» – выражение (регистрируемое значение);
- «Trigger» – выражение Cicode, либо название тэга, запускающее регистрацию данных (для тэга «Lev_01» (рисунок 11) регистрация данных будет производиться, когда значение тэга находится в области от -1 до +1);
- «SamplePeriod» – интервал опроса;
- «FileName» – путь доступа к файлу, в котором будут храниться данные тренда;
- «StorageMethod» – метод сохранения данных (для тэга «Lev_01» на сохранение отводится восемь бай);
- «EngUnits» – единица измерения регистрируемых значений переменных или выражения, которые так же отображаются вдоль координатной оси и на графике тренда;
- «Format» – формат вывода значения тренда в графическом окне.
Так же можно заполнить следующие поля:
- «Time» – время суток, в которое начнется запись в архивный файл (в формате «ЧЧ:ММ:СС»);
- «Period» – периодичность записи в архивный файл;
- «Privilege» – привилегии, которыми должен обладать оператор для вывода данных на тренд;
- «Area» – название зоны, к которой принадлежит данный тренд.
По окончании заполнения полей нажимается кнопка «Add».
Рисунок 11-Окно определения свойств «TrendTags»
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.