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 | Підпрограми |
Відповідно до правил технічної експлуатації електричних станцій і мереж одним з основних техніко-економічних показників електричної станції є кількість виробленої електроенергії і відпущеного тепла.
Кількість виробленої електроенергії прямо залежить від електричної потужності турбіни. ЕЧСР, будучи регулятором турбіни регулює рівень електричної потужності, з чого випливає що від стабільної роботи ЕЧСР залежить кількість виробленої електричної енергії. При порушеннях умов нормальної експлуатації ЕЧСР (приведені вище), на виході каналу ЕГП може з'явитися несанкціонований струм, що не підтверджується вхідними умовами (релейне форсування, диференціатор і т.д.). З появою струму ЕГП можуть закритися регулюючі клапана. Закриття регулювальних клапанів приведе до підвищення тиску свіжої пари в головному паровому колекторі і автоматична система регулювання потужності реактора знизить його потужність до рівня, при якому нормалізується тиск свіжої пари в головному паровому колекторі. Зниження потужності реактора прямо пропорційне ступеню закриття регулювальних клапанів і отже струму ЕГП.
Максимальне значення несанкціонованого струму ЕГП дорівнює 75 мА. Цього досить для того, щоб знизити потужність турбіни, і отже реакторної установки, на 30% (700 мВт). Тому темою даного дипломного проекту є розробка програмного субмодуля, що повинен беззупинно контролювати струм ЕГП і аналізувати чи існують умови, необхідні для появи даного струму. З появою несанкціонованого струму ЕГП (тобто струму, що не викликаний умовами, що вимагають його появи), канал ЕГП повинен відключатися.
Розрахуємо економічний ефект від упровадження даної розробки. За умовами на обмеження швидкості набору потужності реакторною установкою, при рівні потужності вище 40% від номінальної, швидкість набору потужності складає 0.3% Nном / хв (3 мВт/хв) від номінальної.
Розрахуємо час, який необхідно для того, щоб реакторна установка вийшла з рівня потужності 700 мВт на номінальний рівень потужності – 1000 мВт.
хвилини, 33 секунди = 14013 сек.
При роботі на номінальній потужності, за час рівний T, енергоблок виробить кількість електроенергії, рівне:
При послідовному наборі потужності з рівня 700 мВт до 1000 мВт, енергоблок виробить кількість електроенергії, рівне:
Втрати електричної енергії (недовиробіток електричної енергії) складуть:
Розрахуємо збитки, що понесе АЕС при недовиробітку електричної енергії:
,
де N – кількість недовиробленої електричної енергії, кВт*год;
Р – відпускна ціна електроенергії, коп/кВт*год;
S – собівартість електричної енергії, коп/кВт*год.
Отже, впровадження даної розробки дозволяє уникнути розвантаження блоку, при якому відбуваються економічні втрати, які складають 28259 гривень та забезпечується ядерна безпека блоку, що для АЕС є першочерговим завданням порівняно з його економічною ефективністю.
... ї зброї і чи не будуть вони втягнені у масштабний конфлікт внаслідок цього. Висновок В результаті проведеного дослідження було проаналізовано роль Ліги арабських держав у врегулюванні регіональних та локальних конфліктів. ЛАД вже 65 років функціонує як головний міжарабський форум і одна з центральних регіональних організацій. За цей час вона брала участь у врегулюванні конфліктів різного ...
0 комментариев