Розрахунок і аналіз втрат активної потужності

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Введення

Завданням дипломного проекту було вивчення оцінки стану ЕЕС і концепцій побудови математичного забезпечення інформаційно-обчислювальних підсистем, знайомство з КП Компонувальник розрахункових схем, освоєння Windows програмування, придбання навичок роботи в інтегрованому середовищі Developer Studio і розробка деяких елементів призначеного для користувача інтерфейсу компонувальника розрахункових схем в операційній системі Windows .

У першому розділі була обрана математична модель режиму, розглянуті кілька критеріїв оцінки стану ЕЕС. Обгрунтовано вибір методу узагальненої нормальної оцінки для оцінювання стану ЕЕС, як володіє істотними перевагами в порівнянні з іншими критеріями. В якості чисельного методу прийнятий в загальному випадку метод Ньютона-Рафсона. Поряд з цим методом, за наявності деяких умов доцільно застосовувати метод Ньютона-Рафсона по параметру. Для розв'язання систем лінійних рівнянь за ітераційним формулами використовується метод Гаусса (LU розкладання). Обчислення проводяться з урахуванням властивостей розріджених матриць. Показано рознесення обчислень поза реального часу (на підготовчому етапі) і безпосередньо в реальному часі.

У другому розділі розглядається призначення і функціональні можливості програми Компонувальник розрахункових схем. Наведено алгоритм формування розрахункової схеми, що задовольняє вимоги, що пред'являються до систем підготовки, налагодження та підтримки даних.

У третьому розділі описуються основні особливості Windows програмування: процес створення головного вікна програми, процедури обробки повідомлень. Показуються відмінності модальних та немодальний вікон діалогу. Наводиться опис панелей інструментів і стану. Детально показаний процес створення і роботи строкового і віконного редакторів, реалізація функцій, що надаються користувачеві.

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

1. Оцінка стану

1.1 Постановка завдання

Інваріантність поведінки автоматизованої системи диспетчерського управління (АСДУ) щодо зовнішніх збурень, а, значить, обгрунтованість прийнятих рішень та ефективність управлінням режимом енергосистеми в реальному часі може бути забезпечена в принципі, якщо використовується достовірна інформація про параметри режиму і схемою електричних з'єднань, про склад і стан основного обладнання, про параметри та характеристики окремих об'єктів, і т.д. Найбільш важливим і важким виявляється отримання інформації про поточні параметри режиму і схемою електричних з'єднань, що вимагає проведення вимірювань у реальному часі. Безпосереднє вимірювання всіх параметрів режиму неможливо, відсутня частина повинна бути відновлена ​​розрахунковим шляхом. Низька вірогідність телеізмеряемой інформації, можливі відмови каналів зв'язку, обмежені можливості інформаційно-вимірювальної мережі ускладнюють безпосереднє відтворення фізики явищ. Підвищити достовірність телевимірювань (ТІ), відновити розрахунковим шляхом відсутню частину параметрів режиму, відтворити фізику явищ дозволяють методи теорії оцінок, які діляться на дві групи: методи, що враховують апріорну інформацію про оцінюваних параметрах режиму; методи, що не враховують таку інформацію.

Сталий режим електроенергетичної системи (ЕЕС) описується системою нелінійних алгебраїчних рівнянь

(1.1)

де x, у - відповідно оцінювані та вимірювані параметри режиму.

Форма запису (1.1) залежить від обраної схеми заміщення окремих елементів і системи координат, поділу параметрів режиму на вимірювані і оцінювані; конкретний склад системи - складом використовуваних ТІ. Поділ параметрів режиму на оцінювані та вимірювані проводиться за змістом розв'язуваної задачі; керуватися слід лише двома вимогами: як оцінюваних приймаються ті, знаючи які, легко розрахувати всі інші параметри режиму без рішення додаткової системи рівнянь; в кінцевому рахунку необхідно отримати параметри режиму, які будуть використані надалі при оптимізації. З технічних міркувань, а також для потреб диспетчерського персоналу, вимірюються потоки потужностей по гілках і вузлах, напруги, струми в гілках. Це і визначає вибір оцінюваних параметрів режиму - модулі і фази або дійсні та уявні частини вузлових напруг.

Зв'язок між оцінюваними і вимірюваними параметрами режиму

y = f (x) (1.2)

встановлюється рівняннями потокорозподілу, конкретний вид яких визначається обраною формою запису, зокрема:

à для сумарної активної та реактивної потужності в i-му вузлі

(1.3)

à для потоків потужностей на початку гілки (i, j)

(1.4)

де: n - число незалежних вузлів; - Вузлові напруги ( ); - Провідність гілки (i, j) ( ); - Провідність на землю у вузлі i ( ).

Після введення матричних позначень:

,

ми і отримуємо (1.2).

У вимірах, що проводяться в реальному ЕЕС, завжди присутні похибки, обумовлені похибками вимірювальної апаратури, перешкодами в каналах зв'язку, неодночасно вимірів, тому вектор вимірів може бути представлений сумою вектора дійсних значень у і вектора помилок w

у + w (1.5)

Якщо припустити, що випадковий вектор помилок розподілений за нормальним законом

(1.6)

де R - коваріаційна матриця помилок вимірювань; m - число вимірювань, то найбільш правдоподібними вважаються ті значення w, при яких досягається максимум щільності розподілу (використовується метод максимальної правдоподібності, заснований на максимізації функції (1.6), званою функцією правдоподібності. Ця показова функція досягає свого максимуму, коли її показник мінімальний [1]).

У загальному випадку в якості міри близькості виміряних параметрів режиму і їх розрахункових значень f (x) може бути обраний критерій

(1.7)

Задача оцінки стану ЕЕС зводиться до знаходження такого вектора оцінюваних параметрів режиму, який доставляє значення вимірюваним, близькі до виміряних в сенсі обраного критерію (1.7)

Оцінка стану ЕЕС - складний процес, в якому можна виділити ряд основних етапів:

  1. Вибір математичної моделі режиму.

  2. Побудова критерію оцінки.

  3. Розробка чисельного методу та алгоритму оцінювання.

Розподіл носить умовний характер, всі етапи взаємопов'язані: властивості математичної моделі режиму є визначальними при побудові критерію оцінювання, алгоритм оцінювання повинен враховувати як властивості обраного критерію близькості, так і математичної моделі режиму. У кінцевому рахунку, алгоритм оцінювання повинен відповідати таким вимогам: висока швидкість і надійність збіжності, висока точність і стійкість результатів, високу швидкодію, незначний обсяг необхідної оперативної пам'яті ЕОМ.

Розглянемо докладніше кожен з етапів.

1.2 Математична модель режиму

Якщо на початку кожної гілки дерева вимірюється потік активної та реактивної потужності, то відповідна математична модель режиму має єдине рішення в цілому. Будь-яка модель режиму, отримана із зазначеної додаванням нових вимірюваних параметрів режиму, також має єдине рішення [1].

Модель режиму називається коректної, якщо [1]:

  1. для будь-якого y існує рішення (умова розв'язності);

  2. рішення є єдиним (умова однозначності);

  3. рішення безперервно залежить від у (умова стійкості).

При порушенні хоча б одного з цих умов завдання оцінки стану називається некоректно поставленої (математична модель називається некоректно поставленої).

1.3 Критерій оцінки

На вибір критерію оцінки впливають: характер досліджуваного процесу (статичний або динамічний), наявність або відсутність статистичних даних про вимірюваних і оцінюваних параметрах, коректна або некоректна постановка задачі. Визначальною є некоректна постановка задачі оцінювання стану ЕЕС. Вона проявляється в тому, що як завгодно малі похибки вимірювань призводять до як завгодно більших помилок в результатах оцінки. Метод максимальної правдоподібності дає один з найбільш поширених критеріїв.

(1.8)

причому оцінка стану ЕС зводиться до знаходження

(1.9)

Метод, заснований на (1.9) (метод зважених найменших квадратів), дозволяє отримати таку оцінку, яка доставляє значення вимірюється параметрами режиму, близькі до виміряних в сенсі мінімуму дисперсії вимірювань.

Якщо матриця коваріації помилок вимірювань R невідома або її отримання утруднено, замість (1.8) використовується

(1.10)

і оцінка знаходиться з умови досягнення

(1.11)

Метод, заснований на (1.11) (метод найменших квадратів), дозволяє отримати таку оцінку , Яка доставляє значення вимірюється параметрами режиму, близькі до виміряних в сенсі мінімуму суми квадратів нев'язок.

Якщо система нелінійних алгебраїчних рівнянь сумісна, то рішення (1.9.) Та (1.11) збігаються. Для перевизначення і несумісних нелінійних алгебраїчних рівнянь рішення (1.9) і (1.11), взагалі кажучи, не збігаються: рішення (1.9) залежить від вибору матриці ковариаций.

Некоректність математичної моделі режиму відображається на властивостях цих критеріїв, характер рішення задачі оцінювання:

  1. порушено вимогу однозначності - критерій оцінки є багатоекстремального функцією; кожне рішення моделі режиму - це точка екстремуму критерію оцінки;

  2. порушено вимогу розв'язності - виконується необхідна умова існування мінімуму, ранг матриці приватних похідних знижується;

  3. порушено вимогу безперервності або критерій оцінки не має мінімуму в області визначення (в цілому), або виконується необхідна умова існування мінімуму, ранг матриці приватних похідних знижується.

Використання розглянутих методів з урахуванням некоректності постановки задачі оцінювання стану ЕЕС стає проблематичним.

Наявність апріорних даних про оцінюваних параметрах і матриці коваріації помилок завдання апріорних даних S дозволяє використовувати критерій

(1.12)

і отримати оцінку з умови досягнення

(1.13)

Метод, який реалізує (1.13) (байєсового оцінка), у ряді випадків дозволяє локалізувати потрібне рішення за рахунок використання апріорних даних.

Кожен з розглянутих методів має свої недоліки і достоїнства. Загальним недоліком є неможливість використання для оцінки стану ЕЕС з урахуванням її некоректною постановки.

Для рішення некоректно поставлених завдань був запропонований метод регуляризації

a> 0,

де - Згладжуюча або регулярізующая функція; - Стабілізуюча функція; - Параметр регуляризації.

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

Проведені дослідження [1] показали:

  1. якщо рішення математичної моделі режиму є неоднозначним, то локалізувати потрібну (дійсне) не завжди вдається;

  2. можливі випадки, коли ітераційний процес вирішення (1.8) затягується - у стабілізуючу функцію входять несумірні за величиною параметри режиму, і прагнення обмежити рішення призводить до надмірного згладжування;

  3. доцільність завдання апріорі параметра регуляризації.

Недоліки методу регуляризації можуть бути усунені після відповідної його модифікації.

1.4 Узагальнена нормальна оцінка

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

До оцінки стану ЕЕС можна підійти з позицій розв'язання системи нелінійних алгебраїчних рівнянь

(1.14)

де: m - кількість вимірюваних параметрів режиму; n +1 - загальна кількість вузлів ЕЕС.

Якщо відомі точні значення вимірюваних параметрів режиму у, то рішення x математичної моделі режиму (1.14) існує; воно може бути єдиним або неєдиним (в останньому випадку потрібне рішення локалізується після узгодження області визначення і області значень) [2].

Якщо відомі наближені значення правих частин (1.14)

(1.15)

де w - вектор випадкових величин з математичним очікуванням М [w] = 0, то для даної математичної моделі режиму в межах заданого рівня похибки вимірів існує цілий клас режимів, для кожного з яких рішення

(1.16)

може існувати (бути єдиним або неєдиним) або не існувати, а скільки завгодно малі зміни параметрів, що вимірюються можуть приводити до як завгодно великих змін рішення [2]. По суті f відображає безліч різних рішень в просторі оцінюваних параметрів у нерозрізнене безліч вимірювань у просторі спостережень.

Для некоректною моделі режиму потрібно уточнити поняття «рішення». Серед безлічі рішень (1.15) природно вибрати найбільш близьке до апріорних даними і одночасно доставляє вимірюється параметрами режиму значення, близькі до виміряних . Якщо вибрати в якості міри близькості евклидову довжину вектора, то цим вимогам відповідає рішення, що доставляє мінімум

, . (1.17)

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

Рішення, що доставляє мінімум (1.17), називається узагальненим нормальним рішенням, а метод, який реалізує цей критерій, - методом узагальненої нормальної оцінки (МОНО).

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

де: - Дисперсія вимірювань; - Дисперсія завдання апріорних даних.

При такому виборі параметра регуляризації МОНО дає неухудшающуюся, стійку до похибки вимірювань і до змін параметра регуляризації оцінку, а верхня норма матриці коваріації помилок оцінки виявляється мінімальною.

В якості апріорної інформації, використовуваної при оцінці стану реальної ЕЕС, можна використовувати:

1) результати попередньої оцінки;

  1. виміряні значення напруг (їх номінальні значення); обмеженість фаз вузлових напруг (d ® 0).

Другий випадок менш сприятливий. Частина апріорних даних (наприклад, виміряні напруги) належить області визначення, інша частина (наприклад, фази вузлових напруг) може і не належати до них. Достовірність таких даних різна, отримана оцінка параметра регуляризації знаходиться в широкому діапазоні (10 ¸ 10 5) [2]. Доцільно для кожної групи апріорних даних ввести свої вагові коефіцієнти:

а) CU 1 - для вимірюваних напруг;

б) CU 2 - для номінальних напруг (якщо вимірів не проводилося);

в) З d - для фаз вузлових напруг.

Тоді критерій оцінки перепишеться у вигляді

,

де: - Діагональна матриця з вищевказаними ваговими коефіцієнтами, - Апріорні дані (для фаз вузлових напруг це значення на к-ий ітерації).

Для реальних ЕЕС: CU 1 = 10 -2, CU 2 = 10 -4, C d = 1, і діапазон зміни параметра регуляризації звужується: 10 3 < <10 5 [2]

1.5 Чисельні методи рішення

Беручи до уваги все вище сказане, в кінцевому рахунку задача оцінювання стану ЕЕС зводиться до вирішення екстремальної задачі

(1.18)

по ітераційної формулою

, (1.19)

де: k - номер ітерації; - Напрямок просування на (до +1) - ой ітерації з точки х к; - Коефіцієнт, що визначає довжину кроку в напрямку ; - Приріст на к-ий ітерації; початкове наближення задається.

У результаті рішення (1.19) буде отримана послідовність з певними властивостями.

Для вибраної моделі режиму і побудованого критерію оцінки ефективність алгоритму оцінки стану ЕЕС визначається властивостями чисельного методу розв'язання (1.19) і характеризується такими критеріями, як: швидкість і надійність збіжності, точність рішення, час рахунку, складність алгоритму, необхідний обсяг оперативної пам'яті ЕОМ і т. д.

Чисельні методи рішення (1.19) використовують ту або іншу апроксимацію або цільової функції

(1.20)

або вектор-функції f (x). Найбільшого поширення набув метод Ньютона-Рафсона, в якому використовується розкладання в ряд Тейлора нелінійної вектор-функції f (x) в околі довільної точки х до до членів першого порядку малості включно

f (x) = f (x k) + f x (X k) (x - x k). (1.21)

Підстановка (1.21) в (1.20) дає:

З необхідної умови мінімуму слід:

,

тоді приріст на к-ий ітерації знаходиться

,

де нижній індекс вказує, за яким вектор-аргументу здійснюється диференціювання; x - x k = D x k; x, x k - досить близькі точки.

Ітераційний процес (1.19) продовжується до досягнення заданої точності розрахунків e:

½ D x k ½ £ e.

Для зменшення часу рахунки перевірку можна проводити тільки для модулів вузлових напруг.

Наявність стабілізуючої функції дозволяє отримати рішення незалежно від початкового наближення, ітераційний процес сходиться за два-чотири ітерації, а число ітерацій в основному визначається якістю ТИ і «вагою» режиму [2].

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

Нехай на к-му кроці методом Ньютона-Рафсона отримана оцінка х К і прирощення D х К. Величина кроку в напрямку D х К може бути обрана з умови досягнення мінімуму суми квадратів небалансів потужностей, тобто

Прирівнявши до нуля і висловивши з цієї рівності , Отримаємо

.

Ітераційний процес, реалізований за формулою

, (1.22)

продовжується до тих пір, поки не буде порушено умову

,

де характеризує швидкість зменшення суми квадратів небалансів потужностей (звичайно приймається рівної 0.99).

Метод Ньютона-Рафсона по параметру доцільно використовувати у двох випадках:

а) коли є точні значення вимірюваних параметрів режиму у;

б) коли виникають труднощі з оцінкою числового значення .

Враховуючи перераховані вище переваги методу узагальненої нормальної оцінки, природно буде використовувати його в подальшому для оцінки стану ЕЕС.

1.6 Обчислювальні аспекти

Специфічні особливості ЕЕС і МОНО відіграють вирішальну роль у раціональній організації обчислювального процесу.

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

(1.23)

містять незначну кількість ненульових елементів, тобто є розрідженими: значного скорочення часу рахунки та суттєвої економії використовуваного об'єму оперативної пам'яті ЕОМ можна домогтися, якщо зберігати ненульові елементи і оперувати з ними.

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

Для розв'язання систем лінійних алгебраїчних рівнянь виду (1.23)

(1.24)

( , )

використовується метод Гауса або його модифікації. У методі Гаусса система рівнянь (1.24) вирішується в два ходи - прямий і зворотний. При прямому ході матриця коефіцієнтів приводиться до верхньої трикутної формі. Для цього до системи (1.24) з t невідомими застосовується (t -1) - кроковий процес виключення невідомих. У результаті на (t -1) - му кроці буде отримана трикутна система:

(1.25)

Зворотний хід методу Гаусса полягає в послідовному обчисленні невідомих з (1.25), починаючи з останнього рівняння.

Розглянуті перетворення зручно реалізувати в матричному вигляді. Якщо позначити матрицю коефіцієнтів (1.25)

(1.26)

і ввести матрицю перетворень на r - тому кроці

(1.27)

то

. (1.28)

Операція звернення матриці перетворення (1.27) рівносильна інвертування недіагональні елементів, а твір нижніх трикутних матриць дає таку ж матрицю, тому

(1.29)

де

(1.30)

Вираз (1.29) - т. зв. LU - розкладання матриці А у вигляді твору нижньої трикутної матриці L і верхньої трикутної матриці U.

Заміна z = Uh показує, що h можна отримати, вирішуючи трикутні системи:

Lz = b (1.31)

Uh = z (1.32)

Вираз (1.31) - матрична запис заключній частині прямого ходу методу Гаусса (перерахунку вільних членів), а (1.32) - матрична запис зворотного ходу. Для симетричної матриці

де D - діагональна матриця з елементами

i = 1,2 ...., t,

розкладання

(1.33)

називається - Розкладанням.

Допущення щодо діагональних елементів ( ), Званих головними, істотно. В іншому випадку для забезпечення чисельної стійкості необхідна та чи інша форма вибору головного елемента, тобто перестановки рядків і (або) стовпців. Ці перестановки визначаються в процесі розв'язання системи рівнянь шляхом компромісу між вимогами чисельної стійкості і збереженням розрідженості. Для розріджених матриць загального вигляду не можна встановити порядок виключення невідомих, поки не почалися власне обчислення. Більш того, такий вибір головного елементу може призвести до вкрай небажаного зростання кількості ненульових елементів.

Одне з основних достоїнств МОНО полягає в тому, що гауссовой виняток не вимагає вибору головних елементів для підтримки чисельної стійкості. Це означає, що матрицю коефіцієнтів можна змінити порядок розташування, не піклуючись про чисельної стійкості, причому до початку чисельного рішення: вибирається така послідовність виключення невідомих, яка призводить до появи мінімального числа ненульових елементів. Ще одна важлива особливість такого вибору исключаемой змінної складається в симетричному переупорядоченіі матриці коефіцієнтів - має місце симетрична перестановка рядків і стовпців [1].

Зазначені особливості, притаманні лише МОНО саме в силу самого вибору параметра регуляризації, мають далекосяжні практичні наслідки. Якщо порядок виключення невідомих не залежить від результатів реального процесу обчислень, то найбільш трудомістка частина розрахунків, пов'язана з формуванням структури початкового заповнення матриці коефіцієнтів, її упорядкуванням, резервуванням місця для нових ненульових елементів, що з'являються в процесі реальних обчислень, може і повинна виконуватися поза реального часу на підготовчому етапі. Схема зберігання повинна забезпечувати високу ефективність обчислень у реальному часі, залишаючись при цьому статичною. У реальному часі реалізуються обчислення, пов'язані з формуванням і рішенням системи рівнянь.

Оскільки матриця коефіцієнтів симетрична, досить перераховувати і зберігати тільки її верхню трикутну частину. Якщо для кожного рядка є список стовпців з ненульовими елементами, то він повністю визначає, в яких рядках елементи яких стовпців перераховуються. Для зручності пошуку в цьому списку індекси стовпців бажано розташовувати в порядку зростання. Наприклад, якщо на r му кроці в r ої рядку ненульові елементи знаходяться у стовпцях r, s, q, то перераховуються коефіцієнти в s ї (у стовпцях s і q) і в q ї (у стовпці q) рядках.

У матриці приватних похідних кожному i му вузлу відповідає два колонки 2 i 1, 2 i, а в матриці коефіцієнтів А - блокова матриця другого порядку:

.

Вимірюванню гілки (i, j) відповідають чотири ненульові блокові матриці: A i i, A i j, A j i, A j j (I <j). .

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

Елементи матриці коефіцієнтів зберігаються блоками по рядках. Для кожного блоку ненульових елементів номер стовпця вказується в масиві «індекси стовпців». Розташування першого блоку кожного рядка задається в масиві «покажчик індексів рядків» [1]. Блочне уявлення дає суттєву економію пам'яті як при зберіганні, так і при формуванні системи рівнянь. Насправді кодування розстановки ТІ безпосередньо визначає місце розташування блоків ненульових елементів у схемі зберігання, отже, відпадає необхідність запам'ятовування проміжних результатів (матриці приватних похідних).

Т.ч., всі необхідні передумови для раціональної організації обчислювального процесу гарантуються МОНО. Найбільш трудомістка частина розрахунків повинна виконуватися поза реального часу на підготовчому етапі. До них відносяться:

  1. Формування структури первісного заповнення матриці коефіцієнтів. Вона (структура) однозначно визначається розстановкою ТИ і топологією електричної мережі; формується з урахуванням всіх ТІ для типової схеми електричних з'єднань, в якій всі об'єкти, оснащені пристроями телесигналізації (ТС), вважаються включеними. Поточний стан об'єктів, не оснащених пристроями ТЗ, відбивається у вихідній схемі електричних з'єднань. На підготовчому етапі резервується місце для всіх можливих ненульових елементів. Сформована таким чином структура заповнення і, отже, схема її зберігання може використовуватися при оцінюванні стану ЕЕС в реальному часі з будь-яким складом ТИ і за будь-яких виробляються в мережі комутаціях, що не приводять до появи нових вузлів: відключення частини ТИ і (або) гілок відбивається тільки на числових значеннях елементів матриці.

  2. Упорядкування - визначення послідовності виключення невідомих. Це рівносильно перенумерації вузлів розрахункової схеми. Краще така послідовність виключення невідомих, яка призводить до появи мінімального числа нових ненульових елементів. Найбільш часто використовуються два алгоритми динамічного упорядкування. У першому з них на кожному кроці методу Гауса виключається невідома, відповідний рядок якої містить мінімальне число ненульових елементів (якщо таких невідомих кілька, то вибір довільний), у другому - невідома, виключення якої призводить до появи найменшого числа нових ненульових елементів. Обидва алгоритми дають досить близькі результати, але перший алгоритм динамічного впорядкування краще, тому що простіше, вимагає менших витрат часу і пам'яті.

  1. Імітація виключення Гауса з резервуванням місця під нові ненульові елементи і формування схеми зберігання матриці коефіцієнтів. Структура первісного заповнення (верхня трикутна частина) запам'ятовується блоками по рядках. З урахуванням встановленої послідовності виключення невідомих резервується місце для нових ненульових елементів.

  2. Формування матриці вузлових провідностей. Для прискорення процесу пошуку потрібного елемента ненульові елементи цієї матриці, незважаючи на симетричність, зберігаються повністю. Схема зберігання аналогічна розглянутої раніше.

У реальному часі виконуються обчислення, необхідні власне для оцінювання ЕЕС:

  1. Введення поточних ТІ.

  2. Формування системи рівнянь (1.24).

  3. Рішення системи рівнянь (1.24).

  4. Реалізація одного кроку ітераційного процесу (1.19).

  5. Перевірка критерію закінчення рахунку . Якщо умова не виконується, перейти до п. 2.

  6. Розрахунок потокорозподілу за результатами оцінювання.

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

а) зберігання і обробка лише верхньої трикутної частині матриці коефіцієнтів системи рівнянь (1.24);

б) блочне зберігання ненульових елементів;

в) використання кодування розстановки ТІ, безпосередньо визначальною місце розташування блоків ненульових елементів;

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

д) використання статичної схеми зберігання.

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

1.7 Концепції побудови математичного забезпечення Спурт

Математичне забезпечення (МО) - це сукупність баз даних, програмне забезпечення (ПЗ) та математична модель електричної системи разом з кодуванням розстановки ТІ, ТЗ і схемами зберігання використовуваних розріджених матриць.

Розподіл вихідних даних між підсистемами оперативно-інформаційного керуючого комплексу (ОІУК), їх підготовка та зберігання організуються таким чином, щоб максимально полегшити роботу користувача, найбільш повно використовувати наявну в інформаційно-керуючої підсистемі (ІУП) нормативно-довідкову інформацію і побудувати адаптивну математичну модель режиму в реальному часі, і, крім того, ввести жорстку адресацію результатів розрахунків для відображення їх на дисплеях з використанням форматів. Зв'язок між вихідними даними різних ЕОМ, вихідними даними та даними, відображеними на різні види терміналів, встановлюється за допомогою таблиці відповідності, яка формується на ЕОМ інформаційно-обчислювальної підсистеми (ВПП) на підготовчому етапі. На цьому етапі виконується найбільш трудомістка частина розрахунків, що не вимагає розрахунків у реальному часі: обслуговування баз даних, вибір та перегляд довільної інформації про розстановку ТИ і ТЗ, перевірка правильності підготовки вихідних даних, реалізація принципів оптимального упорядкування, формування розрахункової схеми, визначення місця розташування ненульових елементів та упаковка розріджених матриць [3].

Наявна на ЕОМ ІУП нормативно-довідкова інформація доповнюється кодуванням розстановки ТИ і ТЗ, а на ЕОМ ІВП створюється єдина для МО база даних. Способи задання окремих елементів, подання схем заміщення і схем електричних з'єднань досить гнучкі і універсальні і допускають:

à спрощене і детальне уявлення схеми заміщення;

à спрощене та детальне представлення схем електричних з'єднань;

à будь-які поєднання уявлень схеми заміщення і схеми електричних з'єднань розрахункового вузла;

à фізичне і уявне видалення елементів з бази даних (елемент не враховується при формуванні розрахункової схеми, але зберігається в базі даних);

à установку датчика в довільній точці схеми заміщення до (після) поперечної провідності гілки.

Однозначна відповідність між даними різних ЕОМ забезпечується кодуванням розстановки ТІ, ТЗ і використанням «позиційності». Зазначене відповідність не змінюється (воно може доповнюватися) при введенні нових об'єктів і пристроїв телемеханіки.

Програмна перевірка правильності підготовки вихідних даних (подання чисел, відповідність послідовності чисел певного елемента розрахункової схеми, допустимі відносини та граничні значення параметрів системи і режиму, відповідність класів напруг, зв'язності графа електричної мережі, розстановка ТІ за умовою повноти математичної моделі режиму, відповідність кодування розстановки ТІ , ТЗ і розрахункової схеми, зв'язність вузла розрахункової схеми по вихідним значенням ТЗ, контроль поточних розмірностей масивів тощо) здійснюється автоматично при формуванні еталонної розрахункової схеми [3].

Розстановка ТІ повинна вибиратися з умови існування та єдиності розв'язку математичної моделі режиму ЕЕС. Незважаючи на обмеженість числа ТІ, можливі їх втрати, модель режиму, принаймні, повинна бути повною. З цією метою передбачено використання апріорних даних, даних режимного дня, експлуатаційних вимірів. Зазначені дані можуть вводитися як вручну (оперативно, в реальному часі), так і автоматично (програмно).

База даних розглядається як автономна, локальна, відкрита система, яка допускає поетапне нагромадження і розширення вихідних даних у міру освоєння завдань і підключення нових комплексів програм. МО незалежно від структури та змісту бази даних, оскільки використовуються дві бази даних: основна (форматні запису) і робоча (бесформатние запису). З основної бази даних у робочу копіюється необхідна інформація [3].

Досягнуто розумний компроміс між суперечливими вимогами скорочення часу рахунки і зменшенням використовуваної оперативної пам'яті за рахунок:

à рознесення обчислень як за часом, так і між окремими програмними продуктами;

à використання статичних схем зберігання розріджених матриць;

à тісної ув'язки кодування розстановки ТИ і ТЗ і блокових схем зберігання, застосування єдиної математичної моделі ЕС.

Такий підхід дозволив формувати розрахункову схему ЕС поза реального часу (на підготовчому етапі).

Окремі компоненти ПЗ взаємодіють через єдину модель електричної системи, підлаштовується під зовнішні умови за рахунок:

à корекції кодування розстановки ТИ і ТЗ, поточних значень ТІ, ТЗ і параметрів елементів електричної системи в реальному часі (адаптивний контур);

à оперативної корекції вручну розстановки ТІ. значень ТЗ і параметрів елементів електричної системи;

à ручний (поза реального часу) корекції даних на будь-якому рівні передбаченої ієрархії вихідних даних.

Еталонні розрахункові схеми, що враховують введення нових об'єктів та (або) пристроїв телемеханіки, а також вимагають ручної корекції розстановки ТІ, формуються завчасно.

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

Для моделювання, аналізу та зберігання режимів створена база режимів (до 12 режимів). Передбачена можливість запису довільного режиму, що є результатом рішення однієї з задач, до бази режимів.

Всі розрахунки, включаючи і формування відображаються на дисплеях кадрів, виробляються на ЕОМ ІВП. У ІВП передаються поточні ТИ і ТЗ циклічно або (і) спорадично, інформація про місцезнаходження пристроїв телемеханіки посилається тільки на запит, у зворотному напрямку передаються відображаються на дисплеях кадри [3].

Таким чином, математичне забезпечення ІВП задовольняє жорстким вимогам, характерним для задач реального часу.

Найбільш трудомістка частина розрахунків, що не вимагає обчислень у реальному часі, реалізована в КП Компонувальник розрахункових схем.

2. Комплекс програм компонувальник розрахункових схем

2.1 Призначення комплексу програм. Компонувальник розрахункових схем

Компонувальник розрахункових схем - сервіс-оболонка баз даних математичного забезпечення, призначена для полегшення і прискорення процесу підготовки і налагодження вихідних даних, створення і підтримання основних баз даних, реалізації всіх трудомістких розрахунків, не пов'язаних з обчисленнями в реальному часі, зокрема, формуванні (компоновки ) еталонних розрахункових схем.

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

Компонувальник є базовим комплексом МО спурт, забезпечує взаємне узгодження всіх даних ІУП і ІВП, формує єдину математичну модель електричної системи для всіх розв'язуваних технологічних завдань.

2.2 Алгоритм формування розрахункової схеми

Вихідні дані формуються з різних джерел, якими можуть бути ІУП (розстановка ТІ, ТЗ, значення ТІ, ТС) або, в перспективі, банк даних (параметри системи). Кожен джерело може створюватися і підтримуватися незалежно і самостійно.

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

Можливість незалежного та самостійного створення та підтримки будь-якого рівня встановленої ієрархії вихідних даних (рис. 2.1) вирішує дану проблему: основна база даних повинна містити повний набір вихідних даних, і зміни вносяться в міру введення нових об'єктів енергосистеми і пристроїв телемеханіки; робоча база даних повинна відображати оперативний стан об'єктів енергосистеми, не оснащених пристроями телемеханіки.

Рис. 2.1. Ієрархія вихідних даних

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

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

Рис. 2.2. Структурна схема алгоритму формування розрахункової схеми

  1. Передати з ІУП розстановку ТІ.

  2. Передати з ІУП розстановку ТЗ.

  3. Передати з ІУП поточні значення ТИ і ТЗ або дані з архіву.

  4. Підготувати параметри вузлів за допомогою Редактора.

  5. Транслювати параметри вузлів.

  6. Переглянути Протокол: якщо виявлені помилки, перейти до п. 4, в іншому випадку виконати п. 7.

  7. Підготувати параметри гілок за допомогою Редактора.

  8. Транслювати параметри гілок.

  9. Переглянути Протокол: якщо виявлені помилки, перейти до п. 7; в іншому випадку виконати п. 10.

  10. Відредагувати розстановку ТІ.

  11. Транслювати файл розстановки ТІ основної бази даних.

  12. Переглянути Протокол: якщо виявлені помилки, перейти до п. 10; в іншому випадку виконати п. 13.

  13. Відредагувати розстановку ТЗ.

  14. Транслювати файл розстановки ТЗ основної бази даних.

  15. Переглянути Протокол: якщо виявлені помилки, перейти до п. 13; в іншому випадку виконати п. 16.

  16. Відредагувати значення ТИ і ТЗ (відповідний файл транслюється автоматично).

  17. Підготувати за допомогою отладчика:

  1. керуючу інформацію;

  2. допоміжні масиви.

18. Якщо необхідно, змінити за допомогою отладчика:

  1. параметри вузлів;

  2. параметри гілок;

  3. розстановку ТІ;

  4. розстановку ТЗ.

  1. Сформувати (скомпонувати) розрахункову схему.

  1. Переглянути Протокол: якщо виявлені помилки, то або перейти до п. 4 (якщо необхідно змінити і основну базу даних), або перейти до п. 7 (якщо змінюється лише робоча база даних); в іншому випадку виконати п. 21.

  2. Отримати необхідні вихідні документи.

  3. Завершити роботу.

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

2.3 Основні функції КП Компонувальник розрахункових схем

Головне меню компонувальника розрахункових схем включає:

à копіювання, обмін файлами з ІУП, перегляд файлів (Утиліти);

à підготовку вихідних даних, підтримання та налагодження основної бази даних (Трансляція);

à створення, підтримку та налагодження робочої бази даних (Налагодження);

à формування розрахункових схем і обслуговування бази розрахункових схем (Компонування);

à висновок вихідних документів (Документи).

Детальний опис меню і підменю наводиться нижче.

2.3.1 Утиліти

За допомогою утиліт виконуються допоміжні функції: копіювання, обмін файлами з ІУП, перегляд файлів.

Копіювання. Розрахункова схема з обраним номером копіюється з бази розрахункових схем у робочі файли (стає робочої).

Прийом ТИ і ТЗ з ІУП. Дані можуть бути як архівними, так і поточними. Для архівних даних ТІ (ТЗ передаються тільки для поточного часу) запитується дата і час. Різниця між поточним і вказаним часом не повинна перевищувати 24 години. При успішному обміні на ПЕОМ створюється файл із заданою специфікацією.

Прийом ГТВ з ІУП. Після запиту ІУП пропонується вказати специфікацію файлу. При успішному обміні на ПЕОМ створюється файл із зазначеною специфікацією.

Прийом РТС з ІУП. Після запиту ІУП пропонується вказати специфікацію файлу. При успішному обміні на ПЕОМ створюється файл із зазначеною специфікацією.

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

2.3.2 Трансляція

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

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

У підменю «Трансляція» пропонується спочатку вибрати тип вихідних даних: параметри вузлів, параметри гілок, розстановка ТІ, розстановка ТЗ, значення ТІ, значення ТЗ. Потім вибрати режим роботи: трансляція, Редактор, Протокол (Протокол доступний, якщо його створено).

Параметри вузлів. Параметри вузлів можуть створюватися і підтримуватися за допомогою Редактора незалежно і самостійно.

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

У процесі редагування параметрів вузлів для користувача доступні виклики функцій, що надають такі можливості:

à Допомога.

à Локальна допомогу. Виводиться підказка, що пояснює призначення кожного поля, які параметри вводяться і їх умовні позначення, одиниці вимірювання (якщо це необхідно).

à Виклик Протоколу.

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

à Пошук. Дана функція полегшує і прискорює пошук потрібного параметра.

à Редагування назв вузлів.

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

Параметри гілок. Параметри гілок можуть створюватися і підтримуватися за допомогою Редактора незалежно і самостійно.

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

У процесі редагування параметрів гілок для користувача доступні виклики тих самих функцій, що і при редагуванні параметрів вузлів (див. «Параметри вузлів»).

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

Розстановка ТІ. Файл розстановки ТІ може бути створений за допомогою утиліт, якщо нормативно-довідкова інформація ТІ ІУП доповнена відповідної кодуванням розстановки. Редактор дозволяє створювати і підтримувати цей файл незалежно і самостійно.

Кожному ТІ відводиться кілька полів. Призначення кожного поля пояснюється титрами (наведені умовні позначення).

У процесі редагування розстановки ТІ для користувача доступні виклики тих самих функцій, що і при редагуванні параметрів вузлів (див. «Параметри вузлів»).

Розстановка ТІ редагується в оперативній пам'яті, передбачений запит на запис.

Розстановка ТЗ. Файл розстановки ТЗ може бути створений за допомогою утиліт, якщо нормативно-довідкова інформація ТЗ ІУП доповнена відповідної кодуванням розстановки. Редактор дозволяє створювати і підтримувати цей файл незалежно і самостійно.

Кожній ТЗ відводиться кілька полів. Призначення кожного поля пояснюється титрами (наведені умовні позначення).

У процесі редагування розстановки ТЗ для користувача доступні виклики тих самих функцій, що і при редагуванні параметрів вузлів (див. «Параметри вузлів»).

Розстановка ТЗ редагується в оперативній пам'яті, передбачений запит на запис.

Значення ТІ. Редагуються значення ТІ, передані з ІУП за допомогою утиліт. Така необхідність виникає коли або частина ТІ свідомо помилкова, або частину ТІ відключена, або результати вимірів потрібно узгодити з даними з диспетчерської відомості, зокрема при обробці даних режимного дня.

Кожному ТІ відповідає рядок, що складається з декількох полів (вказується кодування розстановки ТИ і виміряне значення). Призначення полів пояснюється титрами (наведені умовні позначення).

У процесі редагування значень ТІ для користувача доступні виклики тих самих функцій, що і при редагуванні параметрів вузлів (див. «Параметри вузлів»), за винятком виклику Протоколу.

Значення ТІ редагуються в оперативній пам'яті, причому для редагування доступні тільки виміряні значення, і транслюються автоматично (тобто використовувати режим трансляції необов'язково). Передбачено запит на запис.

Значення ТЗ. Редагуються значення ТЗ, передані з ІУП за допомогою утиліт (для того, щоб передати значення ТЗ з ІУП, необхідно при обміні файлами запросити поточні дані). Така необхідність виникає коли або частина ТЗ свідомо помилкова, або частину датчиків ТЗ відключена, або значення ТЗ потрібно узгодити з поточною схемою електричних з'єднань.

Кожній ТЗ відповідає рядок, що складається з декількох полів (вказується кодування розстановки ТЗ, поточна й поточне значення ТС). Призначення полів пояснюється титрами (наведені умовні позначення).

У процесі редагування значень ТЗ для користувача доступні виклики тих самих функцій, що і при редагуванні параметрів вузлів (див. «Параметри вузлів»), за винятком виклику Протоколу.

Значення ТЗ редагуються в оперативній пам'яті, причому для редагування доступні тільки поточні значення, і транслюються автоматично (тобто використовувати режим трансляції необов'язково). Передбачено запит на запис.

2.3.3 Налагодження

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

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

У підменю «Налагодження» пропонується вибрати тип вихідних даних: керуюча інформація, параметри вузлів, параметри гілок, допоміжні масиви, розстановка ТІ, розстановка ТЗ.

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

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

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

Для полегшення і прискорення налагодження параметрів вузлів пропонуються різні можливості сортування, комбінування, пошуку, спільного аналізу вихідних даних. Параметри вузлів можна сортувати в порядку зростання номерів вузлів.

У процесі налагодження параметрів вузлів для користувача доступні виклики функцій, що надають такі можливості:

à Редагування назв вузлів.

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

à Допомога.

à Пошук за номером вузла. Дана функція полегшує і прискорює пошук потрібного вузла по його номеру; одночасно перевіряється наявність дубля.

à Пошук за номером відображення сайту. Дана функція полегшує і прискорює пошук потрібного вузла по його номеру відображення; одночасно перевіряється наявність дубля.

à Список уявно віддалених вузлів. Функція позбавляє від необхідності пошуку уявно віддалених вузлів і полегшує видалення і включення вузлів при формуванні розрахункової схеми.

à Апріорні дані. Функція ефективна при оперативному зміні як складу вузлів з ​​апріорними даними, так і самих апріорних даних.

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

à Довідка. Надається інформація про використані номерах відображень вузлів, що дозволяє уникнути можливе їх дублювання.

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

Кожній гілки відповідає рядок, що складається з декількох полів. Призначення кожного поля пояснюється титрами (наведені умовні позначення).

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

У процесі налагодження параметрів гілок для користувача доступні виклики функцій, що надають такі можливості:

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

à Допомога.

à Вузол. Одна з можливостей виділення групи гілок (вибираються гілки, що примикають до зазначеного вузла).

à Гілка. Дана функція полегшує і прискорює пошук потрібної галузі по її номеру; одночасно перевіряється наявність дубля.

à Пошук уявно віддалених гілок. Функція позбавляє від необхідності пошуку уявно віддалених гілок і полегшує видалення і включення гілок при формуванні розрахункової схеми.

à Трансформатори. Функція призначена для налагодження параметрів трансформаторних гілок.

à Реактори. Функція призначена для налагодження параметрів реакторів.

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

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

Для полегшення і прискорення налагодження розстановки ТІ пропонуються різні можливості сортування, комбінування, пошуку, поєднання з фрагментом електричної мережі. ТІ можна сортувати в порядку зростання їх номерів.

У процесі налагодження розстановки ТІ для користувача доступні виклики функцій, що надають такі можливості:

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

à Допомога.

à Вузол. Одна з можливостей виділення групи ТІ: вибираються ТІ, датчики яких встановлені біля (в) вказаного вузла; одночасно виводиться фрагмент електричної мережі (список гілок, що примикають до зазначеного вузла), що значно полегшує перевірку відповідності кодування розстановки ТИ і розрахункової схеми.

à Гілка. Функція полегшує і прискорює пошук датчиків ТІ, встановлених на гілці.

à Список уявно віддалених ТІ. Функція позбавляє від пошуку уявно віддалених ТИ і полегшує відключення і включення датчиків ТІ при формуванні розрахункової схеми.

à Пошук. Дана функція полегшує і прискорює пошук потрібного ТІ за його номером; одночасно перевіряється наявність дубля.

à Код. Автоматично відновлюється код вимірюваного параметра режиму раніше уявно віддаленого ТІ незалежно від терміну давності.

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

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

У процесі налагодження розстановки ТЗ для користувача доступні виклики функцій, що надають такі можливості:

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

à Допомога.

à Вузол. Одна з можливостей виділення групи комутаційних апаратів (КА): вибираються КА, пов'язані з вказаною вузла; одночасно виводиться фрагмент електричної мережі (список гілок, що примикають до зазначеного вузла), що значно полегшує перевірку відповідності кодування розстановки ТЗ та розрахункової схеми.

à Список уявно віддалених ТЗ. Функція позбавляє від пошуку уявно віддалених ТЗ і полегшує відключення і включення датчиків ТC при формуванні розрахункової схеми.

à Пошук. Дана функція полегшує і прискорює пошук потрібної ТЗ за її номеру; одночасно перевіряється наявність дубля.

à Код. Автоматично відновлюється код раніше уявно віддаленої ТЗ незалежно від терміну давності.

Керуюча інформація. Керуюча інформація створюється і підтримується тільки відладчиком. Ця інформація відображає специфічні особливості реалізованих алгоритмів (типово для більшості параметрів беруться рекомендовані значення).

У процесі редагування керуючої інформації для користувача доступні виклики функцій, що надають такі можливості:

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

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

Допоміжні масиви. Допоміжні масиви створюються і підтримуються тільки відладчиком. Ці масиви (генераторні вузли, зовнішні вузли (зв'язку), автотрансформатори з РПН) використовуються при формуванні вихідних форм ІУП, тому повинна витримуватися жорстка позиційна прив'язка; будь-яке їх зміна повинна бути узгоджене з вихідними формами ІУП. Об'єкти, зазначені у цих масивах, можуть бути відключені (не враховуватися) у формованої розрахунковій схемі.

У процесі редагування допоміжних масивів для користувача доступні виклики функцій, що надають такі можливості:

à Перемикання «вікон». Вибирається потрібний допоміжний масив.

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

à Допомога.

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

2.3.4 Компонування

Компонується розрахункова схема з окремих відтранслювати файлів - формується єдина для всіх розв'язуваних технологічних завдань математична модель електричної системи.

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

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

Підменю «Компонування» містить два пункти: Компонування, Протокол. Протокол доступний або після трансляції будь-якого файлу основної бази даних, або після компонування розрахункової схеми.

Якщо вибрано пункт «Компонування», надається довідка про сформованих розрахункових схемах Слід вибрати номер формованої розрахункової схеми і ввести шифр для неї.

Основні етапи компонування розрахункової схеми контролюються, для чого на екран дисплея виводиться їх перелік і відзначається характер завершення кожного з них.

2.3.5 Документи

Вихідні документи виводяться у файл, який створюється після вибору підменю «Документи».

Вихідні документи: таблиця відповідності, каталог кадрів, параметри системи, розстановка ТІ, розстановка ТЗ, ідентифіковані елементи. Всі вони, за винятком параметрів системи і розстановки ТІ, можуть видаватися для будь-якої існуючої розрахункової схеми.

à Таблиця відповідності встановлює жорстку позиційну зв'язок між даними, якими обмінюються ІУП і ІВП.

à Каталог кадрів містить шаблони з зазначенням адрес для відображення узагальненої інформації.

Вихідні документи супроводжуються необхідними поясненнями.

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

3. Особливості windows-програмування

Windows 95 - одна з останніх версій графічної операційної системи (ОС) Windows, представленої вперше в листопаді 1985 року для використання на комп'ютерах типу IBM PC і сумісних з ним. За останнє десятиліття ОС Windows майже повністю витіснила всіх конкурентів і стала фактично еталоном ОС для персональних комп'ютерів.

У Windows 95 об'єднані кошти, наявні в попередніх ОС. До них також додані нові засоби, що дозволяють більш швидко виконувати великі обсяги робіт.

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

Найвизначнішою особливістю Windows є графічний інтерфейс користувача. Дисплей сам стає джерелом, звідки в машину вводиться інформація. Він показує різні графічні об'єкти у вигляді картинок і конструкцій для введення інформації (таких, як кнопки або смуги прокрутки). Використовуючи клавіатуру або мишу, користувач може безпосередньо маніпулювати цими об'єктами на екрані. Графічний інтерфейс користувача Windows істотно полегшує діалог з персональним комп'ютером.

ОС Windows дозволяє створювати т.зв. «Дочірні вікна управління». Дочірнє вікно обробляє повідомлення миші і клавіатури і сповіщає батьківське вікно про те, що стан дочірнього вікна змінилося. Воно інкапсулює особливі дії, пов'язані з графічним поданням вікна на екрані, реакцією на призначений для користувача введення, і сповіщення іншого вікна під час введення важливої ​​інформації. Можна створювати свої власні дочірні вікна управління, але є також можливість використовувати переваги декількох вже певних класів вікна (і віконних процедур), за допомогою яких програма може створювати стандартні дочірні вікна управління. Windows містить наступні зумовлені класи вікон: кнопка, радіопереключатель, прапорець, вікно редагування, вікно списку, вікно комбінованого списку, статичне вікно, смуга прокручування.

Для спрощення створення Windows програм з інтерфейсом користувача, відповідним інтерфейсу оболонки системи, корпорація Microsoft розробила бібліотеку органів управління загального користування (common control library). Вона містить 17 елементів, які умовно можна розділити на чотири категорії: органи управління головного вікна (панель інструментів, вікно підказки, рядок стану), складові діалогові органи управління (сторінка властивостей, набір сторінок властивостей), органи управління Windows Explorer (дерево перегляду, список перегляд) і інші органи управління (наприклад, гаряча клавіша, індикатор процесу, вікно з движком для вибору значення з діапазону). Як дочірні вікна управління, так і органи управління загального користування часто використовуються при створенні Windows додатків.

Важливою особливістю OC Windows є багатозадачність. Під Windows 95 будь-яка програма стає резидентної і кілька програм одночасно можуть мати висновок на екран і виконуватися. Крім того, програми самі по собі можуть мати декілька потоків виконання, які, як здається, виконуються паралельно. В основі цього принципу лежить використання ОС апаратного таймера для розподілу процесорного часу між одночасно виконуваними процесами. [4]

До основних переваг ОС Windows 95 відносяться наступні:

à покращений інтерфейс;

à більш просте управління файлами, включаючи підтримку мережевих зв'язків і довгих імен файлів;

à технологія Plug and Play автоматично визначає і налаштовує додаткові пристрої, що підключаються до комп'ютера;

à 32 - бітна багатозадачна середовище дозволяє одночасно працювати декільком програмам;

à поліпшені засоби пошуку;

à поліпшена підтримка мультимедіа;

à розширені можливості встановлення зв'язків, включаючи електронну пошту, факси, електронні дошки оголошень, Internet;

à управління процесом друку документів.

Розглянемо більш детально процес створення прикладної програми Windows.

3.1 Головне вікно

Прикладна програма Windows - це будь-яка програма, яка спеціально написана для роботи в операційному середовищі Windows і використовує інтерфейс прикладної програми (API).

Прикладна програма Windows має такі основні компоненти: основну функцію WinMain; т.зв. «Віконну процедуру» - функцію WndProc.

WinMain - Це точка входу в програму. У будь-якій програмі для Windows є функція Win Ma in, вона визначається наступним чином:

integer function WinMain (hInstance, hPrevInstance,   &

lpszCmdLine, nCmdShow).

hInstance - дескриптор (описувач, Хендлі) екземпляра. Це унікальне число, що ідентифікує програму, коли вона працює під Windows;

hPrevInstance - дескриптор попереднього екземпляра програми. Під Windows 95 цей параметр завжди NULL;

lpszCmdLine - покажчик на закінчувалася нулем рядок, в якій містяться будь-які параметри, передані в програму з командного рядка.

nCmdShow - число, що показує, яким має бути виведено на екран вікно в початковий момент.

У більшості випадків ця функція робить наступне:

à викликає функції ініціалізації, які реєструють класи вікон, створюють вікна і виконують інші ініціалізації;

à запускає цикл обробки повідомлень з черги прикладної програми;

à завершує роботу програми.

WndProc - це функція багаторазового виклику, тобто функція програми, яку викликає Windows. Сама програма ніколи не викликає цю функцію безпосередньо. Кожне вікно має відповідну віконну процедуру. Віконна процедура - це спосіб інкапсулювання коду, що відповідає за введення інформації і за виведення інформації на екран, що реалізується шляхом посилки «повідомлень» вікна.

У процесі створення головного вікна програми умовно можна виділити чотири етапи:

  1. реєстрація класу головного вікна;

  2. створення головного вікна;

  3. відображення і коректування головного вікна;

  4. організація циклу повідомлень.

Розглянемо докладніше кожен з етапів.

Реєстрація класу вікна.

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

Перед створенням вікна для програми необхідно зареєструвати клас вікна шляхом виклику функції Rеgist e rс l аss:

ret = Rеgist e rс l аss (lpwc).

ret - цілочисельна змінна, що містить повертається функцією значення;

lpwc - Покажчик на структуру типу T _ WNDCLASS, містить у своїх дванадцяти полях інформацію про ім'я, атрибутах, ресурсах і функції вікна даного класу.

Заповнення структури та реєстрація класу вікна виробляються в WinMain. Якщо реєстрація пройшла успішно, функція повертає число, що ідентифікує реєстрований клас. В іншому випадку вона повертає нуль.

Створення вікна.

Вікно створюється за допомогою функції СreateWindow Ex (вона відрізняється від аналогічної функції CreateWindow можливістю завдання «розширеного» стилю вікна і наявністю параметра, що використовується як покажчика на якісь дані, на які програма надалі могла б посилатися). Ця функція спонукає Windows створити вікно, яке має вказаний тип і належить до певного класу. Виклик функції СreateWindow Ex здійснюється наступним чином:

hWnd = CreateWindowEx (&

INT4 (WS_EX_DLGMODALFRAME),! «Розширений» стиль вікна &

lpszClassName,! Ім'я класу вікна &

lpszAppName,! Тема головного вікна &

INT4 (WS_OVERLAPPEDWINDOW),! Стиль вікна &

0,! X - координата лівого верхнього кута &

0,! Y - координата верхнього лівого кута &

GetSystemMetrics (SM_CXSCREEN)   - 32, ! Ширина вікна   &

GetSystemMetrics (SM_CYSCREEN)   - 32, ! Висота вікна   &

NULL,! Дескриптор батьківського вікна &

h M enu,! Дескриптор меню вікна &

hInstance,! Дескриптор примірника &

NULL)! Параметри створення

Параметр з коментарем «ім'я класу вікна» містить рядок, що є ім'ям щойно зареєстрованого класу вікна («Krs _ w»). Т.ч., цей параметр пов'язує вікно з класом вікна.

«Тема головного вікна» містить текст, який з'являється в рядку заголовка («Компонувальник розрахункових схем»).

Вікно, створене програмою, є звичайним перекриваються вікном із заголовком, системним меню, головним меню, іконками для згортання, розгортання та закриття вікна праворуч на рядку заголовка і рамкою вікна (стандартний стиль вікон WS_ОVЕRLАРРЕDWINDOW). З пропонованого ОС Windows набору «розширених» стилів обраний стиль WS_EX_DLGMODALFRAME, додає вікна подвійну рамку.

Параметр з коментарем «дескриптор батьківського вікна» встановлюється в NULL, оскільки у нашого вікна відсутній батьківське вікно. Параметр hMenu містить дескриптор меню вікна. У параметр hInstance поміщається дескриптор екземпляра програми, переданий програмі як параметр функції WinMain. Параметр з коментарем «параметри створення» при необхідності використовується як покажчик на які-небудь дані, на які програма надалі могла б посилатися (у даній програмі такі дані не використовуються - параметр встановлений в NULL).

Виклик СreateWindow Ex повертає дескриптор створеного вікна. Цей дескриптор зберігається у змінній hWnd. Для багатьох функцій Windows як параметр потрібно hWnd, який вказує Windows, до ​​якого вікна застосувати функцію. Якщо функція СreateWindow Ex не може створити вікно, вона повертає NULL.

Відображення і коректування вікна.

Хоча функція СreateWindow Ex і створює вікно, вона автоматично не відображає його. Програма повинна передбачити індикацію вікна за допомогою функції ShowWindow і коригування області користувача вікна за допомогою функції UpdateWindow.

Функція ShowWindow спонукає Windows индицировать нове вікно:

bret = ShowWindow (hWnd, nCmdShow)

hWnd - дескриптор створеного функцією CreateWindowEx вікна;

nCmdShow - величина, що передається як параметр функції WinMain і задає початковий вигляд вікна на екрані;

bret - логічна змінна, що містить повертається функцією значення.

Функція Sho wWindow виводить вікно на екран. Виклик функції UpdateWindow викликає потім перемальовування робочої області:

bret = UpdateWindow (hWnd).

При обробці цього виклику у віконну процедуру надсилається повідомлення WМ_РАINТ.

Обидві функції при успішному завершенні повертають TRUE, в іншому випадку - FALSE.

Вид головного вікна компонувальника розрахункових схем представлений на малюнку 3.1.

Рис. 3.1. Вид головного вікна

Як видно з рис. 3.1, головне вікно компонувальника містить заголовок, рядок меню (структура якого була розглянута в 2 му розділі), робочу область, а також панель інструментів і панель стану, які детальніше будуть розглянуті нижче.

Цикл обробки повідомлень

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

Цикл обробки повідомлень - це програмний цикл, при роботі в якому функція WinMain витягує повідомлення з черги повідомлень і направляє їх відповідним вікон. Для даної програми цикл обробки повідомлень виглядає наступним чином:

do while (GetMessage (mesgt, NULL, 0, 0))! Отримати повідомлення

i = 0

if (hDlgModeLess. NE. NULL) then! Діалогове вікно активно?

if (IsDialogMessage (hDlgModeLess, mesgt)) i = 1! Є повідомлення

! для немодального діалогового вікна

end if

... ... ...! Аналогічним чином розподіляються

... ... ...! повідомлення для інших немодальний

... ... ...! діалогових вікон, які генерує програма

if (i.ne.0) cycle

i = TranslateMessage (mesgt) ! Транслювати повідомлення

i = DispatchMessage (mesgt) ! Надіслати повідомлення

end do

Виклик функції GetMessage, з якого починається цикл обробки повідомлень, витягує повідомлення з черги повідомлень. Цей виклик передає Windows покажчик на структуру mesgt типу T _МSG. Другий, третій і четвертий параметри, встановлені в NULL або 0, показують, що програма отримує всі повідомлення від всіх вікон, створених цією програмою. Windows заповнює поля структури повідомлень інформацією про черговий повідомленні з черги повідомлень. Найбільш важливими полями цієї структури є:

à hWnd - дескриптор вікна, для якого призначено повідомлення;

à message - тип повідомлення;

à wParam, lParam - два 32 розрядних параметра повідомлення, зміст і значення яких залежать від особливостей повідомлення.

Якщо поле mes sa ge повідомлення, витягнутого з черги повідомлень, так само будь-якому значенню, крім WМ_ QUI Т, то функція GetMessage повертає TRUE. Повідомлення WМ_QUIТ змушує програму перервати цикл обробки повідомлень.

При організації циклу обробки повідомлень програми, що створює в ході роботи немодальні вікна діалогу 1, необхідно враховувати, що повідомлення для немодальний вікон діалогу проходять через чергу повідомлень програми. Цикл обробки повідомлень має передавати такі повідомлення відповідним віконним процедур вікон діалогу. Це реалізується наступним чином. Функція створення немодального діалогу CreateDialog повертає дескриптор вікна (не рівний 0), який запам'ятовується в глобальної змінної (наприклад, hDlgModeLess). Якщо діалог створений і повідомлення призначене для нього, то функція IsDialogMessage відправляє повідомлення віконної процедури вікна діалогу, повертаючи TRUE, тоді допоміжна змінна i приймає значення 1, сигналізуючи тим самим про перехоплення повідомлення діалоговим вікном. В іншому випадку функція повертає FALSE і змінна i не змінюється. Якщо створені й інші активні немодальні діалоги, то для них реалізуються аналогічні операції. Таким чином гарантується, що функції TranslateMessage і DispatchMessage будуть викликатися тільки тоді, коли немодальні вікна діалогу не створені або немає повідомлень для них.

Оскільки програмі необхідно обробляти вводяться з клавіатури символи, потрібно перетворювати кожне отримане повідомлення за допомогою функції TranslateMessage. Ця функція відшукує пари повідомлень WM_KEYDOWN і WM_KEYUP і генерує відповідне повідомлення WM_CHAR.

Функція DispatchMessage відправляє повідомлення для його обробки відповідної віконної процедури. У розглянутій програмі такий віконної процедурою є функція Main WndProc. Після того, як Main WndProc обробить повідомлення, воно повертається в Windows, яка все ще обслуговує виклик функції DispatchMessage. Windows повертає керування в програму до наступного за викликом DispatchMessage оператору і цикл обробки повідомлень в черговий раз відновлює роботу, викликаючи GetMessage.

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

3.2 Процедура обробки повідомлень

Віконна процедура визначається наступним чином:

integer function MainWndProc (hWnd, mesg, wParam, lParam).

Першим параметром є hW n d, дескриптор одержує повідомлення вікна. Другий параметр - число, що ідентифікує повідомлення. Параметри wParam і lParam містять додаткову інформацію про повідомлення і називаються «параметрами повідомлення». Конкретне значення цих параметрів визначається типом повідомлення.

Обробка повідомлень

Віконна процедура отримує повідомлення від Windows. Це можуть бути повідомлення про введення, передані функцією WinMain (наприклад, WM_KEYDOWN, WM_KEYUP, WM_MOUSEMOVE, WM_TIMER), або повідомлення системи управління вікнами, що надходять безпосередньо від Windows в обхід черги прикладної програми або циклу обробки повідомлень (наприклад, WM_CREATE, WM_DESTROY, WM_PAINT) . Кожне одержуване вікном повідомлення ідентифікується номером, який міститься в параметрі mesg віконної процедури. У модулі MSFWINTY. F 90 Fortran PowerStation 4.0 визначено іменовані константи, що починаються із префікса для кожного типу повідомлень.

Зазвичай використовується конструкція select case для визначення того, яке повідомлення отримала віконна процедура і як його обробляти. Якщо віконна процедура обробляє повідомлення, то її повертаним значенням повинен бути 0. Всі повідомлення, що не оброблювані віконної процедурою, повинні передаватися функції Windows, яка називається DefWindowProc. Значення, що повертається цією функцією, повинно бути повертається значенням віконної процедури.

Перше повідомлення, яке отримує віконна процедура - це WМ_СRЕАТЕ. Коли Windows обробляє функцію СreateWindow Ex в WinMain, вона викликає MainWndProc з дескриптором вікна в якості першого параметра і з W М_СRЕАТЕ в якості другого. MainWndProc обробляє повідомлення WМ_СRЕАТЕ і передає управління назад у Windows, яка, у свою чергу, повертається назад в Win Ma in .

Наступним обробляється повідомлення WM _ SIZE. Визначаються розміри робочої області, панелі інструментів та панелі стану. Windows посилає у віконну процедуру повідомлення WM _ SIZE при будь-якій зміні розмірів вікна. Змінна lParam, передана у віконну процедуру, містить ширину робочої області в молодшому слові і висоту в старшому слові.

Повідомлення WM _ PARENTNOTIFY і WM _ RBUTTONDOWN обробляють повідомлення, що надходять відповідно від панелі інструментів і спливаючого меню.

У програмі необхідно обробляти символи клавіатури, тому вона повинна обробляти повідомлення WM _ CHAR. Параметр lParam, рухаючись у віконну процедуру як частина символьного повідомлення, є таким же, як параметр lParam апаратного повідомлення клавіатури, з якого згенеровано символьне повідомлення. Параметр wParam - це код символу ASCII. Особливим чином обробляються клавіші <Backspace>, <Tab> та <Enter>. Всі інші символи обробляються схожим чином.

Повідомлення WM _ KEYDOWN використовується для визначення натиснутою клавіші або комбінації клавіш.

При клацанні миші на дозволеному пункті меню генерується повідомлення WM _ COMMAND (при виборі недоступного або забороненого пункту меню дане повідомлення не генерується).

Повідомлення WМ_РАINТ повідомляє програмі, що частина або вся робоча область вікна недійсна, і її слід перемалювати.

При створенні вікна недійсна вся робоча зона, оскільки програма ще нічого у вікні не намалювала. При зміні розміру вікна робоча область також стає недійсною і вміст робочої області не зберігається. У графічному середовищі це призвело б до того, що довелося б зберігати занадто багато даних. Замість цього Windows робить недійсним все вікно. Віконна процедура отримує повідомлення W М_РАINТ і відновлює вміст вікна.

При переміщенні вікон так, що вони перекриваються, Windows не зберігає ту частину вікна, яка закривається іншим вікном. Коли ця частина вікна пізніше відкривається, Windows позначає його як недійсне. Віконна процедура отримує повідомлення W М_РАINТ для відновлення вмісту вікна.

Останнім повідомленням є повідомлення W М_DESTROY. Це повідомлення показує, що Windows знаходиться в процесі ліквідації вікна у відповідь на отриману від користувача команду. Програма стандартно реагує на це повідомлення, викликаючи PostQuitMessage (0). Ця функція поміщає повідомлення WМ_QUIT в чергу повідомлень програми. Коли функція GetMessage отримує це повідомлення, робота циклу обробки повідомлень переривається і програма закінчує свою роботу, виходячи в систему.

3.3 Модальний і немодальний діалог

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

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

Віконна процедура вікна діалогу - це функція багаторазового виклику, яку викликає Windows, коли вона має повідомлення для вікна діалогу. Як правило, усередині процедури діалогу не реалізується дуже багато функцій. Виняток становлять лише ініціалізація дочірніх вікон елементів управління при створенні вікна діалогу, обробка повідомлень від дочірніх вікон елементів управління і завершення роботи з вікном діалогу (тобто обробляються повідомлення WM _ INITDIALOG, WM _ COMMAND, WM _ DESTROY). Віконна процедура вікна діалогу повертає FALSE (0), якщо вона не обробляє повідомлення, або TRUE (ненульове значення), якщо обробляє.

Розглянемо окремо модальні та немодальні вікна діалогу.

Модальне вікно діалогу.

Модальне вікно діалогу - це вікно, яке відображає інформацію і запит на введення від користувача. Воно називається модальним, оскільки робить батьківське вікно тимчасово недоступним і змушує користувача закінчити запитувані дії перед поверненням управління батьківському вікну, тобто не можна переключатися між вікном діалогу та іншими вікнами програми. Але, незважаючи на наявність на екрані вікна діалогу, користувач може переключитися на інші програми. Деякі вікна діалогу (звані системними модальними вікнами - system modal) цього робити не дозволяють. Системне модальне вікно діалогу змушує користувача, перед тим як він отримає можливість зробити що-небудь інше в Windows, завершити роботу з ним.

Модальне вікно діалогу запускає свій власний цикл обробки повідомлень з черги прикладної програми без повернення у функцію WinMain.

Для створення модального вікна діалогу програма викликає функцію DialogBox (можуть також використовуватися функції DialogBoxIndirect, DialogBox Param, DialogBoxIndirect Param):

nResult = DialogBox (hInstance, lpTemplate, hWndParent, lpDialogFunc).

nResult - Змінна, приймаюча значення -1 при неуспішному завершення функції, в зворотному випадку повертається значення - параметр nResult функції EndDialog, яка завершує роботу модального вікна діалогу;

hInstance - дескриптор екземпляра;

lpTemplate - цей параметр ідентифікує шаблон вікна діалогу;

hWndParent - дескриптор батьківського вікна модального вікна діалогу;

lpDialogFunc - адреса процедури діалогу.

Робота модального вікна діалогу завершується за допомогою функції EndDialog:

bret = EndDialog (hDlg, nResult).

nResult - визначає значення, яке буде повернуто додатку від функції DialogBox, що створила діалогове вікно;

hDlg - дескриптор діалогового вікна.

Логічна мінлива bret приймає значення TRUE або FALSE відповідно при успішному чи неуспішному завершенні.

Windows не повертає управління батьківському вікну до тих пір, поки не викликана функція EndDialog.

Немодальний вікно діалогу.

На відміну від модального вікна діалогу, немодальні вікно діалогу не робить недоступним батьківське вікно, дозволяючи тим самим користувачеві перемикатися між вікном діалогу і вікном, в якому воно було створено, а також між вікном діалогу та іншими програмами.

Немодальний вікно діалогу отримує інформацію через цикл обробки повідомлень функції WinMain (див. п. 3.1).

Для створення немодального вікна використовується функція CreateDialog (Можуть також використовуватися функції CreateDialog Indirect, CreateDialogParam, CreateDialog Indirect Param):

hDlgModeLess = CreateDialog (hInstance, lpTemplate,   &

hWndParent, lpDialogFunc).

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

Для закриття немодального вікна діалогу використовується функція DestroyWindow:

bret = DestroyWindow (hDlg).

hDlg - дескриптор діалогового вікна (локальна змінна, яка використовується у віконній процедурі вікна діалогу).

Функція повертає значення bret, рівне TRUE або FALSE відповідно при успішному чи неуспішному завершенні. Після виклику функції DestroyWindow глобальна змінна, що містить дескриптор немодального вікна діалогу, повинна бути встановлена ​​в нуль.

До немодальний вікнам діалогу відносяться вікна панелі стану та панелі інструментів, що використовуються в КП Компонувальник. Ці два вікна завжди знаходяться на екрані.

3.4 Панель інструментів

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

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

Вид панелі інструментів представлений на рис. 3.2.

Рис. 3.2. Вид панелі інструментів

У даній програмі на панель інструментів винесені наступні найбільш часто вживані функції:

à вставити копію поточного рядка;

à вставити новий рядок після поточної;

à видалити поточний рядок;

à відновити раніше видалені рядки;

à ввести шаблон пошуку (ця функція реалізована за допомогою стандартного дочірнього вікна управління класу «вікно редагування»);

à пошук за шаблоном вниз;

à пошук за шаблоном вгору;

à сортувати в порядку зростання;

à сортувати в порядку убування;

à буфер обміну;

à калькулятор;

à друк;

à вибір титрів;

à локальна допомога;

à допомогу.

Крім того, на панелі інструментів є радіокнопки, призначені для реалізації додаткових функцій підготовки та обробки даних: трансляції, протоколу, редагування назв вузлів та ін

Кожного разу при відкритті дочірнього вікна панель інструментів активізує доступні йому функції.

Вхідні параметри панелі інструментів.

У даній програмі панель інструментів створюється шляхом виклику функції CreateDialog:

hPnUpr = CreateDialog (hInstance, LOC («PnUpr» C), hWnd, LOC (PnUpr)).

Параметри цієї функції містять наступну інформацію:

hInstance - дескриптор екземпляра програми;

LOC (''PnUpr''C) - ідентифікує шаблон блоку діалогу. Цей параметр є адресою символьного рядка, в якій міститься ім'я шаблону діалогового вікна;

hWnd - дескриптор батьківського вікна. Для панелі інструментів батьківським є головне вікно програми;

LOC (PnUpr) - адреса процедури діалогу.

Функція повертає дескриптор панелі інструментів, який зберігається в глобальній змінній hPnUpr.

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

integer function PnUpr (hDlg, message, wParam, lParam)

Параметри процедури діалогу аналогічні параметрам віконної процедури головного вікна: hDlg - дескриптор вікна діалогу; message - змінна, що ідентифікує повідомлення; параметри wParam і lParam містять додаткову інформацію про повідомлення.

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

а) WM _ INITDIALOG; це повідомлення надсилається процедурою діалогу при створенні діалогового вікна перш, ніж воно відображається на дисплеї. Після отримання цього повідомлення процедура діалогу обчислює висоту панелі інструментів, використовуючи для цього функцію GetWindowRect:

bret = GetWindowRect (hDlg, rect).

Функція заповнює поля структури rect типу T _ RECT інформацією про розміри робочої області діалогового вікна панелі інструментів. Потім обчислюється висота діалогового вікна:

YDlg = rect% bottom - rect% top.

Обчислення значення зберігається в глобальній змінній YDlg.

б) дочірні вікна управління панелі інструментів посилають процедурі діалогового вікна повідомлення WM _ COMMAND. Параметри цього повідомлення містять ідентифікатор дочірнього вікна (молодше слово параметра wParam), код повідомлення (старше слово wParam) і дескриптор дочірнього вікна управління, що послав повідомлення (lParam). У даній програмі дочірніми вікнами управління панелі інструментів є вікно введення шаблону пошуку та радіокнопки. Процедура діалогу при отриманні повідомлення WM _ COMMAND визначає за молодшому речі параметра wParam ідентифікатор дочірнього вікна, від якого надійшло повідомлення, і виконує відповідні дії.

Вихідні параметри панелі інструментів.

Вихідними параметрами панелі інструментів є повідомлення активного на даний момент дочірньому вікна або панелі стану.

Повідомлення активного дочірньому вікна надсилається у разі, якщо лівою кнопкою миші вибраний будь-який орган управління на панелі інструментів. Клацання правою кнопкою миші на будь-якому органі управління (виключаючи вікно введення шаблону пошуку) примушує програму вивести в панель стану текст, що пояснює призначення обраного органу управління.

Алгоритм, який реалізує вищесказане, виглядає наступним чином.

1. Натиснуто кнопка миші?

Якщо натиснута права кнопка:

а) визначити вибраний на панелі інструментів орган управління;

б) вивести відповідне обраному органу управління текстове пояснення в призначене для цього поле панелі стану.

Якщо дочірнє вікно активно і натиснута ліва кнопка:

а) визначити вибраний на панелі інструментів орган управління;

б) відправити активного дочірньому вікна повідомлення, що містить ідентифікатор обраного органу управління.

2. Продовжити виконання програми.

Наведений алгоритм вимагає деяких пояснень.

Кожного разу при клацанні правою або лівою кнопкою миші над робочою областю панелі інструментів віконної процедури головного вікна надсилається повідомлення WM _ PARENTNOTIFY, що містить у своїх параметрах наступну інформацію:

à ідентифікатор панелі інструментів;

à яка саме кнопка миші натиснута;

à координати курсору в момент натискання.

Віконна процедура при обробці цього повідомлення викликає послідовно дві підпрограми - HelpPnUpr і (за умови, що дочірнє вікно активно) GetIdPnUpr, в яких і реалізується перший крок алгоритму.

Коли дочірньому вікна надсилається повідомлення на пошук за шаблоном, воно, у свою чергу, посилає повідомлення IDOK панелі інструментів для насильницького читання шаблону.

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

У даній програмі процедура діалогу панелі інструментів і зазначені підпрограми об'єднані в одному модулі, що дозволяє розглядати панель інструментів як «чорний ящик» (об'єкт). «Чорний ящик» отримує деякі повідомлення і певним чином на них реагує (рис. 3.3).

Рис. 3.3. Панель інструментів

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

3.5 Панель стану (рядок стану)

Панель стану призначена для виводу на екран необхідної користувачу інформації.

Панель стану являє собою немодальні вікно діалогу, яке виводиться в нижню частину головного (батьківського) вікна. Розмір і місце розташування панелі встановлюються за допомогою функції SetWindowPos.

Вид панелі стану зображений на рис. 3.4.

Рис.   3.4. Вид панелі стану.

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

Вхідні параметри панелі стану.

У даній програмі панель стану створюється функцією CreateDialog:

hPnSost = CreateDialog (hInstance, LOC («PnSost» C), hWnd, LOC (Pnsost)).

Параметри цієї функції є вхідними параметрами для панелі стану. Перший і третій з них аналогічні відповідним вхідних параметрів панелі інструментів. Параметр LOC («PnSost» C) ідентифікує шаблон діалогового вікна панелі стану. Параметр LOC (Pnsost) містить адресу процедури діалогу панелі стану.

Функція повертає дескриптор панелі стану, який зберігається в глобальній змінній hPnSost.

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

integer function Pnsost (hDlg, message, wParam, lParam).

Її параметри аналогічні параметрам процедури діалогу панелі інструментів.

У даній програмі процедура діалогового вікна панелі стану отримує і обробляє тільки повідомлення WM _ INITDIALOG. Після отримання цього повідомлення процедура діалогу обчислює висоту панелі стану аналогічно тому, як це реалізовано у процедурі діалогу панелі інструментів. Обчислення значення зберігається в глобальній змінній YPnSost.

Відображення інформації.

Для виведення інформації в дочірнє вікно управління панелі стану використовується функція

SetDlgItemText (hwndDlg, idControl, lpsz).

Параметри цієї функції такі:

hwndDlg - дескриптор діалогового вікна (у нашому випадку це глобальна змінна hPnSost);

idControl - ідентифікатор дочірнього вікна управління;

lpsz - покажчик на Сі-рядок, що містить текст, який потрібно вивести на даний дочірнє вікно управління.

Для управління прогрес-індикатором йому надсилаються повідомлення за допомогою функції

SendDlgItemMessage (hwndDlg, idControl, Msg, wParam, lParam).

Параметр Msg тут - змінна, що містить посилається повідомлення, а параметри wParam і lParam містять додаткову інформацію про повідомлення.

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

3.6 Строковий редактор

Строковий редактор призначений для відображення і редагування текстових даних.

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

Робота зі строковим редактором.

Віконний редактор містить текстові дані у вигляді сторінки, що складається з декількох рядків. Кожен рядок розбивається на поля. Кожне поле - це певне число (параметр). Вміст поточного поля, тобто поля, доступного для редагування, поміщається у вікно строкового редактора (далі - «вікно»), яке зазначено подвійним бордюром.

Каретка переміщається всередині «вікна». Якщо каретка досягає межі «вікна» (лівої чи правої), то подальший рух у тому ж напрямку призводить до переміщення «вікна». Якщо ж «вікно» знаходиться на лівій або правій межі сторінки, то його подальше переміщення в тому же напрямку приводить до «перегортання» сторінки вправо / вліво.

Переміщення «вікна» по сторінці (сторінкам) можливі наступні: вгору / вниз на один рядок; вліво / вправо на одне поле; в початок / кінець рядка; на ту ж позицію попередньої / наступної сторінки («перегортання» вгору / вниз); на ту ж позицію першої / останньої сторінки.

Введення текстових даних і всі корекції виробляються всередині «вікна». Якщо каретка знаходиться на правій межі «вікна», то після введення «вікно» переміщається вправо на одне поле (якщо це можливо).

Всередині «вікна» символи можна видаляти по одному або групами (зліва / справа від позиції каретки, видалити весь вміст «вікна»).

Створення вікна строкового редактора.

Створення вікна строкового редактора відбувається при обробці повідомлення WM _ CREATE у віконній процедурі віконного редактора. Для цього використовується розглянута раніше функція CreateWindowEx. Вона повертає дескриптор вікна строкового редактора, який зберігається в глобальній змінній hWEdit. Слід зазначити, що при реєстрації класу вікна строкового редактора стиль вікна задається як комбінація наступних стилів:

à CS_VREDRAW, CS_HREDRAW - дозволяють перемальовування робочої області вікна в разі зміни його висоти або ширини;

à CS_OWNDC - створює унікальний контекст пристрою для кожного вікна, створеного на основі даного класу;

à CS_DBLCLKS - дозволяє посилку віконної процедури повідомлення про подвійне клацання мишею над робочою областю вікна.

При створенні вікна строкового редактора використовується «розширений» стиль WS_EX_DLGMODALFRAME, створює подвійну рамку навколо вікна.

Віконна процедура строкового редактора визначається наступним чином:

integer function Editw (hEdit, mesg, wParam, lParam)

Її параметри аналогічні параметрам віконної процедури головного вікна: hEdit - дескриптор вікна строкового редактора; mesg - змінна, що ідентифікує повідомлення; параметри wParam і lParam містять додаткову інформацію про повідомлення.

Вид строкового редактора представлений на рис.   3.5.

Рис. 3.5. Вид строкового редактора

Вхідні параметри строкового редактора.

Вхідними параметрами для строкового редактори є натискання алфавітно-цифрових і деяких функціональних клавіш. Він також відстежує стан системних клавіш для задіяння т.зв. «Гарячих клавіш». Строковий редактор повинен реагувати і на натискання лівої чи правої кнопок миші.

Вихідні параметри строкового редактора.

Вихідними параметрами строкового редактора є:

à відображення редагованого тексту;

à повідомлення WM _ LBUTTONDBLCLK, що посилається віконної процедури батьківського вікна;

à повідомлення WM _ COMMAND, що посилається віконної процедури батьківського вікна.

Повідомлення WM _ COMMAND надсилається у разі, якщо необхідно перемістити вікно строкового редактора або натиснута «гаряча клавіша».

Алгоритм роботи строкового редактора.

  1. Відображення редагованого тексту.

  2. Обробка повідомлень, пов'язаних з введенням з клавіатури.

  3. Обробка повідомлень, пов'язаних з натисканням кнопок миші.

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

à Bufed - символьний рядок, що містить редагований текст;

à Leng - довжина редагованого тексту (вмісту Bufed) в символах;

à P oz - положення каретки (число символів) від лівого краю вікна;

à C od - головний код натиснутої клавіші;

à S ccod - інформаційний код клавіші, клавіші;

à C odv - код повернення (0 немає корекцій; 1 є корекція).

Всі змінні, крім Bufed, - цілочисельні.

Перший пункт алгоритму реалізується наступним чином.

Після створення вікна строкового редактора, але перед його відображенням, віконна процедура отримує повідомлення WM _ CREATE. При його обробці обнуляються змінні C od, S ccod, C odv. Задаються шрифт і колір виведеного у вікно тексту. Вікно отримує фокус введення. Висновок редагованого тексту, тобто вмісту Bufed, відбувається при отриманні повідомлення WM _ PAINT і здійснюється функцією TextOut:

bret = TextOut (hdc, nXStart, nYStart, lpString, cbString),

де: bret - логічна змінна, приймаюча значення TRUE або FALSE відповідно при успішному чи неуспішному завершення функції; hdc - дескриптор контексту пристрою, на який виводиться текст; nXStart і nYStart - координати початкової позиції виведення тексту; lp String - покажчик на символьний рядок, яка містить текст; cbString - кількість символів у цьому рядку.

Потім каретка встановлюється на позицію, яка визначається змінної P oz (якщо каретка відсутня, вона попередньо створюється і відображається).

При отриманні повідомлення WM _ DESTROY обнуляється мінлива hWEdit, знищується каретка і закривається вікно строкового редактора.

Другий пункт алгоритму.

Для зручності роботи в Компонувальник розрахункових схем передбачена можливість використання т.зв. «Гарячих клавіш». «Гаряча клавіша» - це комбінація клавіш, яку користувач може натиснути для виклику к.-л. функції. У даній програмі використовуються дві групи комбінацій: CTRL + <буква>, ALT + <літера>. Відстеження к.-л. комбінації з першої групи не викликає особливих труднощів, у той час як використання клавіші ALT має свої особливості.

ОС Windows натиснення клавіш діляться на системні й несистемні. Системні натискання - це натиснення клавіш, що використовуються для управління програмою і Windows. У IBM PC для цієї мети Windows використовує клавішу ALT, тому можна сказати, що натискання клавіші ALT є системними. При натисканні клавіші ALT (або будь-який інший клавіші, якщо ALT при цьому утримується натиснутою) віконна процедура має фокус вводу вікна отримує повідомлення WM_SYSKEYDOWN. Натискання всіх інших клавіш вважаються несистемними, в цьому випадку віконна процедура вікна з фокусом введення отримує повідомлення WM_KEYDOWN.

У віконної процедури строкового редактора при отриманні будь-якого з цих повідомлень фіксується інформаційний код натиснутої клавіші (sccod), мінлива cod обнуляється. Потім викликається підпрограма edit з параметром hEdit.

При отриманні повідомлення WM _ CHAR, що генерується розглянутої раніше функцією TranslateMessage, фіксується головний код натиснутої клавіші (cod), мінлива sccod обнуляється, а потім також викликається підпрограма edit з параметром hEdit.

Передбачена перекодування з Windows кодування в MS DOS кодування. При необхідності цей модуль можна прибрати.

У підпрограмі edit проводяться наступні операції:

а) якщо натиснута одна з тих «гарячих клавіш», які дублюють органи управління панелі інструментів, то параметру wParam присвоюється значення ідентифікатора відповідного органу управління та у віконну процедуру батьківського вікна надсилається повідомлення WM _ COMMAND.

б) якщо натиснута одна з тих «гарячих клавіш», які дублюють операції виділення рядків або блоків, операцію зняття маркування, то параметру wParam присвоюється значення ідентифікатора відповідного пункту спливаючого меню віконного редактора і в його віконну процедуру надсилається повідомлення WM _ COMMAND.

в) якщо натиснута клавіша «ESCAPE» або «ENTER», змінної sccod присвоюється відповідно 0 або значення, відповідне інформаційного коду клавіші «стрілка вправо», а потім віконної процедури віконного редактора надсилається повідомлення WM _ COMMAND з параметром wParam, рівним -1.

г) якщо значення змінної cod не дорівнює нулю, тобто була натиснута клавіша в алфавітно-цифрової частини клавіатури, відбувається зміна редагованого тексту, змінної sccod присвоюється значення, відповідне інформаційного коду клавіші «стрілка вправо».

д) якщо значення змінної cod дорівнює нулю, з інформаційного коду натиснутої клавіші перевіряється її приналежність до групи функціональних клавіш або клавіш управління курсором, які виконують такі дії:

à клавіша «стрілка вліво» (VK _ LEFT) - каретка переміщається на одну позиції вліво. Якщо одночасно з клавішею була натиснута клавіша Ctrl або каретка вийшла за ліву межу вікна строкового редактора, віконної процедури віконного редактора надсилається повідомлення WM _ COMMAND з параметром wParam, рівним -1;

à клавіша «стрілка вправо» (VK _ RIGHT) - каретка переміщається на одну позиції вправо. Якщо одночасно з клавішею була натиснута клавіша Ctrl або каретка вийшла за праву межу вікна строкового редактора, віконної процедури віконного редактора надсилається повідомлення WM _ COMMAND з параметром wParam, рівним -1;

à клавіша «Delete» (VK_DELETE) - відбувається видалення символу над кареткою, змінної codv присвоюється значення 1;

à клавіша «Home» (VK _ HOME) - відбувається переміщення каретки в початок вікна. Якщо одночасно з клавішею була натиснута клавіша Ctrl, віконної процедури віконного редактора надсилається повідомлення WM _ COMMAND з параметром wParam, рівним -1;

à клавіша «End» (VK _ END) - відбувається переміщення каретки в кінець вікна. Якщо одночасно з клавішею була натиснута клавіша Ctrl, віконної процедури віконного редактора надсилається повідомлення WM _ COMMAND з параметром wParam, рівним -1;

à клавіша «F 5» (VK _ F 5) - відбувається видалення тексту ліворуч від каретки;

à клавіша «F 6» (VK _ F 6) - відбувається видалення тексту праворуч від каретки;

à клавіша «F 7» (VK _ F 7) - відбувається видалення всього тексту.

При зміні редагованого тексту код повернення приймає значення, рівне 1, а віконна процедура строкового редактора отримує повідомлення WM _ PAINT шляхом виклику функції InvalidateRect.

Третій пункт алгоритму.

При отриманні віконної процедурою строкового редактора повідомлення WM_LBUTTONDOWN визначаються координати курсору миші і каретка переміщається в позицію (з урахуванням ширини символів), відповідну розташування курсору миші.

При отриманні віконної процедурою строкового редактора повідомлення WM_RBUTTONDOWN на екран виводиться спливаюче меню, вигляд якого представлений на рис. 3.6.

Рис. 3.6. Спливаюче меню строкового редактора

При клацанні лівою кнопкою миші на к.-л. пункті спливаючого меню віконної процедури строкового редактора надсилається повідомлення WM _ COMMAND, що містить в молодшому слові параметра wParam ідентифікатор обраного пункту меню. Змінній sccod присвоюється значення ідентифікатора обраного пункту меню і викликається підпрограма edit.

Подвійний клацання лівою кнопкою миші на робочій області вікна строкового редактора породжує повідомлення WM _ LBUTTONDBLCLK. Після отримання цього повідомлення віконна процедура строкового редактора «переправляє» його батьківському вікну, тобто віконному редактора, де воно і обробляється.

У даній програмі віконна процедура строкового редактора і підпрограма edit об'єднані в одному модулі, що дозволяє розглядати строковий редактор як «чорний ящик». «Чорний ящик» отримує деякі повідомлення і певним чином на них реагує (рис. 3.7).

Рис. 3.7. Строковий редактор

Строковий редактор відображається на поверхні віконного редактора весь час і знищується тільки після закінчення його роботи.

3.7 Віконний редактор

Віконний редактор призначений для відображення і редагування бази даних.

Віконний редактор є дочірнім вікном головного вікна і виводиться на його робочу поверхню. Розмір і місце розташування віконного редактора встановлюються за допомогою функції SetWindowPos. Ширина вікна визначається довжиною рядка бази даних, а висота - умовою неперекритого діалогових вікон (панелі інструментів, панелі стану і, якщо активний режим введення назв вузлів, вікна введення назв вузлів).

Створення віконного редактора.

Для створення вікна віконного редактора викликається функція CreateWch, яка визначається наступним чином:

hWch = CreateWch (hWnd, szClassName, UnschWProc, LengStr),

де: hWnd - дескриптор батьківського вікна (тобто головного вікна); szClassName - ім'я класу вікна (воно ж є і заголовком вікна); UnschWProc - ім'я процедури обробки повідомлень віконного редактора; LengStr - довжина рядка бази даних.

У процесі виконання цієї функції обчислюється максимальна ширина вікна в пікселях, реєструється клас вікна (причому встановлюється зумовлений в Windows стиль курсору «IDC_CROSS», тобто «хрестик»). Потім за допомогою функції CreateWindowEx створюється вікно віконного редактора. Стиль вікна - дочірнє, видиме, має рядок заголовка з кнопкою закриття вікна, вертикальну та горизонтальну смуги прокрутки.

Функція CreateWch повертає дескриптор віконного редактора, який зберігається в глобальній змінній hWch.

Віконна процедура віконного редактора визначається наступним чином:

integer function UnschWProc (hWch, mesg, wParam, lParam)

Її параметри аналогічні параметрам віконної процедури головного вікна: hWch - дескриптор віконного редактора; mesg - змінна, що ідентифікує повідомлення; параметри wParam і lParam містять додаткову інформацію про повідомлення.

Вид віконного редактора представлений на рис. 3.8 (див. на наступній сторінці).

Рис.   3.8. Вид віконного редактора

Вхідні параметри віконного редактора.

Вхідними параметрами для віконного редактори є повідомлення про натиснення кнопок миші, переміщення миші (повідомлення WM _ MOUSEMOVE), повідомлення від смуг прокручувань (WM_VSCROLL і WM_ H SCROLL). Як говорилося раніше, віконний редактор може отримувати повідомлення WM _ COMMAND від панелі інструментів і строкового редактора, а також повідомлення WM _ LBUTTONDBLCLK.

Вихідні параметри віконного редактора.

Вихідними параметрами віконного редактори є:

à відображення редагованої бази даних і строкового редактора;

à реалізація додаткових функцій, що надаються розглянутої програмою.

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

Алгоритм роботи віконного редактора.

  1. Відображення редагованої бази даних і строкового редактора.

  2. Обробка повідомлень миші.

  3. Обробка повідомлень смуг прокручування.

  4. Обробка повідомлення WM_COMMAND.

  5. Реалізація додаткових функцій, що надаються програмою.

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

Рис. 3.9

js, jsMax - номер поточного запису і максимальне число полів в запису бази даних відповідно;

jsLeft, jsRight - межі тексту, що відображається бази даних (вмісту віконного редактора) по горизонталі (номери шпальт);

MaxRow, MaxCol - максимальне число символів, що відображаються у віконному редакторі, по вертикалі і горизонталі відповідно;

in, iv - межі тексту, що відображається бази даних (вмісту віконного редактора) по вертикалі (номери записів);

Row - номер запису, на якій знаходиться рядковий редактор (приймає значення від 1 до MaxRow);

Kol - кількість записів (рядків) в базі даних.

Використовуються також наступні змінні і масиви:

Text - вихідний масив (база даних);

Bufv - символьний масив, що відображається на екрані (вміст віконного редактора);

Par - цілочисельний масив, що містить межі полів бази даних (табуляція);

Ndn, Nup - мінімальний і максимальний номери рядків масиву Bufv, в межах яких його необхідно заповнити новими даними з Text;

BVpol, Bhpol - логічні змінні, що вказують на наявність смуг прокручування.

Всі згадані змінні, крім BVpol і Bhpol - цілочисельні. Призначення деяких інших змінних, використовуваних у програмі, буде прокоментовано далі.

Перший пункт алгоритму реалізується наступним чином.

Після створення віконного редактора, але перед його відображенням, віконна процедура отримує повідомлення WM _ CREATE. При його обробці шляхом виклику функції SetStatePnUpr на панелі інструментів активізуються доступні віконному редактору функції. Потім викликається функція WMCREATE:

Ret = WMCREATE (HWch, NumbRowTitr, Par),

де NumbRowTitr - число рядків титрів (у даній програмі дорівнює 1).

У процесі виконання цієї функції задаються шрифт і колір виведеного у вікно тексту, розраховуються значення змінних js, jsMax, jsLeft, jsRight, MaxRow, MaxCol. Після цього викликається підпрограма корекції даних corUnsch з параметром hWch, в якій дані готуються для виводу на екран (більше Детальніше робота підпрограми corUnsch буде розглянута далі). Потім шляхом виклику функції CreateEdit з параметром hWch створюється рядковий редактор.

При отриманні повідомлення WM _ PAINT віконна процедура викликає функцію WMPAINT:

ret = WMPAINT (hWch, TitrUnsch, NumbRowTitr, Par, Bufv),

де TitrUnsch - символьний масив, що містить титри.

У процесі виконання цієї функції проводиться вивід на екран рядка (рядків) титрів і вмісту масиву Bufv. Якщо є зазначені рядки або блоки тексту, вони виводяться інвертованими.

При отриманні повідомлення WM _ SIZE віконна процедура викликає функцію WMSIZE:

ret = WMSIZE (hWch, K ol, NumbRowTitr, LengStr),

в якій, виходячи з нового розміру робочої області віконного редактора, перераховуються змінні MaxRow, MaxCol, і аналізується, чи потрібно відображати смуги прокручування. Далі у віконній процедурі розраховується нове значення змінної jsRight, а потім, у разі потреби, коригується положення вікна строкового редактора (при зменшенні розмірів робочої області віконного редактора) або вміст масиву Bufv (при збільшенні розмірів робочої області віконного редактора).

При отриманні повідомлення WM _ DESTROY обнуляється мінлива hWch, знищується вікно строкового редактора і закривається вікно віконного редактора.

Розглянемо більш детально підпрограму corUnsch.

У випадку, якщо код повернення відмінний від нуля, спочатку в символьний масив Bufv, а потім і в Text, заносяться зміни, зроблені в строковому редакторі. Потім викликається функція MoveEditWithMouse:

ret = MoveEditWithMouse (Par, K ol),

Якщо в результаті клацання лівою кнопкою миші або дії смуг прокручування вікно строкового редактора необхідно перемістити, функція повертає позитивне значення, в залежності від якого викликається функція Metka 4 або Metka 5, а потім Metka 6. Якщо в результаті дії смуги прокручування потрібно змінити вміст віконного редактора, то перераховуються кордону відображуваного тексту бази даних in, iv, відповідно до них заповнюється масив Bufv, а потім викликаються функції Metka 4, Metka 5, Metka 6. Якщо функція MoveEditWithMouse повертає 0, тобто переміщення вікна не вироблялося ні мишею, ні смугами прокрутки, то викликається підпрограма управління вікном contw, і в разі переміщення строкового редактора за допомогою клавіатури або спливаючого меню (вліво / вправо, вгору / вниз, на початок / кінець рядка, на початок / кінець бази даних, перегортання вгору / вниз) перераховується положення строкового і віконного редакторів. У тому випадку, якщо переміщення строкового редактора не проводилося, перевіряється, чи був запит на пошук за шаблоном.

Функція Metka 4 виконує перерахунок змінних jsLeft, jsRight в залежності від того, в якому стовпці (js) знаходиться рядковий редактор. Перераховується також його горизонтальна координата XEdit.

Функція Metka 5 виконує перерахунок вертикальної координати строкового редактора YEdit, а в символьну рядок Bufed поміщається редагований текст.

У процесі виконання функції Metka 6 у відповідні поля панелі стану виводиться кількість записів в базі даних і номер поточного запису.

Другий пункт алгоритму реалізується наступним чином.

Віконна процедура віконного редактора обробляє п'ять повідомлень миші: WM_LBUTTONDOWN, WM _ RBUTTONDOWN, WM _ MOUSEMOVE, WM _ LBUTTONDBLCLK і WM_LBUTTONUP.

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

ret = WMLBUTTONDOWN (hWch, mesg, lParam, corUnsch).

У процесі виконання цієї функції змінної cod присвоюється значення змінної mesg, тобто ідентифікатор повідомлення WM_LBUTTONDOWN, а змінній sccod - значення змінної lParam, що містить горизонтальну позицію курсора миші в молодшому слові і вертикальну позицію курсору миші в старшому слові. Потім викликається підпрограма corUnsch, в якій розраховуються нові координати вікна строкового редактора. Оновлюється його вміст, каретка встановлюється на першу позицію. Для переміщення вікна строкового редактора викликається функція SetWindowPos, після чого управління повертається у віконну процедуру, де виконуються ще кілька операторів, пов'язаних з реалізацією додаткових функцій, і про які детальніше буде розказано при описі четвертого пункту алгоритму.

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

Рис. 3.10. Вид спливаючого меню віконного редактора

При клацанні лівою кнопкою миші на к.-л. пункті спливаючого меню віконної процедури віконного редактора надсилається повідомлення WM _ COMMAND, що містить в молодшому слові параметра wParam ідентифікатор обраного пункту меню.

Обробка віконної процедурою повідомлень WM _ MOUSEMOVE, WM _ LBUTTONDBLCLK і WM_LBUTTONUP необхідна для реалізації додаткових функцій, що надаються програмою, і докладніше буде розглянута при описі четвертого пункту алгоритму.

Третій пункт алгоритму реалізується наступним чином.

При обробці дій користувача вертикальна і горизонтальна смуги прокрутки посилають батьківському вікну (тобто віконному редактору) повідомлення WM _ VSCROLL і WM _ HSCROLL відповідно. При цьому змінна wParam в молодшому слові містить одну з величин, що ідентифікують дію користувача, і визначених у файлі msfwinty. F 90 (вказані лише ті, які обробляються в даній програмі):

à SB_LINEDOWN - прокрутка на рядок вниз;

à SB_LINEUP - прокрутка на рядок вгору;

à SB_PAGEDOWN - прокрутка на сторінку вниз;

à SB_PAGEUP - прокрутка на сторінку вгору;

à SB_THUMBTRACK - перетягування бігунка. Номер поточної позиції бігунка міститься у старшому слові wParam.

При обробці повідомлення WM _ VSCROLL викликається функція WMVSCROLL:

ret = WMVSCROLL (hWch, mesg, wParam, corUnsch).

При обробці повідомлення WM _ HSCROLL викликається функція WM H SCROLL:

ret = WMHSCROLL (hWch, mesg, wParam, corUnsch).

Алгоритми роботи цих функцій схожі. У випадку, якщо молодше слово wParam містить ідентифікатор SB_LINEDOWN, SB_LINEUP, SB_PAGEDOWN або SB_PAGEUP, мінлива cod обнуляється, а змінній sccod присвоюється значення ідентифікатора відповідного пункту спливаючого меню. Якщо молодше слово wParam містить ідентифікатор SB_THUMBTRACK, змінної cod присвоюється значення змінної mesg, а змінній sccod - Значення змінної wParam. (У всіх інших випадках управління повертається віконної процедури.) Потім викликається підпрограма corUnsch, в якій розраховуються нові координати вікна строкового редактора. Оновлюється його вміст, каретка встановлюється на першу позицію. Для переміщення вікна строкового редактора викликається функція SetWindowPos, після чого управління повертається віконної процедури.

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

Четвертий пункт алгоритму.

При отриманні повідомлення WM _ COMMAND допоміжної змінної ret присвоюється значення молодшого слова wParam. Подальша робота програми організовується за допомогою конструкції Select Case, тест-виразом для якої є мінлива ret.

Якщо ret = -1, тобто повідомлення прийшло від віконної процедури строкового редактора, або ret є ідентифікатором пункту спливаючого меню віконного редактора (крім останніх п'яти), викликається функція MYCASE:

ret = MYCASE (hWch, ret, corUnsch).

При виконанні функції спочатку аналізується значення змінної ret, і якщо ret є ідентифікатором пункту спливаючого меню, мінлива cod обнуляється, а sccod присвоюється значення ret. Потім викликається підпрограма corUnsch. Оновлюється вміст строкового редактора, каретка встановлюється на першу позицію. Для переміщення вікна строкового редактора викликається функція SetWindowPos і керування повертається віконної процедури.

Якщо ret є ідентифікатором радіокнопки або одного з органів управління панелі інструментів, тобто була викликана одна з функцій, доступних даному дочірньому вікна, виконується відповідна змінної ret Case секція.

У всіх інших випадках (по оператору Case Default) управління передається функції DefWindowProc.

П'ятий пункт алгоритму.

У даній програмі реалізовані наступні додаткові функції:

  1. «Вибір титрів».

  2. «Виклик Протоколу».

  3. «Введення назв вузлів».

  4. «Виділити рядок (рядки)».

  5. «Виділити блок».

  6. «Зняти маркування».

  7. «Пошук за шаблоном вниз / вгору».

Розглянемо роботу кожної з них докладніше.

1. «Вибір титрів».

Призначення - надання користувачу можливості задавати порядок відображення параметрів у будь-якій комбінації і в будь-якій послідовності.

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

Рис. 3.11. Вид модального діалогу «Вибір титрів»

Віконна процедура діалогу і підпрограми, необхідні для реалізації даної функції, об'єднані в модулі Titr.

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

У процесі роботи з даними діалогом користувач може виконувати наступні дії.

à Натиснути кнопку перенесення титру вправо. Віконна процедура діалогу отримує відповідне повідомлення, за яким викликає підпрограму Move, де виконуються операції перенесення виділеного титру з одного вікна списку в інший. Якщо жоден титр в лівому вікні списку не обраний або список порожній, кнопка недоступна.

à Натиснути кнопку перенесення титру вліво. Викликається підпрограма Move, де виконуються операції перенесення виділеного титру з одного вікна списку в інший. Якщо жоден титр в правому вікні списку не обраний або список порожній, кнопка недоступна.

à Натиснути кнопку «Вибрати все». Весь вміст лівого вікна списку додається в правий, після чого лівий список очищається. Якщо лівий список порожній, кнопка недоступна.

à Натиснути кнопку «Очистити все». Вміст обох вікон списків знищується, а потім викликається підпрограма TitreInit. Ця кнопка недоступна, якщо лівий список порожній.

à Натиснути кнопку «Скасування». Відновлюється колишній порядок проходження титрів, вікно діалогу завершує свою роботу і керування передається віконної процедури віконного редактора.

à Натиснути кнопку «Ок». У змінну jsMax записується кількість обраних титрів. Після цього послідовно викликаються підпрограма Change_By_Places_Titr, в якій проводиться корекція символьного масиву TitrUnsch, що містить титри, і підпрограма Change_By_Places_Text, в якій проводиться корекція символьного масиву Bufv і цілочисельного масиву табуляції Par відповідно до обраного порядком відображення параметрів. Вікно модального діалогу знищується і керування передається віконної процедури віконного редактора. Ця кнопка недоступна, поки не буде обраний, принаймні, один титр.

Модуль Titr також містить підпрограму Vosvrat_Titr, в якій проводиться відновлення початкового порядку проходження титрів, і підпрограму Vosvrat_Text, в якій проводиться відновлення початкового порядку проходження елементів масивів Bufv і Par.

Глобальна логічна змінна TitrFlag за умовчанням встановлюється в FALSE і приймає значення TRUE тільки в тому випадку, якщо порядок відображення параметрів був змінений. У процесі роботи віконного редактора перед початком обміну даними між масивами Bufv і Text аналізується стан змінної TitrFlag і, якщо вона встановлена ​​в TRUE, викликається підпрограма Vosvrat_Text, а при завершенні обміну викликається підпрограма Change_By_Places_Text.

2. «Виклик Протоколу».

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

При виклику протоколу на екран виводиться модальне вікно діалогу. Вид модального діалогу представлений на рис. 3.12.

Рис. 3.12. Вид модального діалогу «Виклик Протоколу»

Віконна процедура діалогу і підпрограма ProtocolInit, яка викликається при ініціалізації діалогу, об'єднані в модулі ProtMod.

Кожному повідомленням про помилку відповідає один рядок. Загальна кількість рядків (повідомлень) і номер поточного рядка вказуються у відповідних полях («Всього записів» і «Запис №»).

Передбачено три групи повідомлень: «!» - Використання даних, як правило, при вирішенні технологічних завдань призводить до їх аварійного завершення; «?» - Можливі помилки при вирішенні ряду технологічних завдань; «» - попередження, не обов'язково пов'язані з помилками.

Для видалення будь-якого повідомлення необхідно відзначити його за допомогою клавіатури або клацанням лівої кнопки миші, а потім натиснути кнопку «Видалити». Видалення є уявним: всі видалені повідомлення легко відновлюються - слід закрити, а потім повторно викликати протокол.

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

Вихід з вікна протоколу здійснюється автоматично, якщо вилучені всі повідомлення про помилки, або після натискання кнопки «Вихід з Протоколу».

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

3. «Введення назв вузлів».

Ця функція доступна тільки при редагуванні параметрів вузлів і дає можливість користувачеві редагувати назви вузлів.

Її виклик здійснюється клацанням лівою кнопкою миші на відповідній радіокнопки панелі інструментів. У нижній частині екрана безпосередньо над панеллю стану виводиться немодальні вікно діалогу, вигляд якого представлений на рис. 3.13.

Рис.   3.13. Вид немодального діалогу «Введення назв вузлів».

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

Віконна процедура діалогу міститься в модулі NameUzlMod.

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

Для редагування назви вузла необхідно клацнути лівою кнопкою миші на вікні редагування немодального діалогу і при появі в ньому курсору відредагувати текст вікна. Щоб повернути курсор строковому редактору, досить клацнути лівою кнопкою миші над робочою областю віконного редактора.

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

4. «Виділити рядок (рядки)».

Для зручності роботи користувача реалізована можливість позначки рядка (рядків). Маркувати можна окрему рядок або декілька рядків. В останньому випадку при використанні «гарячої клавіші» (ALT + L) або спливаючого меню віконного редактора відзначаються верхня і нижня рядки в довільній послідовності, допускається розширення зазначеного блоку вгору і вниз.

Реалізована можливість маркування рядка (рядків) за допомогою миші шляхом її переміщення з натиснутою лівою кнопкою. У момент відпускання кнопки операція виділення припиняється.

Зазначена рядок (рядки) виводиться на екран інвертованою.

5. «Виділити блок».

Для зручності роботи користувача реалізована можливість позначки блоку за допомогою клавіатури (використовується «гаряча клавіша» ALT + B) і з допомогою миші (використовується подвійне клацання лівою кнопкою миші або спливаюче меню віконного редактора). Маркувати можна окреме поле або групу (блок) полів, у останньому випадку зазначається лівий верхній та правий нижній кут в довільній послідовності. Допускається розширення зазначеного блоку вгору і вліво, вниз і вправо.

При позначці початку блоку (к.-л. поля) воно інвертується, а на панель стану виводиться напис «Відзначте кінець блоку». При позначці кінця блоку зазначена група полів виводиться на екран інвертованою, а напис у панелі стану стирається.

6. «Зняти маркування».

Зняти маркування вже зазначеного блоку або рядка (рядків) можна за допомогою клавіатури («гаряча клавіша» ALT + U) і за допомогою миші (використовується клацання лівою кнопкою миші над робочою областю віконного редактора або спливаюче меню віконного редактора).

7. «Пошук за шаблоном вниз / вгору».

Ця функція полегшує і прискорює пошук потрібного параметра.

Шаблон пошуку вводиться у вікно редагування на панелі інструментів (див. п. 3.4). Потім за допомогою відповідних органів панелі інструментів («пошук за шаблоном вниз», «пошук за шаблоном вгору»), які продубльовані «гарячими клавішами» (ALT + P і CTRL + P відповідно) і спливаючим меню віконного редактора, проводиться пошук.

Пошук ведеться по стовпцях, починаючи з поля, на якому знаходиться вікно строкового редактора. «Перегортання» вгору / вниз проводиться автоматично, якщо це необхідно. Якщо пошук успішний, то вікно строкового редактора встановлюється на полі, знайдене першим; в іншому випадку користувач інформується про те, що пошук неуспешен, а місце розташування вікна не змінюється.

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

4. Розробка заходів щодо безпечної експлуатації ПЕОМ

Державний комітет санітарно-епідеміологічного нагляду Російської Федерації здійснює розробку та нагляд за виконанням федеральних санітарних правил, норм і гігієнічних нормативів, які:

à містять нормативні акти, що встановлюють критерії безпеки та (або) нешкідливості для людини факторів середовища її проживання та вимоги до забезпечення сприятливих умов його життєдіяльності;

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

Федеральні санітарні правила і норми в числі інших включають в себе розділ «Гігієнічні вимоги до відеодисплейних терміналів (ВДТ) і ПЕОМ та організація роботи з ними», на основі якого розробляються заходи щодо безпечної експлуатації ПЕОМ.

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

4.1 Вимоги до ВДТ і ПЕОМ

Конструкція ВДТ і ПЕОМ повинна забезпечувати відповідність санітарно-гігієнічним нормам наступних параметрів:

à потужність експозиційної дози рентгенівського випромінювання;

à рівень ультрафіолетового випромінювання на робочому місці користувача;

à напруженість електромагнітного поля на робочому місці користувача по електричній і з магнітної складової;

à напруженість електростатичних полів на поверхнях ВДТ;

à рівень звуку при роботі ВДТ і ПЕОМ і при включенні їх у мережу.

Конструкція ВДТ ПЕОМ повинна передбачати:

à можливість повороту корпуса в горизонтальній і у вертикальній площинах з фіксацією в заданому положенні;

à антиблікове покриття екрану та інші конструктивні рішення для забезпечення оптимальної якості зображення при наявності зовнішніх джерел освітлення.

Конструкція клавіатури повинна передбачати:

à виконання у вигляді окремого пристрою;

à опорне пристосування, що дозволяє змінювати кут нахилу поверхні клавіатури.

4.2 Вимоги до приміщень для експлуатації ВДТ і ПЕОМ

Приміщення з ВДТ і ПЕОМ повинні мати природне і штучне освітлення. Природне освітлення має здійснюватись через світлові прорізи, орієнтовані переважно на північ і північний схід і забезпечувати нормовані для різних кліматичних поясів значення коефіцієнти природної освітленості (КПО).

Розташування робочих місць з ВДТ і ПЕОМ у цокольних і підвальних приміщеннях допускається тільки за погодженням з органами Державного санітарно-епідеміологічного нагляду.

Звукоізоляція огороджувальних конструкцій приміщень з ВДТ і ПЕОМ повинна відповідати гігієнічним вимогам і забезпечувати параметри шуму.

Приміщення з ВДТ мають бути обладнані системами опалення, кондиціонування повітря або припливно-витяжною вентиляцією.

Поверхня підлоги в приміщеннях експлуатації ВДТ і ПЕОМ повинна бути рівної, без вибоїн, неслизькою, зручною для очищення та вологого прибирання, мати антистатичні властивості.

4.3 Вимоги до захисту від шуму і вібрації

У виробничих приміщеннях, у яких робота на ВДТ та ПЕОМ є основною (диспетчерські, операторські, розрахункові, кабіни і посади керування, зали обчислювальної техніки тощо), у дошкільних та всіх навчальних приміщеннях з ВДТ і ПЕОМ фоновий рівень шуму не повинен перевищувати 40 дБА, (при роботі систем повітряного опалення, вентиляції та кондиціонування - 35 дБА), а під час роботи на ВДТ та ПЕОМ 50 дБА. Вібрація також не повинна перевищувати нормованих значень.

4.4 Вимоги до освітлення приміщень та робочих місць з ВДТ і ПЕОМ

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

Штучне освітлення повинно забезпечувати на робочих місцях з ВДТ і ПЕОМ у виробничих, адміністративно-громадських, дошкільних та навчальних приміщеннях освітленість не нижче нормованих значень.

В якості джерел світла при штучному освітленні повинні застосовуватися переважно люмінесцентні лампи типу ЛБ. При влаштуванні відбитого освітлення у виробничих та адміністративно-громадських приміщеннях допускається застосування металогалогенних ламп потужністю до 250 Вт. Допускається застосування ламп розжарювання у світильниках місцевого освітлення.

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

4.5 Загальні вимоги до організації та обладнання робочих місць з ВДТ і ПЕОМ

Робочі місця з ВДТ і ПЕОМ повинні розміщуватися в приміщеннях з природним освітленням при орієнтації віконних отворів на північ або північний схід.

Робочі місця з ВДТ і ПЕОМ при виконанні творчої роботи, що вимагає значного розумового напруження або високої концентрації уваги, слід ізолювати одне від одного перегородками висотою 1,5-2,0 м.

Шумляче устаткування (АЦПУ та ін), слід розміщувати поза приміщень з використанням ВДТ і ПЕОМ.

При конструюванні устаткування та організації робочого місця користувача ВДТ і ПЕОМ слід забезпечити відповідність конструкції елементів робочого столу і їх взаємного розташування, конструкції стільця (крісла) гігієнічним і ергономічним вимогам з урахуванням характеру виконуваної діяльності, комплексності технічних засобів, форм організації праці та основного робочого положення користувача .

Екран відеомоніторів повинен знаходитися від очей користувача на оптимальній відстані 700 мм, але не ближче 500 мм.

У приміщеннях з ВДТ і ПЕОМ щоденно повинно проводитися вологе прибирання.

4.6 Вимоги до організації режиму праці та відпочинку при роботі з ПЕОМ і ВДТ

Режими праці та відпочинку при професійній роботі з ПЕОМ і ВДТ повинні організовуватися в залежності від виду та категорії трудової діяльності. Види трудової діяльності поділяються на 3 групи:

à група А - робота з зчитування інформації з екрана ВДТ або ПЕОМ з попереднім запитом;

à група Б - робота з введення інформації;

à група В-творча робота в режимі діалогу з ЕОМ.

Для видів трудової діяльності встановлюється 3 категорії тяжкості і напруженості роботи з ВДТ і ПЕОМ, які визначаються:

à для груп А і Б - по сумарному числу зчитуються або вводяться знаків за робочу зміну;

à для групи В-за сумарним часу безпосередньої роботи з ВДТ і ПЕОМ за робочу зміну.

Тривалість роботи педагогів при веденні занять з ВДТ у всіх навчальних закладах не повинна перевищувати 4 годин на день.

Тривалість роботи з ВДТ і ПЕОМ інженерів, які обслуговують заняття в кабінетах обчислювальної техніки або дисплейних класах вищих навчальних закладів, не повинна перевищувати 6 годин на день.

Для забезпечення оптимальної працездатності і збереження здоров'я професійних користувачів, протягом робочої зміни повинні встановлюватися регламентовані перерви. Час регламентованих перерв протягом робочої зміни слід встановлювати в залежності від її тривалості, виду і категорії трудової діяльності з ВДТ і ПЕОМ. Тривалість безперервної роботи з ВДТ і ПЕОМ без регламентованого перерви не повинна перевищувати 2 годин.

Для профілактики зорового стомлення після кожних 25 хвилин роботи слід виконувати комплекс вправ для очей.

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

4.7 Вимоги до організації медичного обслуговування користувачів ВДТ і ПЕОМ

Професійні користувачі ВДТ і ПЕОМ повинні проходити обов'язкові попередні (при вступі на роботу) і періодичні медичні огляди в порядку і в строки, встановлені Міністерством охорони здоров'я Російської Федерації та Державним комітетом санітарно-епідеміологічного нагляду Російської Федерації. До безпосередньої роботи з ВДТ і ПЕОМ допускаються особи, які не мають медичних протипоказань.

Жінки з часу встановлення вагітності та в період годування дитини грудьми до виконання всіх видів робіт, пов'язаних з використанням ВДТ і ПЕОМ, не допускаються.

Медичний огляд студентів вищих навчальних закладів та учнів середніх спеціальних навчальних закладів має проводитися відповідно до чинних нормативно-методичними документами Міністерства охорони здоров'я Російської Федерації.

Медичний огляд дітей дошкільного та шкільного віку проводяться в порядку і в терміни, встановлені Міністерством охорони здоров'я Російської Федерації і Міністерством освіти Російської Федерації. [8]

Висновок

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

Розглянуто вимоги, що пред'являються до систем підготовки, налагодження та підтримки даних.

Наведено алгоритм формування розрахункової схеми, що задовольняє цим вимогам.

Описано користувальницький інтерфейс КП Компонувальник розрахункових схем в операційній системі MS DOS.

Реалізовано основні елементи призначеного для користувача інтерфейсу в операційній системі Windows: панель інструментів, панель стану, рядковий і віконний редактори, модальні та немодальні діалогові вікна.

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

Розроблені програми налічують близько трьох з половиною тисяч операторів.

Список літератури

  1. Унароков А.А. Управління режимом енергосистеми в реальному часі. / / Докторська дисертація. - М.: МЕІ, 1997 р.

  2. Унароков А.А. Обчислювальні аспекти оцінки стану ЕЕС. / / Известия РАН. Енергетика, 1995 р., № 2.

  1. Унароков А.А. Математичне забезпечення інформаційно-обчислювальної підсистеми: склад, концепції побудови і технічні характеристики. / / Збірник наукових праць № 9. - Смоленськ: СФ МЕІ, 1996 р.

  2. Петзолд Ч. Програмування для Windows 95; у двох томах. / Пер. з англ. - СПб.: BHV - Санкт-Петербург, 1997 р.

  3. Бартеньев О.В. Сучасний Фортран. - М.: Діалог-МІФІ, 1998 р.

  4. Гладков С.А., Фролов Г.В. Програмування в Microsoft Windows, у двох частинах. Частина 1. - М.: Діалог-МІФІ, 1992 р.

  5. Керівництво по програмуванню в середовищі Microsoft Windows. - М.: Наука, 1991 р.

  6. Федеральні санітарні правила, норми і гігієнічні нормативи. Гігієнічні вимоги до відеодисплейних терміналів і персональних електронно-обчислювальних машин і організація роботи з ними. - ЦК Сен РФ, М.: СанПин, 1994 р.

1 Більш докладно немодальні, а також модальні вікна діалогу будуть розглянуті в п. 3.3.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Диплом
463.4кб. | скачати


Схожі роботи:
Розрахунок аналіз і оптимізація режимів та втрат електроенергії в підприємстві КАТЕКелектросеть
Визначення втрат напруги та потужності в проводах лінії і електропередачі
Розрахунок широкосмугового підсилювача потужності
Розрахунок підсилювача потужності типу ПП2
Розрахунок транзисторного резонансного підсилювача потужності
Розрахунок потужності і вибір двигунів натискного пристрою
Розрахунок тягового зусилля і потужності приводу конвеєра
Розрахунок і проектування приводу стрічкового конвеєра Визначення потужності
Розрахунок виробничої потужності і планування виробничо-господарської діяльності ВАТ
© Усі права захищені
написати до нас