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

Система автоматичного регулювання (САР) турбіни атомної електростанції
199387
знаков
21
таблица
11
изображений

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. Економічне обґрунтування розробки

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

Кількість виробленої електроенергії прямо залежить від електричної потужності турбіни. ЕЧСР, будучи регулятором турбіни регулює рівень електричної потужності, з чого випливає що від стабільної роботи ЕЧСР залежить кількість виробленої електричної енергії. При порушеннях умов нормальної експлуатації ЕЧСР (приведені вище), на виході каналу ЕГП може з'явитися несанкціонований струм, що не підтверджується вхідними умовами (релейне форсування, диференціатор і т.д.). З появою струму ЕГП можуть закритися регулюючі клапана. Закриття регулювальних клапанів приведе до підвищення тиску свіжої пари в головному паровому колекторі і автоматична система регулювання потужності реактора знизить його потужність до рівня, при якому нормалізується тиск свіжої пари в головному паровому колекторі. Зниження потужності реактора прямо пропорційне ступеню закриття регулювальних клапанів і отже струму ЕГП.

Максимальне значення несанкціонованого струму ЕГП дорівнює 75 мА. Цього досить для того, щоб знизити потужність турбіни, і отже реакторної установки, на 30% (700 мВт). Тому темою даного дипломного проекту є розробка програмного субмодуля, що повинен беззупинно контролювати струм ЕГП і аналізувати чи існують умови, необхідні для появи даного струму. З появою несанкціонованого струму ЕГП (тобто струму, що не викликаний умовами, що вимагають його появи), канал ЕГП повинен відключатися.

Розрахуємо економічний ефект від упровадження даної розробки. За умовами на обмеження швидкості набору потужності реакторною установкою, при рівні потужності вище 40% від номінальної, швидкість набору потужності складає 0.3% Nном / хв (3 мВт/хв) від номінальної.

Розрахуємо час, який необхідно для того, щоб реакторна установка вийшла з рівня потужності 700 мВт на номінальний рівень потужності – 1000 мВт.

 хвилини, 33 секунди = 14013 сек.

При роботі на номінальній потужності, за час рівний T, енергоблок виробить кількість електроенергії, рівне:

При послідовному наборі потужності з рівня 700 мВт до 1000 мВт, енергоблок виробить кількість електроенергії, рівне:

Втрати електричної енергії (недовиробіток електричної енергії) складуть:

Розрахуємо збитки, що понесе АЕС при недовиробітку електричної енергії:

,

де N – кількість недовиробленої електричної енергії, кВт*год;

Р – відпускна ціна електроенергії, коп/кВт*год;

S – собівартість електричної енергії, коп/кВт*год.

Отже, впровадження даної розробки дозволяє уникнути розвантаження блоку, при якому відбуваються економічні втрати, які складають 28259 гривень та забезпечується ядерна безпека блоку, що для АЕС є першочерговим завданням порівняно з його економічною ефективністю.



Информация о работе «Система автоматичного регулювання (САР) турбіни атомної електростанції»
Раздел: Физика
Количество знаков с пробелами: 199387
Количество таблиц: 21
Количество изображений: 11

Похожие работы

Скачать
138261
0
0

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

0 комментариев


Наверх