Смекни!
smekni.com

Система автоматичного регулювання (САР) турбіни атомної електростанції (стр. 16 из 22)

Програма «FICMAC» аналогічно програмі «SICMAC» виробляє керуючі команди для алгоритмічної перебудови МКУ.

Програма «FORDIN», використовуючи інформаційні масиви програм: «SICMAC» і «FICMAC», а також масив IC, формує масив вихідних керуючих сигналів «DIN», що обробляється програмою «DIOUT».

Програми контролю забезпечують підвищення надійності функціонування ЕЧСР, здійснюючи тестування ЕОМ і супутнього УСО.

Контроль здійснюється з використанням програмно-апаратних засобів системи ЕЧСР.

В ЕОМ контролюється працездатність ОЗП плат ПМВ01, МВ01 шляхом запису, зчитування і порівняння визначених кодів.

Для перевірки плати ПСВ01 встановлюється визначений режим плати (множення) і контролюється результат. Названі операції проводяться програмою «TEST», що включається в програмний блок початкового пуску, і блок програм нерегламентованого циклу.

Крім того здійснюється контроль плат АВВ01 і ПСВ01 за максимальним часом виконання операцій. Для АВВ01 – це час зчитування інформації з одного каналу, для ПСВ01 час виконання операції множення чи ділення. Реалізується часовий контроль програмою (ТМР), що обслуговує таймер 5, який ініциалізує переривання по 3-му рівні контролера переривань при перевищенні встановленого часу виконання операцій, а також часу роботи програм БКУ і МКУ.

Програма ТМР сполучена з програмним файлом «TEST». При порушенні тимчасового циклу відбувається переключення на резервну ЕОМ, а несправна система переходить у режим діагностики «d». У цьому режимі функціонує тільки програма «USOCON», що забезпечує вивід інформації про тип відмовлення на індикатори пульта ЕОМ.

У системі задіяні також формовані в ЕОМ сигнали контролю по парності і помилці звертання.

Програма контролю вхідних аналогових сигналів забезпечує виявлення несправного каналу і перехід на зчитування інформації зі справного каналу, для дубльованих каналів, і відключення каналу для одинарних. Виявлення несправності супроводжується відповідною індикацією і записом в інформаційний масив.

Програма контролю вхідних дискретних сигналів, використовуючи міжмашину магістраль обміну інформацією, виявляє канал, що відмовив, фіксує його стан в інформаційному масиві.

Програма контролю вихідних аналогових сигналів «CONTR» здійснює порівняння числових кодів відповідних вихідних сигналів з кодами контрольного масиву (DAN02) аналогової інформації для тих же сигналів. У результаті порівняння виявляється місце відмовлення: у системі ЦАП чи в субблоках САР і СТП. Інформація про несправність заноситься в масив.

Програма контролю вихідних дискретних сигналів сполучена з програмним файлом «DIOUT» і дозволяє фіксувати стан контактів усіх вихідних реле. Програмою виробляється порівняння інформації на виході ЕОМ і інформації, що вводиться через мультиплексор СРЛ, про стан контактів СКР. Результати керування фіксуються в інформаційному масиві.

Програма «USOCON» узагальнює інформацію всіх програм контролю і формує команди на зміну алгоритму керування в залежності від стану системи, а також готує дані по діагностиці для виводу на пульт ЕОМ і субблок контролю СКС. При цьому програмою фіксуються відмовлення, як у системі УСО, та к і в вузлах мікро-ЕОМ. По факту відмовлення в системі власного УСО ЕОМ або у вузлах самої ЕОМ забезпечується переключення на резервну мікроЕОМ через СКС і переведення ЕОМ у режим діагностики. У режимі діагностики в цикл включена тільки програма «PULT» і програма виводу на пульт індикації на пульт ЕОМ «INOCON». Вивід інформації на пульт здійснюється по факту установки оператором з пульта прапорадіагностики (FLAG+36H=0FFH).

Сервісні програми зібрані у файлі «PULT» і обслуговують діалоговий режим «оператор-ЕОМ». Введення команд і індикація здійснюються за допомогою пульта мікро-ЕОМ. При цьому реалізуються наступні режими:

1) індикація і зміна вмісту пам'яті ЕОМ;

2) індикація і зміна стану портів ЕОМ;

3) індикація параметрів обчислювального процесу у відсотках і абсолютних одиницях;

4) запис перехідних процесів двох параметрів в ОЗП ЕОМ;

5) переміщення і порівняння масивів в ОЗП й ін.

Блок програм нерегламентованого циклу.

Блок складають програми, що не вимагають високої швидкодії. Ці програми організовані в цикл, що перериваються всіма, описаними вище програмними блоками.

Програма введення настроєчних коефіцієнтів забезпечує обслуговуючому персоналу можливість робити підстроювання коефіцієнтів системи регулювання за допомогою кнопкового пульта, розміщеного в субблоці перемикачів СП.

Програма «TEST» і її призначення розглянуті вище.

Програми контролю теплового стану турбіни «POKZPR» і «NAGSPR» забезпечують контроль температурних напружень турбіни й обчислення припустимого діапазону зміни потужності турбоагрегату.

Бібліотека підпрограм складається з програм, що реалізують найбільш часто повторювані функції.

5. Розробка програмного субмодуля контролю струму ЕГП

5.1 Розробка алгоритму контролю струму ЕГП

Програмний модуль контролю струму ЕГП входить до складу програмного забезпечення швидкодіючого контуру керування. Його призначенням є безупинний контроль значення струму ЕГП. Оскільки струм ЕГП є вихідним аналоговим сигналом, то для його контролю необхідно реалізувати схему зворотного зв'язку між виходом каналу ЕГП і обчислювальною машиною.


Рис. 5.1 Блок-схема алгоритму контролю струму ЕГП

Алгоритм контролю струму ЕГП повинен забезпечувати відключення каналу при появі струму, непідтвердженого вхідними вимогами, такими як спрацювання каналу релейного форсування, диференціатора, попереднього захисту блоку (команда РТА 3).

Алгоритм контролю струму ЕГП складається з наступних кроків:

1. Виробляється перевірка контрольного струму ЕГП на знак. Значення знаку струму ЕГП зберігається в інформаційному масиві «DUOTC», порядковий номер комірки в масиві – «3», тобто адреса комірки позначається як «DOUTC+3». У випадку позитивного знака в дану комірку буде записаний код «00H», у випадку негативного знака буде записаний код «0FFH».

2. Якщо знак струму ЕГП позитивний, то порівнюємо його з уставкою «+75 МА», у випадку негативного знака робимо порівняння з уставкою «-75 МА». Значення струму ЕГП зберігається в інформаційному масиві «DUOTC» за адресою «DOUTC+2».

3. У випадку перевищення струмом значення уставки, виробляється перевірка чим викликана поява струму ЕГП. Перевірка виробляється зчитуванням з інформаційних масивів кодів, що сигналізують про спрацювання команд РФ, ДИФ, РТА3. Коди для релейного форсування і диференціатора зберігаються в інформаційному масиві «IC», по адресах «IC+84» для «РФ» і «IC+12» для «ДИФ» відповідно. Код для команди «РТА3» зберігається у інформаційному масиві «SEC» за адресою «SEC+12». Ознакою спрацьовування каналу є код «0FFH», у противному випадку в комірці буде знаходитися код «00H».

Перевірка виробляється в наступному порядку:

а) перевіряється спрацювання каналу «релейної форсировки»;

б) перевіряється поява режиму «РОТА3»;

в) перевіряється спрацьовування каналу «диференціатора».

4. Якщо спрацював, який-небудь з каналів, то виробляється запис у масив найважливіших параметрів турбіни, таких як потужність турбіни, частота обертання, тиск свіжої пари в головному паровому колекторі і т.д. При цьому також визначається величина неузгодженості (розбіжності) між струмом ЕГП і контрольним струмом ЕГП. У випадку розбіжності вище визначеного значення, відключається канал ЕГП (якщо машина ведуча).

5. Якщо поява струму ЕГП не викликана спрацьовуванням РФ, ДИФ, РТА3, то відключається канал ЕГП записом в інформаційний масив «IC» коду «0FFH» за адресою «IC+132».

Програма написана мовою асемблера, тому що дана мова програмування дозволяє генерувати високоефективний код при мінімальному його розмірі.

5.2 Лістінг програми контролю струму ЕГП

На основі вище приведеного алгоритму розроблена блок-схема самої програми (рис. 5.2).

Рисунок 5.2 Блок-схема програми контролю струму ЕГП

Лістінг програми контролю струму ЕГП приведений в таблиці 5.1

Таблиця 5.1 Лістінг програми контролю струму ЕГП

Мітка Оператор Операнд Коментар
CONTMP: LDA DOUTC+3 Зчитуємо знак струму ЕГП
RAL Перевіряємо чи позитивний знак струму ЕГП
LC M1 Якщо негативний, то переходимо до порівняння струму з уставкою «-50 МА»
LHLD DOUTC+2 Завантажуємо в реєстрову пару «HL» значення контрольного струму ЕГП
LXI D, 20H Завантажуємо в реєстрову пару «HL» значення уставки рівне «+50 МА»
CALL RAZN2F Порівнюємо значення контрольного струму з уставкою, викликом підпрограми порівняння
JNC M2 Якщо значення струму більше уставки, то переходимо до аналізу причини появи струму
JMP M3 Інакше переходимо до підпрограми підготовки масиву для запису параметрів
M1: LHLD DOUTC+2 Завантажуємо в реєстрову пару «HL» значення контрольного струму ЕГП
LXI D, 0FFE0H Завантажуємо в реєстрову пару «HL» значення уставки рівне «-50 МА»
CALL RAZN2F Порівнюємо значення контрольного струму з уставкою, викликом підпрограми порівняння
JC M2 Якщо значення струму більше уставки, то переходимо до аналізу причини появи струму
JMP M3 Інакше переходимо до підпрограми підготовки масиву для запису параметрів
M2; LDA IC+84 Перевірка роботи каналу РФ
CPI 0FFH
JZ 01F5AH Якщо РФ, то переходимо до підпрограми запису параметрів в масив
LDA SEC+12 Перевірка роботи каналу РТА3
CPI 0FFH
JZ 01F5AH Якщо РТА3, то переходимо до підпрограми запису параметрів в масив
LD IC+12 Перевірка роботи каналу ДИФ
CPI 0FFH
JZ 01F5AH Якщо ДИФ, то переходимо до підпрограми запису параметрів в масив
JMP 01F4DH Інакше переходимо до підпрограми відключення каналу ЕГП
M4: LDA FLAGMP Завантажуємо в регістр «А» лічильник циклу запису параметрів в масив
CPI 05H Перевіряємо, чи досяг лічильник значення «5»
JC M5 Якщо досяг, то переходимо до підготовки масиву для запису параметрів
LHLD ADRTEK Запам'ятовуємо в пам'яті адрес масиву параметрів
LDA DAN02+0 Зчитуємо значення потужності турбіни з масиву «DAN02»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DAN02+1 Зчитуємо значення потужності турбіни з масиву «DAN02»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DANOUT+4 Зчитуємо значення частоти турбіни з масиву «DANOUT»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DANOUT+5 Зчитуємо значення частоти турбіни з масиву «DANOUT»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DAN01+0 Зчитуємо значення тиску свіжої пари в ЦПК із масиву «DAN01»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DAN01+1 Зчитуємо значення тиску свіжої пари в ЦПК із масиву «DAN01»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DAN01+36 Зчитуємо значення тиску керуючого масла з масиву «DAN01»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DAN01+37 Зчитуємо значення тиску керуючого масла з масиву «DAN01»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DOUTC+2 Зчитуємо значення струму ЕГП з масиву «DOUTC»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DOUTC+3 Зчитуємо значення струму ЕГП з масиву «DOUTC»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DAN02+2 Зчитуємо значення контрольного струму ЕГП з масиву «DAN02»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
LDA DAN02+3 Зчитуємо значення контрольного струму ЕГП з масиву «DAN02»
MOV M, A Заносимо в «наш» масив
INX H Збільшуємо адресу масиву на одиницю
INX H Збільшуємо адресу масиву на одиницю
INX H Збільшуємо адресу масиву на одиницю
LDA IC+84 Зчитуємо з масиву «IC» ознаку спрацювання релейної форсировки
ANI 01 Виділяємо нульовий біт шляхом логічного множення
MOV B, A Зберігаємо число в регістрі «B»
LDA SEC+12 Зчитуємо з масиву «SEC» ознаку спрацювання РТА3
ANI 02 Виділяємо перший біт шляхом логічного множення
ORA B Логічно сумуємо з регістром B
MOV B, A Зберігаємо число в регістрі «B»
LDA DIN+13 Зчитуємо з масиву «DIN» ознаку спрацювання диференціатора
ANI 04 Виділяємо другий біт шляхом логічного множення
ORA B Логічно сумуємо з регістром B
MOV M, A Записуємо в масив зборку дискретних команд (РФ, РТА3, ДИФ)
INX H Збільшуємо адресу масиву на одиницю
INX H Збільшуємо адресу масиву на одиницю
SHLD ADRTEK Запам'ятовуємо поточний адрес (індекс) масиву в комірці пам'яті
XRA A Обнуляємо лічильник числа циклів запису параметрів в масив
STA FLAGMP Зберігаємо його в комірці пам'яті
JMP M6 Переходимо до визначення ведучої ЕОМ і обчислення неузгодженості між контрольним струмом і струмом ЕГП
M5: LXI H, FLAGMP Заносимо в реєстрову пару «HL» адрес лічильника числа повторень циклу запису параметрів у масив
INR M Збільшуємо значення лічильника по цій адресі
LHLD ADRTEK Зчитуємо поточний адрес індексування масиву параметрів
LXI D, 0AC00H Заносимо в реєстрову пару «DE» адресу закінчення масиву параметрів
CALL RAZN2F Перевіряємо, чи досягнутий індекс кінця масиву
JC M6 Якщо так, то переходимо до обчислення значення неузгодженості, інакше
XRA A обнуляємо лічильник числа повторень циклу запису параметрів у масив
STA FLAGMP запам'ятовуємо його в комірці пам'яті
JMP M6 і переходимо до обчислення значення неузгодженості
M3: MVI A, 5 Заносимо число в лічильник числа повторень циклу запису параметрів
STA FLAGMP Запам'ятовуємо його в пам'яті
LXI H, 0A800H Заносимо в реєстрову пару «HL» адресу початку масиву параметрів
JMP 01F68H Переходимо до запису параметрів
M6: IN 0B8H Перевіряємо чи є дана ЕОМ ведучою (основною)
RAR Якщо резервна,
RNC то виходимо в основну програму, інакше переходимо до обчислення значення неузгодженості
LHLD DOUTC+2 Завантажуємо в реєстрову пару «HL» значення струму ЕГП
XCHG Змінюємо місцями вміст регістрів «HL» і «DE»
LHLD DAN02+2 Завантажуємо в реєстрову пару «HL» значення контрольного струму ЕГП
DAD H Обчислюємо
DAD H величину
DAD D неузгодженості
MOV A, H Перевіряємо
RAL «характер» неузгодженості
JNC M7 Якщо неузгодженість позитивна, то безпосередньо переходимо до порівняння величини неузгодженості, інакше
CALL INVERC приводимо значення неузгодженості до позитивного числа, перетворенням коду в додатковий за допомогою виклику підпрограми перетворення в додатковий код
M7: MOV A, H Перевіряємо чи неузгоджені між собою значення струму ЕГП і контрольного струму ЕГП
CPI 00 Якщо так,
JNZ M8 то викликаємо підпрограму відключення каналу ЕГП
MOV A, L Якщо ні,
CPI 40H то
JC M10 переходимо до підпрограми обнулення лічильника числа входжень у програму
M8: LDA FLAG+20 Завантажуємо в регістр «А» лічильник числа входжень у програму
CPI 6 Якщо число входжень у програму менше ніж «6», то
JC M9 переходимо до підпрограми збільшення лічильника числа входжень у програму на «1»
MVI A, 0FFH Заносимо в регістр «А» код відключення каналу ЕГП
STA IC+132 Записуємо в масив код для відключення каналу ЕГП
RET Повертаємося в основну програму
M9: INR A Збільшуємо на одиницю лічильник числа входжень в програму
STA FLAG+20H Запам'ятовуємо лічильник у масиві
RET Повертаємося в основну програму
M10: XRA A Обнуляємо лічильник числа входжень в програму
STA FLAG+20H Запам'ятовуємо лічильник у масиві
RET Повертаємося в основну програму
PUBLIC CONTP Кінець
END основної програми
NAME RAZN2F Підпрограма вирахування двобайтних чисел і їхнє порівняння з виробленням ознак.Входи: HL – зменшуване;DE – від'ємник.Виходи: HL – різниця (HL – DE);PSW – ознаки (HL=DE Z=1)(HL>DE Carry=0)(HL<DE Carry=1)
CSEG
RAZN2F: MOV A, D Заносимо в регістр «А» старший байт «зменшуваного»
CMA Обчислюємо «зворотній код»
MOV D, A Повертаємо в регістр «D» старший байт від'ємника в «зворотному коді»
MOV A, E Заносимо в регістр «А» молодший байт «зменшуваного»
CMA Обчислюємо «зворотній код»
MOV E, A Повертаємо в регістр «E» молодший байт «віднімається» у «зворотному коді»
INX D Збільшуємо «від'ємник» на «1», одержуючи в такий спосіб «додатковий код» від'ємника
DAD D Підсумовуємо «зменшуване» з «відємником» в «додатковому коді», що рівносильно їх відніманню у прямому коді.Результат віднімання в регістрі «HL»
MOV A, H Заносимо в регістр «А» старший байт результату і логічно підсумовуємо
ORA L з молодшим байтом результату.Якщо результат був «0» (два числа рівні), то прапор «Z» (прапор «нуля») встановиться в «1»
MOV A, H Заносимо в регістр «А» старший байт результату
RAL і зсуваємо на один розряд уліво.Якщо «зменшуване» було більше від'ємника, то прапор «Carry» (прапор «переносу») встановиться в «0», інакше встановиться в «1»
RET Повертаємося в точку виклику підпрограми
PUBLIC RAZN2F Кінець
END підпрограми
NAME INVERC Підпрограма представлення двобайтного числа в додатковому кодіВходи: HL – число;Виходи: HL – число в додатковому коді
CSEG
RAZN2F: MOV A, H Заносимо в регістр «А» старший байт числа
CMA Обчислюємо «зворотній код»
MOV H, A Повертаємо в регістр «H» старший байт числа в «зворотному коді»
MOV A, L Заносимо в регістр «А» молодший байт числа
CMA Обчислюємо «зворотній код»
MOV L, A Повертаємо в регістр «L» молодший байт числа в «зворотному коді»
INX H Збільшуємо число в «зворотному коді» на «1», одержуючи в такий спосіб «додатковий код» від'ємника
RET Повертаємося в точку виклику підпрограми
PUBLIC INVERC Кінець
END Підпрограми

6. Економічне обґрунтування розробки

Відповідно до правил технічної експлуатації електричних станцій і мереж одним з основних техніко-економічних показників електричної станції є кількість виробленої електроенергії і відпущеного тепла.