264

conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

  • Upload
    others

  • View
    23

  • Download
    1

Embed Size (px)

Citation preview

Page 1: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний
Page 2: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

1

І.М. Голінко, А.І. Кубрак

Моделювання та оптимізація

систем керування

Монографія

Кам’янець-Подільський

2012

Page 3: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

2

УДК 519.6

ББК 22.18

Г 60

Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний університет

харчових технологій)

Казак В.М., д.т.н., проф. (Національний авіаційний

університет)

Рекомендовано до видання Вченою Радою теплоенергетичного

факультету Національного технічного університету України

“Київський політехнічний інститут”

(протокол № 1 від 30.08.2012 року)

Голінко, І.М.

Г 60 Моделювання та оптимізація систем керування: монографія /

І.М. Голінко, А.І. Кубрак. – Кам‟янець–Подільський: ПП Буйницький,

2012. – 262 с.

ISBN 978-617-608-034-3

У монографії розглянуто ряд типових математичних моделей для

теплових об‟єктів автоматичного керування та деяких механічних систем з

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

передатні функції, перехідні, імпульсні, частотні та статичні

характеристики. Усе це доводиться до рівня комп‟ютерних програм на

Турбо Паскалі з візуалізацією результатів у вигляді графіків та годографів.

Автори вважають, що на сучасному етапі розвитку комп‟ютерної

техніки найбільш раціональним способом представлення динаміки об‟єктів

в системах керування (і об‟єктів з розподіленими параметрами в тому

числі) є масив ординат перехідної або (що еквівалентно) імпульсної

характеристики, який може використовуватися для розрахунку як

частотних характеристик так і перехідних процесів в системах керування.

Алгоритми оптимізації систем керування, що наводяться в роботі,

базуються на використанні інтегральних показників якості, які

обчислюються за масивом ординат перехідної характеристики системи. Усі

алгоритми доводяться до рівня демонстраційно-відлагоджувальних

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

систем керування з аналоговими та цифровими регуляторами.

Робота розрахована на науковців, інженерно-технічних працівників,

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

виробничих процесів.

ISBN 978-617-608-034-3 УДК 519.6

ББК 22.18

© І.М. Голінко, А.І. Кубрак, 2012

© «Рута», 2012

Page 4: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

3

Зміст

ВСТУП 5

1. МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ ОБ‟ЄКТІВ З

РОЗПОДІЛЕНИМИ ПАРАМЕТРАМИ 7

1.1. Динаміка температури в товстих теплоакумулюючих стінках 7

1.2. Динаміка температури у неізольованому стрижні 10

1.3. Динаміка температури в проточній ємкості з

товстими стінками 11

1.4. Динаміка температури в трубопроводі 12

1.5. Змійовиковий теплообмінник 14

1.6. Теплообмінник типу “труба в трубі” 16

1.7. Поперечні коливання струни 18

1.8. Поперечні коливання навантаженої нитки 21

1.9. Динаміка проточного датчика щільності рідини 23

1.10. Динаміка транспортера-витратоміра 24

2. ПЕРЕДАТНІ ФУНКЦІЇ ОБ‟ЄКТІВ З РОЗПОДІЛЕНИМИ

ПАРАМЕТРАМИ 28

2.1. Передатні функції товстих теплоакумулюючих стінок 28

2.2. Неізольований стрижень 33

2.3. Проточна ємність з товстими стінками 36

2.4. Трубопровід з тонкими стінками 37

2.5. Змійовиковий теплообмінник 39

2.6. Труба в трубі 40

2.7. Струна 43

2.8. Навантажена нитка 45

2.9. Проточний датчик щільності рідини 45

2.10. Транспортер-витратомір 46

3. ПЕРЕХІДНІ, ІМПУЛЬСНІ ТА ЧАСТОТНІ ХАРАКТЕРИСТИКИ 48

3.1. Розрахунок частотних характеристик за масивом ординат

імпульсної характеристики 48

3.2. Динамічні характеристики теплоакумулюючої стінки 55

3.3. Динаміка температури в неізольованому стрижні 60

3.4. Динаміка проточної ємкості 63

3.5. Трубопровід з тонкими стінками 66

3.6. Змійовиковий теплообмінник 68

3.7. Теплообмінник типу “труба в трубі” 70

3.8. Динаміка струни 74

3.9. Навантажена нитка 77

3.10. Проточний датчик щільності рідини 79

3.11. Транспортер-витратомір 80

4. СТАТИЧНІ РЕЖИМИ 83

4.1. Товста теплоакумулююча стінка 84

4.2. Неізольований стрижень 105

4.3. Проточна ємкість з товстими стінками 106

Page 5: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

4

4.4. Трубопровід з тонкими стінками 107

4.5. Змійовиковий теплообмінник 109

4.6. Прямоточний теплообмінник типу “труба в трубі” 111

4.7. Протиточний теплообмінник 114

4.8. Статика для струни, нитки та датчиків 116

5. КОМП‟ЮТЕРНА ОПТИМІЗАЦІЯ СИСТЕМ

АВТОМАТИЧНОГО КЕРУВАННЯ 118

5.1. Формування масиву ординат перехідної характеристики САК 119

5.2. “Ручний” пошук оптимального налагодження регулятора 127

5.3. Формування зображення поверхні показника якості в

просторі параметрів налаштування регулятора 130

5.4. Пошук оптимальної настройки ПІД регулятора методом

сканування зі змінним кроком 133

5.5. Пошук оптимуму із стартової точки 136

5.6. Оптимізація класичного ПІД-регулятора за інтегральними

показниками якості 139

5.7. Оптимізація налаштувань модифікованих ПІД-законів

керування із мінімізацією керуючого впливу 143

5.8. Часткова компенсація збурення шляхом введення інформації

про нього на регулятор 160

5.9. Оптимізація систем керування із проміжними імпульсними

сигналами 164

5.10. Оптимізація каскадної системи автоматичного керування 168

ЛІТЕРАТУРА 174

ДОДАТКИ 179

Додаток 1. Програмний модуль GodoGt 179

Додаток 2. Програма DemSt 182

Додаток 3. Програма DemStr 190

Додаток 4. Програма DemPrе 192

Додаток 5. Програма DemTr 197

Додаток 6. Програма DemZt 202

Додаток 7. Програма DemTrTr 208

Додаток 8. Програма DemStrn 216

Додаток 9. Програма DemNit 218

Додаток 10. Програма DemPdTr 221

Додаток 11. Програмний модуль OptHtd 223

Додаток 12. Програма DemOptHd 234

Додаток 13. Програма DemOptVs 236

Додаток 14. Програмний модуль OptCompV 238

Додаток 15. Програмний модуль OptImpVs 246

Додаток 16. Програма СascOpt 254

Page 6: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

5

ВСТУП

На сучасному етапі розвитку інформаційних технологій аналіз та

синтез систем автоматичного керування не мислиться без використання

комп‟ютерної техніки. Перший етап – моделювання об‟єкта керування.

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

об‟єкта диференціальним рівнянням (чи системою диференціальних

рівнянь). До цієї системи добавлялися рівняння елементів регулятора

(датчик, обчислювальний пристрій, виконавчий механізм), і отримана

таким чином система рівнянь досліджувалась аналітично. На жаль, знайти

розв‟язок задач у загальному випадку вдавалось лише для систем 2-го чи 3-

го порядку.

Черговим кроком була лінеаризація системи (якщо в ній були

присутні нелінійності) з наступним використанням перетворення Лапласа

та апарату передатних функцій (для детектуючих елементів) та (чи)

частотних характеристик. Для дослідження нелінійних систем

розроблялись і пропонувались спеціальні методи (метод малого параметра,

фазовий простір, гармонічна лінеаризація, тощо). Обмеження на обсяг

обчислень (трудомісткість) значно звужували можливості інженерних

розрахунків систем.

Доступність сучасних комп‟ютерів радикально змінила ситуацію з

розрахунком систем керування. Практично знято обмеження на

трудомісткість розрахунків. Розрахунки, які вимагали тижнів ручної праці

кваліфікованих фахівців, зараз можна виконувати за лічені секунди. При

наявності відповідного програмного забезпечення.

В якості моделі об‟єкта можна використовувати практично будь-яку

її форму, як-то: систему диференціальних рівнянь (в тому числі і в

частинних похідних), передатні функції задіяних у системі керування

каналів, перехідні та частотні характеристики. Зараз частіше всього

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

функцій (з можливим множником pe , що відображає ефект запізнювання

сигналу). У тому випадку, коли мова йде про ідентифікацію динамічних

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

з типових структур.

Щоб привести наявну інформацію про динаміку каналу до виду

дробово-раціональної передатної функції бажано мати алгоритми та їх

програмну реалізацію. Як правило, інформація про об‟єкт існує або у

вигляді системи диференціальних рівнянь (аналітичний метод) або у

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

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

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

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

Складніше із об‟єктами, в моделях яких враховується ефект просторової

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

Page 7: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

6

таких об‟єктів, то розраховувати на розробку універсального алгоритму

визначення їх передатних функцій (трансцендентних) та зведення їх до

дробово-раціонального виду не варто.

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

розподілених об‟єктів (розділ 1) та продемонстровано способи визначення

їх “точних” передатних функцій (розділ 2). Читач може пересвідчитись у

надзвичайній незручності такого підходу – складність, громіздкість,

наявність “екзотичних” функцій (експонент з аргументом під коренем

квадратним, функцій Бесселя і т.д. і т.п.). За нечисленними виключеннями

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

вирішити. Тому в інженерному плані такий підхід не є конструктивним.

Більш перспективним виглядає числове інтегрування системи

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

(розділ 3). Це супроводжується дискретизацією базової системи.

Комп‟ютер дозволяє використовувати достатньо малі періоди дискретизації

(як за просторовими координатами, так і за часом), щоб мінімізувати

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

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

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

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

правило, підбором відповідної величини кроків та їх співвідношення.

Користувач програми має змогу активно втручатись в процес розв‟язку

(варіювати кроки, їх співвідношення та співставляти між собою отримувані

розв‟язки). Враховуючи високу швидкодію сучасних комп‟ютерів (окремий

варіант розв‟язку займає частки або одиниці секунд) – це необтяжливо.

Перехідна характеристика, отримана у вигляді достатньо детального (з

малим кроком) масиву її ординат, легко перераховується у імпульсну

характеристику, яку потім зовсім нескладно перерахувати в частотні

характеристики у будь-якій зручній для користувача формі.

Якщо модель досліджуваного об‟єкта є нелінійною, то для її

лінеаризації треба мати статичний режим, який приймається за базовий (в

околі якого виконується лінеаризація). Розрахунку статичних

характеристик об‟єктів з розподіленими параметрами присвячено розділ 4.

Алгоритми оптимізації систем автоматичного керування, що

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

якості. Останні визначаються за масивом ординат перехідної

характеристики системи. В розділі 5 наводяться програмні засоби для

параметричної оптимізації одноконтурних і каскадних систем, систем з

проміжними імпульсами, систем з компенсацією збурень. Усі алгоритми

доведено до рівня демонстраційно-відлагоджувальних програм на Турбо

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

для оцінки працездатності та ефективності відповідних алгоритмів так і для

практичних розрахунків у процесі дослідження, проектування та

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

Page 8: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

7

1. МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ ОБ’ЄКТІВ З

РОЗПОДІЛЕНИМИ ПАРАМЕТРАМИ

Об‟єктів з чітко вираженою просторовою розподіленістю параметрів

існує стільки і різних, що розглянути їх в одній книзі немає жодної

можливості. Така задача і не ставиться. Єдине, що автори взяли за мету, –

це розглянути ряд прикладів, характерних для технологічних об‟єктів – з

одного боку, і відносно нескладних – з іншого. Це матеріал для

початкового ознайомлення з відповідними типами моделей та способами їх

формування. При дослідженні конкретних об‟єктів треба відображати в

моделі технічні, фізичні, хімічні, гідродинамічні, теплотехнічні та інші

особливості даного об‟єкта. Це, зрозуміло, ускладнить модель, але і

зробить (має зробити !) її точнішою. Щодо рівня адекватності моделі

об‟єкту – це окрема дуже непроста проблема. І вона стає ще більш

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

про адекватність моделі розв‟язуваній задачі (де, як, у яких умовах і для

розв‟язання яких задач, якими методами, з яким рівнем точності планується

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

1.1. Динаміка температури в товстих теплоакумулюючих стінках

Обмежимось розглядом одновимірної задачі теплопровідності в

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

даному випадку як відомо [49] має вигляд

xx

k

xa

t

2

2

. (1.1)

Тут – температура; t – час; x – просторова координата; c

a

коефіцієнт температуропровідності, де, в свою чергу, – коефіцієнт

теплопровідності, – щільність матеріалу, с – коефіцієнт теплоємності; k –

коефіцієнт кривизни, що характеризує систему координат моделі:

.стінкисферичноїдля2

,оїциліндричндля1

,плоскоїдля0

k

Просторова координата х – це відстань (вглиб стінки) від “лівої”

0x поверхні плоскої стінки. При товщині стінки “права” поверхня

характеризується x .

Для криволінійної (циліндричної чи сферичної) стінки х – це

поточний радіус.

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

радіуса як r. Змінна r може приймати значення від 0rr (внутрішній

Page 9: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

8

радіус) до 1rr (зовнішній радіус). Коли 0r маємо відповідно суцільний

циліндр чи кулю.

Щоб говорити про розв‟язок (однозначний) диференціального

рівняння (1.1) треба зафіксувати початковий стан (початкову умову) у

вигляді

100 чи0),(| rxrxxft . (1.2)

Це, власне, температурне поле стінки в момент часу, прийнятий за

початок відліку t .

В залежності від умов теплообміну на границях тіла (на поверхнях,

що його обмежують) задаються так звані граничні умови. Будемо

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

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

Диференціальне рівняння для плоскої стінки (k = 0) виглядатиме так

0,0,2

2

tx

xa

t

. (1.3)

Граничні умови I-го роду на “лівій” поверхні

)(| 0 tTlx . (1.4)

Відповідно, на “правій” поверхні

)(| tTrx . (1.5)

Тут )(tTl і )(tTr – температури на “лівій” та “правій” поверхнях як

задані функції часу.

Граничні умови II роду для “лівої” поверхні

)(0

tQx

l

x

, (1.6)

для “правої” поверхні

)(tQx

r

x

. (1.7)

Тут )(tQl

і )(tQr – щільності теплових потоків (через одиницю

поверхні за одиницю часу) на відповідних поверхнях. За додатній напрямок

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

Граничні умови III роду (конвективний теплообмін)

00

0

|)(

xsl

x

tTx

, (1.8)

)(|1 tTx

srx

x

. (1.9)

Тут 0 і 1 – відповідно коефіцієнти теплообміну на “лівій” та

“правій” поверхнях стінки, )(tTsl і )(tTsr – температури теплоносіїв, що

омивають стінку при 0x та x .

Page 10: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

9

Існують ще граничні умови IV роду – умови ідеального теплового

контакту між двома твердими тілами (стінками), але ж ми маємо справу

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

Для криволінійних стінок диференціальне рівняння (1.1) будемо

записувати у вигляді

0,, 102

2

trrr

rr

k

ra

t

, (1.10)

де, як уже згадувалося, k дорівнює 1 або 2.

Граничні умови I роду

)(|0

tTrr , (1.11)

)(|1

tTzrr , (1.12)

де )(tTv і )(tTz – температура на внутрішній та зовнішній поверхнях

циліндра чи кулі.

Граничні умови II роду

)(

0

tQr rr

, (1.13)

)(

1

tQr

z

rr

. (1.14)

Граничні умови III роду

0

0

|)(0 rrs

rr

tTr

, (1.15)

)(|1

1

1 tTr

szrr

rr

. (1.16)

Тут 0 і 1 – відповідно коефіцієнти конвективного теплообміну на

внутрішній та зовнішній поверхнях стінки, )(tTs і )(tTsz – температури

середовищ, що омивають стінку всередині та зовні.

Зрозуміло, що на кожній з поверхонь може мати місце будь-який

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

до 9 комбінацій граничних умов.

Окремо варто розглянути випадок, коли для криволінійної стінки

0r (суцільний циліндр чи куля).

Оскільки ми розглядаємо одновимірну задачу, то для осі циліндра

(центра кулі) матиме місце умова симетрії

00

rr

. (1.17)

Page 11: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

10

1.2. Динаміка температури у неізольованому стрижні

Розглянемо стрижень (для конкретності з перерізом у вигляді

кругового циліндра), у якого співвідношення між радіусом r та довжиною l

є відносно малим lr .

За таких умов у першому наближенні приймемо, що температура в

межах поперечного перерізу може вважатись практично незмінною (в

напрямку радіуса), тоді як залежність її від координати вздовж осі є

суттєвою (враховується). Розрахункову схему даного об‟єкту показано на

рис. 1.1.

Рис. 1.1. Розрахункова схема “тонкого” стрижня

Будемо вважати, що бокова поверхня та лівий торець омиваються

теплоносієм з температурою θos

, теплообмін на цих поверхнях

характеризується коефіцієнтом теплообміну . “Правий” торець

вважатимемо теплоізольованим.

Запишемо рівняння теплового балансу для елементарного об‟єму

стрижня між поперечними перерізами х та (х+dx).

0000000000 cdxSt

dxpdxx

Sxx

Sx

S os

.

(1.18)

Тут 42

00 dS – площа поперечного перерізу стрижня ( 0d – діаметр),

00 dp

– периметр поперечного перерізу, 0 – коефіцієнт

теплопровідності, 0 – щільність матеріалу, 0c – коефіцієнт теплоємкості,

– температура стрижня, os – температура оточуючого середовища, –

коефіцієнт теплообміну між стрижнем та оточуючим середовищем (не

враховуючи “правого” торця).

Після спрощення диференціальне рівняння (1.18) може бути

представлене у вигляді

osbx

at

2

2

, (1.19)

де .;000

0

00

0

cS

pb

ca

Гранична умова на лівому (оголеному) торці стрижня

d0

x

l

dx

Page 12: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

11

0

0

x

os

xx

. (1.20)

На правому торці (умова ідеальної теплоізоляції) маємо

00

lxx

, або після скорочення на – 0

0

lxx

. (1.21)

1.3. Динаміка температури в проточній ємкості з товстими стінками

Нехай розрахункова схема розгляданого об‟єкта має вигляд,

показаний на рис 1.2.

Рис. 1.2. Розрахункова схема проточної ємкості

Тепловий баланс для теплоносія в ємкості

000

000000 cGdt

dFcQcQ

x

stinp

. (1.22)

Тут Q0 – витрата теплоносія через ємкість (вважаємо її однаковою на вході і

на виході з ємкості), с0 – теплоємність теплоносія, θinp

– температура на

вході у ємкість, 00 , F

– коефіцієнт теплообміну між теплоносієм та

внутрішньою поверхнею стінки та площа внутрішньої поверхні стінки. G0 –

кількість (маса) теплоносія в ємності, 0x

st – температура стінки на її

внутрішній поверхні.

Після спрощення рівняння (1.22) набуває вигляду

010

x

stinp bbdt

dT

, (1.23)

де 01

0000

000

0000

00 1;; bbFcQ

cQb

FcQ

cGT

.

Для простоти стінку будемо розглядати як плоску (нехтуючи її

кривизною за умови, що геометричні розміри ємкості значно перевищують

товщину стінки δ. Тоді диференціальне рівняння теплопровідності буде

x

Page 13: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

12

x

xa

t

st

st 0,2

2

, (1.24)

де stst

stst

сa

;

ststst с,,

– відповідно коефіцієнт теплопровідності,

щільність та теплоємність матеріалу стінки.

Граничні умови для (1.24) будуть (з урахуванням сказаного вище)

0

0

0

x

st

xx

(1.25)

та

os

x

st

xx

1 . (1.26)

1.4. Динаміка температури в трубопроводі

Розрахункова схема об‟єкта представлена на рис. 1.3

Рис 1.3. Розрахункова схема для температурного режиму

трубопроводу з тонкими теплоакумулюючими стінками

Якщо прийняти поршневий режим руху теплоносія в трубі (коли усі

частинки теплоносія мають однакові швидкості w0, що відповідає

розвиненому турбулентному режиму руху) і вважати, що температура

теплоносія в межах поперечного перерізу дорівнює θ (усереднена в межах

перерізу), то елементарний тепловий баланс для елемента теплоносія між

перерізами при х та (x+dx) можна представити так

00000000000000000 cdxSt

dxpdxcSwx

cSwcSw st

. (1.27)

Після спрощення отримуємо

st

xwT

tT

000 , (1.28)

де 00

0000

p

cST

.

D1

dx x

D0

Page 14: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

13

Для елемента стінки труби між перерізами при х та (х+dx) відповідно

маємо stosstst cdxSt

dxpdxp 1111100

,

або osst

st

bbt

T

101

, (1.29)

де 01

1100

000

1100

1111 1;; bb

pp

pb

pp

cST

.

У формулах для Т0, Т1, b0 та b1 використовуються такі позначення:

11021100

200 ,4/,,4/ DpSDSDpDS , де, в свою чергу:

10 , DD – внутрішній та зовнішній діаметр труби; 10 , – щільність

теплоносія та матеріалу труби; 10 ,cc – відповідно коефіцієнти

теплоємкості;

10 , – коефіцієнти теплообміну на внутрішній та зовнішній поверхнях

труби; st , та os – температура теплоносія, стінки (функції від х) та

оточуючого середовища (від х не залежить); inp – температура теплоносія

на вході в трубу (при х=0); 0w – лінійна швидкість теплоносія.

Гранична умова для теплоносія

)(| 0 tinpx . (1.30)

При виведенні рівнянь (1.28) та (1.29) не враховувались перетоки

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

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

тепло за рахунок турбулізації (перетворення кінетичної енергії в теплову).

Page 15: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

14

1.5. Змійовиковий теплообмінник

Його ще називають кожухотрубним. Це проточна ємкість, через яку

проходять труби з теплоносієм. Розрахункова схема показана на рис 1.4.

Рис. 1.4. Розрахункова схема змійовикового теплообмінника

Приймемо, що теплоносії у трубах та у міжтрубному просторі не

змінюють свого фазового стану. Для конкретності вважатимемо, що

обидва теплоносії є рідинами (їх щільність практично не залежить від

температури та тиску в межах очікуваних діапазонів температур).

Режим руху теплоносія в трубах приймається за поршневий (режим

ідеального витиснення), теплоносій у міжтрубному просторі ідеально

перемішується.

Виділимо елементарний об‟єм на відстані х від входу теплоносія в

трубу (змійовик) шириною dx. Запишемо рівняння теплового балансу для

теплоносія в трубі в межах даного об‟єму.

0000

1000

00000

00000

00000 cdxS

tdxpdxcSw

xcSwcSw

.

Тут 10 , – температури теплоносія в трубі та стінки труби (функції від

координати х та часу t);

Після спрощення останнє рівняння може бути зведене до вигляду

x dx

Page 16: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

15

,100

00

0

0

xwT

tT (1.31)

де 00

0000

p

cST

. Тут 00 , c – теплофізичні параметри теплоносія в трубі,

00200 ,4 DpDS – площа поперечного перерізу труби по теплоносію

та внутрішній периметр труби, 0D – внутрішній діаметр труби, 0w – лінійна

швидкість теплоносія, 0 – коефіцієнт теплообміну між теплоносієм та

стінкою труби.

Звертаємо увагу читача на аналогію між моделлю для змієвика та

трубопроводу, розглянутому в п. 1.4.

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

аналогічною такій в п. 1.4.

21

00

11

1

bbt

T

, (1.32)

де .,4,1,, 11020101

1100

000

1100

1111 DpSDSbb

pp

pb

pp

cST

Тут 1D - зовнішній діаметр труби (змійовика); 1 – коефіцієнт теплообміну

між зовнішньою поверхнею труби та теплоносієм у міжтрубному

середовищі; 11,c – теплофізичні характеристики матеріалу труби;

1 –

температура стінки; 2 – температура теплоносія у міжтрубному

середовищі (в ємкості).

Елементарний тепловий баланс для теплоносія в ємкості

222

3222

0

2111

222

,222 cG

dt

dFdxpncQcQ

linp ,

де Q2, G2 – витрата теплоносія (масова) через ємкість та його кількість

(маса) в ємкості; с2 – масова теплоємність теплоносія в ємкості; n –

кількість паралельно включених трубок (змійовиків); l – довжина окремої

трубки; 22 , F – коефіцієнт та площа поверхні теплообміну між

теплоносієм в ємкості та внутрішньою стінкою корпусу; 3 – температура

корпуса.

Останнє рівняння після спрощення приводиться до вигляду

l

inpbbdxl

b

dt

dT

0

,24

33

1222

2

, (1.33)

І, нарешті, тепловий баланс для стінки корпуса

333

333

3222 cG

dt

dFF os

.,1

,,,де

11324

221122

223

221122

112

221122

222

lnpFbbb

FFcQ

Fb

FFcQ

Fb

FFcQ

cGT

Page 17: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

16

або після спрощення

osbbdt

T

62

53

3

3

, (1.34)

де .1,, 56

3322

225

3322

333 bb

FF

Fb

FF

cGT

Тут 33, cG – маса та коефіцієнт теплоємності матеріалу корпуса;

33,F – коефіцієнт та площа поверхні теплообміну між корпусом та

оточуючим середовищем; os ,3 – температура корпуса та оточуючого

середовища.

Отриману систему рівнянь треба ще доповнити граничною умовою

для рівняння (1.31), а саме

)(,0

0

0 tinp

x

. (1.35)

1.6. Теплообмінник типу “труба в трубі”

Розглядаємо теплообмінник, в якому два теплоносії (для

конкретності – рідини) рухаються вздовж спільної осі в одному (прямотік)

або в протилежному напрямках (протитік).

Розрахункова схема прямоточного теплообмінника показана на рис.

1.5.

Рис 1.5. Розрахункова схема прямоточного теплообмінника типу

труба в трубі

Приймаємо ті ж самі припущення, що і для окремо взятої труби

(п.1.4). Маємо

100

00

0

0

xwT

tT , (1.36)

D1

dx x

D0

D3

D2

l

Page 18: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

17

21

00

11

1

bbt

T

, (1.37)

33

12

22

22

2

2

bbx

wTt

T

, (1.38)

osbbt

T

52

43

3

3

, (1.39)

з граничними умовами inp

x

,0

0

0

, (1.40)

inp

x

,2

0

2

. (1.41)

Тут позначено:

.1

,,1,,1,

;,,,

45

3322

22423

2211

11201

1100

000

3322

3333

2211

2222

1100

1111

00

0000

bb

pp

pbbb

pp

pbbb

pp

pb

pp

cST

pp

cST

pp

cST

p

cST

Тут, в свою чергу:

.,4

,,4;,4;,4

332233

221222110

21100

200

DpSDS

DpSDSDpSDSDpDS

D0, D1, D2, D3 – діаметри труб як показано на рис 1.5. При іншій геометрії

формули для площ поперечних перерізів та периметрів треба

модифіковувати.

3210 ,,, – коефіцієнті теплообміну; 33221100 ,,,,,,, cccc –

теплофізичні характеристики послідовно теплоносія у внутрішній трубі

(індекс 0), стінки внутрішньої труби (індекс 1), теплоносія між трубами

(індекс 2), зовнішньої труби (індекс 3).

У випадку протитоку замість рівняння (1.38) матимемо

33

12

22

22

2

2

bbx

wTt

T

(1.42)

та замість (1.41) гранична умова буде inp

lx

,22 , (1.43)

де l – довжина теплообмінника (труб).

Page 19: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

18

1.7. Поперечні коливання струни

Струною будемо називати натягнену нитку, яка не чинить опору на

згин (гнучку). Струна закріплена на кінцях тим чи іншим чином. Натяг

(сила натягу) Ts вважається незмінною під час поперечних

(перпендикулярних до осі струни) коливань. Амплітуда коливань

очікується малою (амплітуда відхилення точки струни від її положення

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

Вважатимемо також, що у положенні рівноваги струна має форму прямої.

Це відповідає припущенню, що вага струни є малою порівняно з силою

натягу. Маса струни розподілена рівномірно вздовж її осі. Розрахункова

схема наведена на рис 1.6.

Рис 1.6. Розрахункова схема малих поперечних коливань струни.

Розглянемо баланс сил, що діють на елемент струни, що знаходиться

між точками (перерізами струни) з координатами х та (х+dx) тобто

довжиною dx.

На лівий кінець виділеного елемента струни діє сила натягу Ts,

направлена вліво. Отже, відповідна складова (у проекції на вісь у) у балансі

сил, прикладених до даного елемента, виглядає так

sinsT ,

де – кут нахилу дотичної до струни у точці х (сила натягу Ts діє вздовж

дотичної до струни).

Ми зазначали вище, що коливання (відхилення від положення

рівноваги – осі х) очікуються малими, отже, кут – малий, а для малих

tgsin . А tg , в свою чергу, x

y

tg . А коли так, то складову

sinsT можна представити як x

yTs

.

Складову від проекції сили натягу, прикладеної до “правого” кінця

елемента представимо, як ми це робили неодноразово раніше, у вигляді

x

y

dx x

ky’

fs

Ts Ts

l

Page 20: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

19

перших двох доданків у представленні компоненти x

yTs

рядом Тейлора.

Враховуючи щойно сказане, а також силу опору рухові струни

(вважатимемо її прямо пропорційною швидкості елементів струни), а також

зовнішню силу s

f , розраховану на одиницю довжини струни, і сил інерції

(за принципом Даламбера) отримуємо

dxfdxt

ykdx

x

yT

xt

yT

t

yT

t

ydxm sssss

2

2

.

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

sss f

x

yT

t

yk

t

ym

2

2

2

2

.

Ділимо на sm

s

s

fmx

yc

t

ye

t

y 12

22

2

2

, lx 0 , ,0t (1.44)

де sm

ke ,

s

s

m

Tc .

Якщо не враховувати опір рухові струни ( 0k , отже, і 0e ) і

вважати рівними нулю (відсутніми або відносно слабкими) зовнішні сили

0sf , то рівняння (1.44) перетворюється на класичне хвильове рівняння

2

22

2

2

x

yc

t

y

, lx 0 , 0t . (1.45)

В якості початкових умов для (1.44), (1.45) прийнято задавати форму

струни при 0t xfy

t 00

(1.46)

та швидкості точок струни

).(1

0

xft

y

t

(1.47)

Граничні умови частіше всього задають так.

Гранична умова I роду

)(0

tyy lx

(1.48)

або, відповідно,

).(tyy rlx

(1.49)

Цю граничну умову ще називають умовою Діріхле.

Гранична умова ІІ роду

)(0

tFx

yT l

x

s

(1.50)

та

)(tFx

yT r

lx

s

. (1.51)

Page 21: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

20

Тут )(та)( tFtF rl – сили, що прикладені до “лівого” та “правого”

кінця струни у напрямку осі y (перпендикулярно до осі струни). Фізично це

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

вісь якої співпадає (при х=0) або паралельна до осі y (при х=l), і до цієї

направляючої прикладена зовнішня сила )(та)( tFtF rl .

Рівняння (1.50) та (1.51) є умови врівноважування прикладеної сили

проекцією сили натягу Ts (за додатній напрямок сил )(та)( tFtF rl прийнято

напрямок зростання y). Умови типу (1.50) та (1.51) називають умовами

Неймана.

Граничні умови ІІІ роду – умови Робена записуються так

00

0

)(

xkl

x

s ytycx

yT , (1.52)

lxkr

lx

s ytycx

yT

)(1 . (1.53)

Схематично умови (1.52) та (1.53) можна собі уявити так як показано

на рис. 1.7.

Рис 1.7. Граничні умови ІІІ роду на кінцях струни

Фізично граничні умови ІІІ роду можна собі уявляти так.

Відповідний кінець струни кріпиться до “кільця”, що рухається без тертя

вздовж направляючої, вісь якої співпадає (при х=0) або паралельна до осі y

(при х=l). До цього ж кільця кріпиться один кінець пружини жорсткості С0

чи С1 відповідно, тоді як інший кінець пружини зміщується вздовж тієї ж

таки направляючої на величину )(tykl чи )(tykr .

Можна показати, що диференціальним рівнянням типу (1.44) можна

описувати поздовжні коливання в‟язко-пружного стержня [64], крутильні

коливання валу [64, 65], коливання тиску у трубопроводі [4], зміну напруги

в електричних лініях [3] та ряд інших фізичних об‟єктів.

y

x

ykr(t)

C1

Ts

0 x=l

y

x

ykl(t)

C0

Ts

0

a) б)

Page 22: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

21

1.8. Поперечні коливання навантаженої нитки

При виведенні диференціального рівняння струни її натяг Ts

визначався зовнішнім чинником, а саме ступенем її попередньої деформації

(розтягнення) перед фіксацією її кінців у точках х = 0 та х = l.

А тепер розглянемо однорідну гнучку нитку, маса одного метра якої

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

та тягаря масою m1 на її нижньому кінці. На нитку діє поперечна сила

txf , (в розрахунку на 1 м її довжини). Довжина нитки l вважається

незмінною. Помістимо початок системи координат в точку підвісу

(точніше, в точку, що відповідає положенню точки підвісу в усталеному

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

в положенні рівноваги, вісь y – перпендикулярна до осі х. Будемо вважати,

що очікувані коливання будуть відбуватись в межах площини xоy

(поперечна сила f діє саме в цій площині). Розрахункова схема показана на

рис. 1.8.

Рис 1.8. Розрахункова схема навантаженої нитки

Виділимо на відстані х від точки підвісу ділянку довжиною dx та

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

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

так gmxlmT nn 1 .

Саме ж рівняння балансу сил буде виглядати так

2

2

),(t

ydxmdxtxfdx

t

ykdx

x

yT

xdx

dyT

dx

dyT nnnn

.

Після підстановки значення Tn та спрощення останнє рівняння набуває

вигляду

x m1g

f1(t)

y

x

dx

Tn

Tn

f (x,t)

mndx

Page 23: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

22

),(1

2

21

2

2

txfmx

y

x

yxl

m

mg

t

y

m

k

t

y

nnn

. (1.54)

Тут g – прискорення сили тяжіння, k – коефіцієнт опору рухові нитки (у

розрахунку на одиницю її довжини).

В якості початкових умов можуть служити

)(0

xyy nt

тобто форма нитки при t=0, а також

)('0

xyt

yn

t

.

Це швидкості точок нитки в початковий момент руху.

Граничні умови стосовно верхнього кінця нитки показано на рис. 1.9

Рис 1.9. Граничні умови для верхнього кінця нитки

а) І роду, б) ІІ роду, в) ІІІ роду

Отже, для І роду

)(0

tyy vx

, (1.55)

для ІІ роду

)(0

1 tfx

yglmm v

x

n

, (1.56)

для ІІІ роду

0

0

1 )(

xkvv

x

n ytycx

yglmm . (1.57)

Для тягаря на нижньому кінці нитки баланс сил виглядає так

lxlxlx t

ym

t

yktf

x

ygm

2

2

1111 )( . (1.58)

Тут )(1 tf – сила, прикладена до тягаря m1 (в проекції на вісь у).

x

y yv(t)

0

x

y fv(t) 0

(m1+mnl)g

x

y 0

(m1+mnl)g

yvk(t)

a) б) в)

cv

Page 24: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

23

1.9. Динаміка проточного датчика щільності рідини

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

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

зображена на рис 1.10.

Рис 1.10. Схема проточного датчика щільності рідини

Щільність (для конкретності розглядаємо вагову щільність)

визначається за перепадом тиску (p1–p2) у зазначених точках відбору. Отже,

вихід датчика

h

ppy 21 , (1.59)

де h – відстань по вертикалі між точками відбору тиску.

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

усталеного режиму стрибком змінимо щільність на вході в датчик (в

момент t=0 через переріз труби з координатою х=0 піде рідина, щільність

якої, наприклад, збільшиться на ). На протязі часу t0 , де 0/ wh ,

тиск Р1 буде зростати за законом

xp 1

або враховуючи, що швидкість руху рідини дорівнює w0, то

twp 01 ,

тоді як тиск р2 прирощення не матиме. Починаючи з моменту 0/ wh

зростання р1 почне компенсуватись відповідним зростанням р2, отже

різниця між ними (а разом з цим і зміна вихідного сигналу датчика)

стабілізується.

Отже, можна записати, що прирощення виходу датчика матиме

характер

.при,

,0при,

0

0

0

w

ht

w

ht

h

tw

y

Page 25: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

24

Це, власне, формула для кривої розгону датчика (реакція на стрибок

величиною ). Коли вважати, що =1 (одиничний стрибок), то

матимемо перехідну характеристику

.при,1

,0при,

)(

0

0

0

w

ht

w

htt

h

w

th (1.60)

Отже, диференціальне рівняння датчика ми не отримали. Він не

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

формулу (1.60) для перехідної характеристики, яка має вигляд, показаний

на рис 1.11.

Рис 1.11. Перехідна характеристика датчика

1.10. Динаміка транспортера-витратоміра

Для вимірювання витрати сипучих матеріалів, що переносяться

транспортером, можна скористатись схемою, показаною на рис.1.12.

Рис 1.12. Схема транспортера-витратоміра

Будемо розглядати транспортер як шарнірну балку, що опирається на

нерухомі опори в точках х=0 та х=l (це l/2+l/2). Середня точка (шарнір)

урівноважується силою F, величина якої є пропорційною витраті матеріалу

через транспортер. Цілком очевидно, що сила F відраховується від її

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

тепер, що транспортер рівномірно заповнений матеріалом висотою h,

h(t)

t

1

t=h/w0 0

Page 26: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

25

шириною b, щільністю . Враховуючи симетричність конструкції силу F

можна розкласти на дві одинакові складові: F1, яка врівноважує ліву

половину балки, та відповідно F2, що врівноважує праву половину де,

F1+F2=F.

Тоді для лівої секції балки можна записати рівняння моментів

відносно точки А (х = 0). Це буде

xbhdxl

Fl

2/

0

12

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

.

2 2/

0

1 l

xdxbhl

F

Після інтегрування матимемо

442

2 2

1

lbhlbh

lF

.

Враховуючи симетричність конструкції можна записати

22 1

lbhFF

. (1.61)

Якщо швидкість руху транспортера w0, то в усталеному режимі при

рівномірному навантаженні висотою h (при ширині b) та щільності

матеріалу витрата через транспортер буде

bhwQ 0 .

Співставляючи останній вираз з (1.61) отримуємо

l

FwQ 02 . (1.62)

Це рівняння , що виражає витрату Q через силу, яку транспортер

розвиває на опорі В (в усталеному режимі).

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

порожній до цього транспортер стрибкоподібно (від 0 до h) збільшиться

висота матеріалу, що поступає на нього. На відрізку 20 t ( 2 - час

необхідний матеріалу, щоб дійти від точки А до точки В – пройти першу

секцію), 0wl матимемо xhdxbl

Fx

0

12

або l

xbhxbh

lF

22

12

2 .

Враховуючи, що х =w0 t можна переписати

20,

2

2

1

t

ltbhF . (1.63)

При 2t (або , що еквівалентно 2lx ) остання формула дає

421

lbhF

t

. (1.64)

Page 27: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

26

На відрізку часу t2 (тобто при lxl 2 ) компонента F1

залишається сталою на рівні формули (1.64), тоді як друга компонента F2

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

нульовим, стане такою, яка має задовольняти рівняння суми моментів

відносно С (для другої секції) xlbhdxl

Fx

l

2

22

,

звідки

4222

2 22

2

lxlxlbh

lF .

Спрощуємо

822

2 222

2

lxllxbh

lF ,

або

l

xlxbhF

28

32

2

2 .

Сумарно разом з F1 з (1.64) маємо

l

xlxbh

lbhF

28

32

4

2

,

або

2

2

28

34

2

1

2 l

x

l

xlbhF

.

Зводимо подібні

142

2 2

2

l

x

l

xlbhF

. (1.65)

При х=l 2

1422

lbhlbhF

,

що співпадає з (1.61) як і має бути.

Враховуємо що x=w0t, тоді (1.65) можна представити так

142

2

2

ttlbhF , (1.66)

де, як уже згадувалось 0wl . Отже, крива розгону транспортера має

вигляд

.,2

,2

,1422

,2

0,22

2

2

tlbh

tttlbh

ttlbh

F

Якщо прийняти за F0 значення F у формулі (1.61), тобто взяти

Page 28: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

27

20

lbhF

,

(1.67)

то

.,1

,2

,142

,2

0,2

2

2

0

t

ttt

tt

F

F (1.68)

Формулу (1.68) можна розглядати як нормовану (до одиничного

коефіцієнта передачі) перехідну характеристику транспортера.

При 2

t

2

12

22

2

t

th .

Те ж саме 2

112

2

1142

2 2

2

t

tth .

Це підтверджує неперервність кривої h(t) в точці 22 tlx .

Графік нормованої перехідної характеристики показано на рис. 1.13

Рис. 1.13. Нормована перехідна характеристика транспортера-

витратоміра

Розглянутий нами набір об‟єктів (елементів) з розподіленими

параметрами обумовлений бажанням показати характерні особливості

таких об‟єктів, підходи до їх моделювання. Це, можна сказати, перше

наближення до математичного моделювання динаміки подібних об‟єктів.

hн(t)

t

1

1/2

0

Page 29: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

28

2. ПЕРЕДАТНІ ФУНКЦІЇ ОБ’ЄКТІВ З РОЗПОДІЛЕНИМИ

ПАРАМЕТРАМИ

Якщо математична модель динамічного об‟єкта є лінійною

(лінеаризованою), то дуже зручною формою представлення його

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

зображення за Лапласом від його вихідного сигналу до зображення

відповідного йому вхідного за нульових початкових умов. Для об‟єктів з

зосередженими параметрами передатні функції є дробово-раціональними

тобто представляють собою відношення двох поліномів від р (комплексної

змінної у формулі перетворення Лапласа). Для об‟єктів з розподіленими

параметрами передатні функції є трансцендентними, у чому читач може

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

2.1. Передатні функції товстих теплоакумулюючих стінок

Розглянемо для початку алгоритм визначення передатних функцій

плоскої стінки, що описується диференціальним рівнянням (1.3), а саме

.0,0,2

2

tx

xa

t

(2.1)

Для конкретності приймемо граничну умову ІІІ роду (1.6) на лівій

поверхні

00

0

)(

xsl

x

tTx

(2.2)

та граничну умову ІІ роду (1.7) (а конкретно, умову ідеальної теплоізоляції)

на правій поверхні

.0

xx

(2.3)

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

Фізично це означає, що відлік змінних ведеться від усталеного режиму,

прийнятого за базовий (в околі якого визначаються динамічні

характеристики і передатні функції, зокрема). Отже, в процесі визначення

передатних функцій будемо за умовчанням вважати початкові умови

нульовими.

Виконаємо перетворення Лапласа над (2.1), (2.2) та (2.3)

02

2

a

p

dx

d , (2.4)

00

0

xsl

x

Tdx

d

, (2.5)

Page 30: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

29

.0

xdx

d (2.6)

Тут dte pt

0

, dtetTT ptslsl

0

.

Диференціальне рівняння у частинних похідних (2.1) в результаті

перетворення Лапласа перетворилось на звичайне диференціальне рівняння

(2.4) зі сталими коефіцієнтами, однорідне, йому відповідає

характеристичне рівняння

,02 a

pr (2.7)

яке має два прості корені

.2,1 a

pr (2.8)

Отже, розв‟язок (2.4) можна представити в формі

a

px

a

px

eCeC

21

, (2.9)

де C1 і C2 – коефіцієнти (сталі інтегрування), які мають бути підібрані так,

щоб задовольняти граничні умови (2.5) та (2.6)

.0

,)(

21

21021

a

p

a

p

sl

eCeC

CCTCCa

p

Отриману систему рівнянь відносно C1 та C2 перепишемо у вигляді

.0

,11

21

0

2

0

1

a

p

a

p

sl

eCeC

Ta

pC

a

pC

За правилом Крамера маємо

a

p

a

p

a

p

sl

ee

a

p

a

p

e

a

pT

C

;

1;1

;0

1;

00

0

1 ;

a

p

a

p

a

p

sl

ee

a

p

a

p

e

Ta

p

C

;

1;1

0;

;1

00

0

2 .

Підставляємо отримані значення C1 та C2 в (2.9)

Page 31: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

30

a

p

a

p

a

px

sla

px

sl

ea

pe

a

p

eTeT

00

11

.

Останній вираз можна представити так

a

p

a

p

a

p

a

p

a

px

a

px

sl

eea

pee

eeT

0

.

Ділячи ліву і праву частини отриманого виразу на slT отримаємо

передатну функцію каналу slT

a

p

a

p

a

p

a

px

xpWslT

shch

ch

,

0

, . (2.10)

Задаючи інші варіанти граничних умов можна отримати передатні

функції стінки для інших каналів [25].

Як уже відзначалось раніше, передатна функція (2.10) є

трансцендентною. Трансцендентними, очевидно, будуть і передатні

функції інших каналів даного об‟єкта.

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

рівняння (1.10) при k=1.

0,,1

102

2

trrr

rrra

t

(2.11)

з граничними умовами, наприклад, такими

0

0

0 rrsv

rr

tTr

, (2.12)

0

1

rrr

. (2.13)

Після перетворення за Лапласом отримуємо

01

2

2

a

p

dr

d

rdr

d, (2.14)

0

00

rrsv

rr

Tdr

d

, (2.15)

0

1

rrdr

d. (2.16)

Page 32: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

31

Виконаємо заміну змінних r на apxr та на y в

диференціальному рівнянні (2.14). Тоді після спрощення матимемо

01

2

2

ydx

dy

xdx

yd. (2.17)

Це окремий випадок (при m=0) так званого модифікованого рівняння

Бесселя [49]

011

2

2

2

2

y

x

m

dx

dy

xdx

yd. (2.18)

Розв‟язок (2.18) прийнято представляти у вигляді

xKCxICy 0201 , (2.19)

де I0(x) та K0(x) – модифіковані функції Бесселя І та ІІ роду нульового

порядку. Повертаємось до змінних r та в (2.19).

a

prKC

a

prIC 0201 . (2.20)

Підставляємо (2.20) в (2.15) та (2.16)

.0

,

112111

002001012011

0

a

prKC

a

prIC

Ta

prKC

a

prIC

a

prK

a

pC

a

prI

a

pC sv

(2.21)

Тут I1(x) та K1(x) - модифіковані функції Бесселя першого порядку. Вони

пов‟язані з функціями I0(x) та K0(x) співвідношеннями:

xIdx

xdI1

0 ,

xKdx

xdK1

0 .

Перегруповуємо доданки в (2.21)

.0

,

112111

01

0

00201

0

001

a

prKC

a

prIC

Ta

prK

a

p

a

prKC

a

prI

a

p

a

prIC sv

Останню систему розв‟язуємо за правилом Крамера

Page 33: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

32

a

prK

a

prI

a

prK

a

p

a

prK

a

prI

a

p

a

prI

a

prK

a

prK

a

p

a

prKT

C

sv

1111

01

0

0001

0

00

11

01

0

00

1

;

;

;0

;

,

a

prK

a

prI

a

prK

a

p

a

prK

a

prI

a

p

a

prI

a

prI

Ta

prI

a

p

a

prI

C

sv

1111

01

0

0001

0

00

11

01

0

00

2

;

;

0;

;

.

Підставляємо отримані значення 1C та

2C в (2.20)

a

prI

a

prK

a

p

a

prK

a

prK

a

prI

a

p

a

prI

a

prK

a

prI

a

prI

a

prKT sv

1101

0

001101

0

00

011011

.

Отже, передатна функція rpWsvT ,

має вигляд

)(),(

011011

pZ

a

prK

a

prI

a

prI

a

prK

rpWsvT

,

де

.

)(

1101

0

00

1101

0

00

a

prI

a

prK

a

p

a

prK

a

prK

a

prI

a

p

a

prIpZ

(2.22)

За цією ж схемою можна отримати передатні функції інших каналів

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

кажучи, вид передатної функції (2.22) відлякує своєю громіздкістю. А вона

не сама громіздка з можливих для даного об‟єкта. Рекомендувати для

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

Page 34: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

33

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

зору авторів.

Диференціальне рівняння теплопровідності (1.10) для кулі (при k=2)

має вигляд

0,,2

102

2

trrr

rrra

t

. (2.23)

Його можна представити у вигляді

2

2

r

ra

t

r

. (2.24)

В еквівалентності форми (2.24) формі (2.23) можна переконатись

безпосередньою перевіркою, “розкриваючи дужки” в (2.24) за правилом

диференціювання добутку. Введенням змінної

ry (2.25)

диференціальне рівняння (2.24) зводиться до форми (1.3) як для плоскої

стінки. Далі, як кажуть, - “справа техніки”. Виведення формул відповідних

передатних функцій для кулі залишаємо читачеві.

2.2. Неізольований стрижень

Маємо диференціальне рівняння (1.19)

osbx

at

2

2

(2.26)

та граничні умови (1.20) та (1.21)

0

0

x

os

xdx

d

, (2.27)

0lxdx

d. (2.28)

Виконуємо перетворення Лапласа над (2.26)

osbbdx

dap

2

2

або, що те саме

os

a

b

a

bp

dx

d

2

2

, (2.29)

де, як зазвичай, риска над змінною вказує на зображення за Лапласом

(відносно t). Характеристичне рівняння для (2.29)

,02

a

bpr

корені якого a

bpr

2,1 . (2.30)

Розв‟язок (2.29) складається з вимушеної та вільної складових.

Вимушену складову шукаємо у формі правої частини (2.29).

Page 35: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

34

Тут вона не залежить від x, тобто може розглядатись як константа,

отже,

constC 0 .

Для визначення 0C підставляємо вимушену складову в (2.29). Отримуємо

os

a

bC

a

bp

0 ,

звідки os

bp

bC

0 . (2.31)

Вільна складова при двох різних коренях (2.30) характеристичного

рівняння буде

a

bpx

a

bpx

в ільна eCeС

21 ,

а розв‟язок в цілому

a

bpx

a

bpx

os eCeCbp

b

21 . (2.32)

Для знаходження сталих інтегрування С1 та С2 використовуємо

граничні умови (2.27) та (2.28) попередньо перетворивши їх за Лапласом

0|

,|| 00

lx

xos

x

dr

d

dx

d

або після підстановки сюди (2.32)

.0

,

21

2121

a

bpla

bpl

osos

CeC

bp

bCCCC

a

bp

Групуємо доданки з С1 та С2

.0

,111

21

21

a

bpl

a

bpl

os

eCeC

bp

b

a

bpC

a

bpC

Розв‟язуємо цю систему

Page 36: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

35

a

bpl

a

bpl

a

bpl

os

ee

a

bp

a

bp

e

a

bp

bp

b

C

;

1;1

;0

1;1

1

,

a

bpl

a

bpl

a

bpl

os

ee

a

bp

a

bp

e

bp

b

a

bp

C

;

1;1

0;

1;1

2

.

Розкриваємо визначники та множимо чисельник і знаменник на -1.

a

bpl

a

bpl

a

bpl

os

ea

bpe

a

bp

ebp

b

C

11

1

1 ,

a

bpl

a

bpl

a

bpl

os

ea

bpe

a

bp

ebp

b

C

11

1

2 .

Підставляємо отримані С1 та С2 в (2.32)

a

bpl

a

bpl

a

bpl

a

bpl

a

bpxl

a

bpxl

osos

eea

bpee

ebp

be

bp

b

bp

b

)()(

11

.

Ділячи ліву і праву частини на os отримуємо формулу для

передатної функції

a

bpl

a

bp

a

bpl

a

bpxl

bp

b

bp

bxpW os

shch

ch

1),(

.

Працювати з такою передатною функцією (2.33) можна, але

особливого ентузіазму це не викликає.

Page 37: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

36

2.3. Проточна ємність з товстими стінками

Маємо диференціальні рівняння (1.23) та (1.24), які після

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

)35.2(0

)34.2(,1

2

2

10

st

st

st

stіпр

a

p

dx

d

bbTp

та граничні умови (1.25), (1.26), що у зображеннях виглядають так

000

x

st

xdx

d

, (2.36)

os

x

st

x

st

dx

d

1

. (2.37)

У системі (2.34), (2.35) перше з рівнянь є алгебраїчним. Розв‟язок же

другого з граничними умовами типу (2.36), (2.37) було розглянуто в п. 2.1.

Стосовно до нашої задачі його можна представити так

),,(,

xpW st

st

(2.38)

де

ststst

st

a

p

a

p

a

p

a

px

xpW ст

shch

)(ch

),(

0

,. (2.39)

Підставляємо тепер (2.38) в (2.34)

ststst

stinp

a

p

a

p

a

p

a

p

bbTp

shch

ch

1 10 .

Зводимо подібні

.

1

1 0

0

1 inp

stst

b

a

pth

a

p

bTp

(2.40)

Звідси ,,

inppW inp

де

stst a

pth

a

p

bTp

bpW inp

0

1,

1

1

. (2.41)

Page 38: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

37

Підставляючи (2.40) в (2.38) маємо

inpst xpWpW stinp

),()(

,, ,

звідки ),,()(),(,,,

xpWpWxpW stinpstinp (2.42)

Отже, маємо передатні функції зі спільним входом inp та виходами

(2.41) та st (2.42).

2.4. Трубопровід з тонкими стінками

Математична модель даного об‟єкта була сформована в 1.4. Це

диференціальне рівняння (1.20) та (1.29) та гранична умова (1.30).

Виконуючи над ними перетворення Лапласа (відносно змінної t та за

нульових початкових умов) отримуємо

(2.45).

(2.44),1

(2.43),)1(

0

101

000

inp

x

osst

st

bbpT

pTdx

dwT

Визначимо st

з (2.44) та підставимо його в (2.43)

os

pT

b

pT

bpT

dx

dwT

111

1

1

1

0000

,

або os

pT

b

pT

bpT

dx

dwT

111

1

1

1

0000

. (2.46)

Даному рівнянню відповідає характеристичне рівняння

01

11

0000

pT

bpTrwT . (2.47)

Воно має єдиний корінь 00

1

00

1

11

wT

pT

bpT

r

,

який можна представити так

1

1

1

00

0

000

1

pT

wT

b

wTw

pr . (2.48)

Розв‟язок неоднорідного диференціального рівняння (2.46) матиме

вигляд xr

eCC 1

10 . (2.49)

тут 0C – вимушена складова, яка після підстановки в (2.46) отримує

значення

Page 39: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

38

os

pT

bpT

bC

11

1

00

10

. (2.50)

Підставляємо (2.49) в (2.45) ,

11

1

1

00

1 inpos C

pT

bpT

b

звідки osinp

pT

bpT

11

1

00

11

.

Підставляємо отримані 0C і 1C в (2.49)

xrosinpos e

pT

bpT

b

pT

bT

b1

11

11

1

00

1

1

00

1

.

Згрупуємо змінні

inpxrosxree

pT

bpT

b 111

11

1

00

1

, (2.51)

звідки маємо передатні функції

11

1)(

1

00

11,

1

pT

bpT

ebxpW

xr

os , (2.52)

xrexpW inp

1),(,

. (2.53)

Якщо (2.51) переписати з урахуванням введених позначень (2.52) і

(2.53) та після цього підставити в (2.44), то отримаємо

inposstxpWxpWbpT inpos

,,1

,,01 ,

звідки маємо передатні функції

),(1

),(,

1

0

,xpW

pT

bxpW osstos , (2.54)

),(1

),(,

1

0

,xpW

pT

bxpW inpstinp . (2.55)

Трансцендентним комплексом в передатних функціях (2.52) – (2.55) є xre 1 , де 1r визначається формулою (2.48).

Page 40: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

39

2.5. Змійовиковий теплообмінник

В п 1.5 були виведені диференціальні рівняння (1.27), (1.28), (1.29),

(1.30) та гранична умова (1.31). Після перетворення Лапласа відносно t

маємо

)59.2(.1

)58.2(,1

)57.2(,1

)56.2(,)1(

62

53

3

,24

33

0

1222

21

00

11

100

0

00

os

inpl

bbpT

bbdxl

bpT

bbpT

pTdx

dwT

inp

x

,0

0

0

. (2.60)

Єдине диференційне рівняння серед виписаних співвідношень – це

(2.56). Підставимо в нього 1 з (2.57). Отримаємо

2

1

10

1

000

0

0011

)1(

pT

b

pT

bpT

dx

dwT ,

що після зведення подібних дає

2

1

10

1

00

0

0011

1

pT

b

pT

bpT

dx

dwT . (2.61)

Права частина (2.61) від x не залежить, отже, формально рівняння

(2.61) можна розв‟язати за класичною схемою. Характеристичне рівняння

01

11

0000

pT

bpTrwT . (2.62)

Корінь характеристичного рівняння

00

1

00

1

11

wT

pT

bpT

r

або

1

1

1

000

000

1

pT

wTb

wTw

pr . (2.63)

Розв‟язок (2.61)

xreC

pT

bpTpT

b1

12

1

001

10

111

. (2.64)

Підставляємо (2.64) в (2.60)

inpCbpTpT

b ,01

2

001

1

11

,

Page 41: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

40

звідки

2

001

1,01

11

bpTpT

bC inp

,

і (2.64) приводиться до вигляду

2

001

1,02

001

10 11

1111 xrxrinp e

bpTpT

be

bpTpT

b

.

Зводимо подібні

xrinpxr

eebpTpT

b11 ,02

001

10 111

. (2.65)

Підставляємо (2.65) в (2.57)

21

,00

2

001

1011

11111

1 bebebpTpT

bbpT

xrinpxr

.

Зводимо подібні

xrinpxrebe

bpTpT

bbpT 11 ,0

02

001

01

11 1

1111

, (2.66)

звідки визначаємо 1 та підставляємо його в (2.58) – (під інтеграл).

Отримане рівняння разом з (2.59) розв‟язуємо відносно 2 та

3 –

передатні функції з виходами 2 та

3 . Підставляємо 2 в (2.66) –

отримуємо 1 .

Рекомендувати для практичного використання отримані передатні

функції, очевидно, не варто – надто вони громіздкі.

2.6. Труба в трубі

Система диференціальних рівнянь сформована нами в п.1.6. Після

перетворення за Лапласом її можна представити так (для прямотоку).

)70.2(.1

)69.2(,1

)68.2(,1

)67.2(,)1(

52

43

3

33

12

22

2

22

21

00

11

100

0

00

osbbpT

bbpTdx

dwT

bbpT

pTdx

dwT

Граничні умови

inp

x

,0

0

0

, (2.71)

inp

x

,2

0

2

. (2.72)

Підставимо 1 з (2.68) в (2.67), а 3 з (2.70) в (2.69)

Page 42: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

41

)74.2(.1111

1

)73.2(,11

1

3

530

1

202

1

21

3

432

2

22

2

1

10

1

00

0

00

os

pT

bb

pT

bb

pT

bb

pT

bbpT

dx

dwT

pT

b

pT

bpT

dx

dwT

Позначаємо для компактності

1

1)(

1

1

pT

pf , (2.75)

1

1)(

3

3

pT

pf , (2.76)

)(1)( 1000 pfbpTpf , (2.77)

)()(1)( 12134322 pfbbpfbbpTpf . (2.78)

Тоді (2.79), (2.80) можна представити так

211

00

0

00 )()(

pfbpfdx

dwT , (2.79)

ospfbbpfbbpfdx

dwT

353

0120

22

2

22 )()( . (2.80)

Визначаємо 2 з (2.79) та підставимо його в (2.80)

ospfbbpfbbpfpfb

pf

dx

dWT

pfb

pf

dx

dpf

pfb

wT

dx

d

pfb

wTwT

)()()()(

)(

)(

)(

)()()(

3530

1200

0

11

20

00

11

2

0

0

11

22

2

02

11

0022

Множимо ліву та праву частини на )(11 pfb

.)()()()()(

)()(

3153102

121020

0

0222002

02

0022

ospfpfbbbpfbbbpfpf

dx

dpfwTpfwT

dx

dwTwT

(2.81)

Вводимо позначення

).()()(

),()()()(

),()()(

,

31531

2

110200

0222001

22002

pfpfbbbpb

pfbbpfpfpa

pfwTpfwTpa

wTwTa

Тоді (2.77) набуває вигляду

ospbpadx

dpa

dx

da

)()()( 0

0

0

12

02

2 . (2.82)

Диференціальному рівнянню (2.82) відповідає характеристичне

рівняння

Page 43: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

42

0)( 012

2 parpara , (2.83)

корені якого визначаються так

2

02

2

112,1

2

)(4)()()(

a

paapapapr

. (2.84)

Тоді розв‟язок (2.83) можна представити так

xprxpros epCepCpa

pb )(2

)(1

0

0 21 )()()(

)( . (2.85)

Для визначення )(1 pC та )(2 pC існують граничні умови (2.71) та (2.72)

Щодо (2.71) особливих проблем не виникає

inpos pCpCpa

pb ,021

0

)()()(

)( . (2.86)

А от щоб скористатись (2.72), то треба спочатку виразити 2 через

)(1 pC та )(2 pC . Підставимо спочатку (2.85) в (2.67)

.)()()(

)()1(

)()()(

)(2

)(1

0

0

)(22

)(1100

1

21

21

xprxpros

xprxpr

epCepCpa

pbpT

eprpCeprpCwT

А тепер це 1 підставляємо в (2.68)

,)()()(

)(

)()()(

)()1()()()(1

21

)(2

)(1

0

0

)(2

)(1

0

0)(

22)(

11001

21

2121

bepCepCpa

pbb

epCepCpa

pbpTeprpCeprpCwTpT

xprxpros

xprxprosxprxpr

звідки визначається 2 , яке і підставляється в (2.72)

.1

)()()(

)(

)()()(

)()1()()()(1

,2

1

21

0

0

21

0

02211001

inpos

os

bpCpC

pa

pbb

pCpCpa

pbpTprpCprpCwTpT

Групуємо подібні

.1

11)(

)(

)(

)(11)(

)(

)(11)(

,2

1

010

0

0

0020012

0

0010011

inpos

bpTpTb

pa

pb

pa

pbbpTprwTpTpC

pa

pbbpTprwTpTpC

(2.87)

Page 44: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

43

Система (2.86), (2.87) розв‟язується відносно )(1 pC та )(2 pC , які

потім підставляємо в (2.85). З останнього визначаються передатні функції з

входами osinpinp ,, ,2,0 та виходом 0 . Аналогічно можуть бути визначені

і решта передатних функцій. Ми їх не приводимо тут через їх надзвичайну

громіздкість.

2.7. Струна

Математична модель струни була розглянута в п. 1.7.

Диференціальне рівняння (1.40) після перетворення Лапласа відносно

змінної t виглядає так

s

s

fm

yeppdx

ydc

1)( 2

2

22 . (2.88)

Зупинимось на варіанті таких граничних умов (в зображеннях за

Лапласом)

lx yy 0 , (2.89)

0lxy . (2.90)

Характеристичне рівняння, що відповідає (2.88)

0)( 222 epprc . (2.91)

Воно має корені

eppc

r 22,1

1. (2.92)

Розв‟язок (2.88)

eppc

xepp

c

x

s

s

eCeCfeppm

y

22

212 )(

1. (2.93)

Підставляємо (2.93) в (2.89) та (2.90)

.0)(

1

)(

1

22

21

2

,212

eppc

lepp

c

l

s

s

ls

s

eCeCfeppm

yCCfeppm

Запишемо цю систему перегрупувавши доданки

.)(

1

,)(

1

221

221

22

s

s

eppc

lepp

c

l

s

s

l

feppm

eCeC

feppm

yCC

Розв‟язок системи

Page 45: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

44

eppc

lepp

c

l

eppc

l

s

s

s

s

l

ee

efeppm

feppm

y

C

22

2

;

1;1

;)(

1

1;)(

1

2

2

1 , .

;

1;1

)(

1;

)(

1;1

22

2

2

2

2

eppc

lepp

c

l

s

s

eppc

l

s

s

l

ee

feppm

e

feppm

y

C

Підставляємо отримані значення 1C та 2C в (2.93)

,)()(

)()(

)(

1

22

2

2

2

22

22

2

22

22

2

eppc

lepp

c

l

s

s

eppc

xl

eppc

xl

ls

s

eppc

x

eppc

lepp

c

l

s

s

eppc

x

s

s

eppc

xl

eppc

xl

l

s

s

ee

feppm

eeyf

eppm

e

ee

feppm

ef

eppm

eey

feppm

y

звідки отримуємо передатні функції

eppc

lepp

c

l

eppc

xlepp

c

xl

yy

ee

eexpW

l

22

22

),( . (2.90)

epp

c

lepp

c

l

eppc

xepp

c

xepp

c

xlepp

c

xl

s

yf

ee

eeee

eppmxpW

s 22

2222

1)(

1),(

2. (2.91)

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

eppc

l

eppc

xl

xpW yyc2

2

sh

sh

, , (2.92)

.

shch

1)(

1),(

2

22

2

eppc

lsh

eppc

xepp

c

xl

eppmxpW

s

yf s (2.93)

Page 46: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

45

2.8. Навантажена нитка

Перетворимо за Лапласом відносно t диференціальне рівняння (1.50)

fm

ypdx

yd

dx

ydxl

m

mg

nn

122

1

. (2.94)

Це диференціальне рівняння, у якому коефіцієнт при другій похідній

залежить від незалежної змінної x. Цим воно відрізняється від звичайних

диференціальних рівнянь зі сталими коефіцієнтами, алгоритми

інтегрування яких добре відпрацьовані.

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

описують об‟єкт з диференціальним рівнянням (2.54), які були б

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

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

подібних об‟єктів.

2.9. Проточний датчик щільності рідини

Як уже відзначалось у п.1.9, даний об‟єкт не має диференціального

рівняння у звичному нам смислі, зате там була визначена формула, яка

описує його перехідну характеристику h(t). Це формула (1.58).

Відомо, що передатну функцію можна визначити як зображення

відповідної імпульсної характеристики g(t).

)()( pgpW . (2.95)

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

а саме

)()( thdt

dtg . (2.96)

Продиференціюємо (1.58), матимемо

,при0

,0при)(

0

t

th

w

tg (2.97)

де 0wh . Графік (2.97) показано на рис. 2.1

Page 47: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

46

Рис.2.1. Імпульсна характеристика датчика густини

Зображення за Лапласом від (2.97), а, отже, згідно (2.95) і передатна

функція буде

p

e

p

e

h

wpW

pp

11)( 0 . (2.98)

2.10. Транспортер-витратомір

З перехідної характеристики (1.66) шляхом диференціювання

отримуємо імпульсну характеристику.

.2при0

,2при2

,0при

)(2

2

t

tt

tt

tg (2.99)

Графік (2.99) показано на рис. 2.2.

Рис. 2.2. Імпульсна характеристика транспортера-витратоміра

Графік 2.2 можна представити у вигляді суми трьох прямих як

показано на рис. 2.3.

g(t)

t

w0/h

0

g(t)

t 2

1/

0

Page 48: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

47

Рис. 2.3. Розкладення g(t) на компоненти.

Тоді зображення за Лапласом першої компоненти

221

1)(

ppg

,

другої рe

ppg

222

2)( ,

третьої рe

ppg

223

1)( ,

що в сумі дає рр eep

pW

2

2221

1)( . Або, що те саме

2

1)(

р

epW

р

. (2.100)

Структури (2.98) та (2.100) можуть знайти застосування для апроксимації

(ідентифікації) і інших динамічних об‟єктів.

g(t)

t 2

1/

-2/

3

1

2

3

0

Page 49: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

48

3. ПЕРЕХІДНІ, ІМПУЛЬСНІ ТА ЧАСТОТНІ ХАРАКТЕРИСТИКИ

Маючи передатну функцію W(p) нескладно (теоретично!) отримати

перехідну

p

pWLth

)()( 1 , (3.1)

імпульсну

)()( 1 pWLtg (3.2)

чи частотні, наприклад, амплітудно-фазову

jppWjW |)()( (3.3)

характеристики.

Повторюємо – теоретично! А от практично… Підставте передатні

функції, отримані в розділі 2, в (3.1) та (3.2) і спробуйте виконати зворотне

перетворення Лапласа, або реалізуйте підстановку jp в (3.3). Справа

це не безнадійна, з використанням комп‟ютера, зокрема, для формули (3.3)

цілком реальна, але надто трудомістка, тим більше, що, не виключено, вам

самому доведеться формувати програмне забезпечення для дослідження

кожного конкретного каналу для кожного конкретного об‟єкта. Нічого

дивного –– адже чим складніше об‟єкт, тим складніше передбачити усі

особливості його “характеру” і імовірної поведінки. Але ж на передатній

функції як джерелі інформації про канал, як кажуть, “світ клином не

зійшовся”.

Ті ж самі перехідні характеристики можна отримати шляхом

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

(приклади яких наведені, зокрема, в розділі 1). Перерахувати перехідну

характеристику в імпульсну теж не проблема. А маючи імпульсну

характеристику і комп‟ютер можна скористатись стандартним алгоритмом

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

можна зробити.

3.1. Розрахунок частотних характеристик за масивом ординат

імпульсної характеристики

Формулу (3.2) можна представити і так

)()( tgLpW

або dtetgpW pt

)()(0

.

Замінимо в останній формулі p на j

dttjttgj )sin()cos()()Im()Re(0

.

Page 50: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

49

Тут )Re( та )Im( відповідно – дійсна та уявна частотні

характеристики (дійсна та уявна частина амплітудно-фазової

характеристики). Комплексна рівність розпадається на дві дійсних рівності,

а саме

dtttg )cos()()Re(0

, (3.4)

dtttg )sin()()Im(0

. (3.5)

Якщо Dttg )( , (3.6)

де – мала величина, то верхню межу інтегрування в формулах (3.4), (3.5)

можна змінити на D

dtttgD

)cos()()Re(0

, (3.7)

dtttgD

)sin()()Im(0

. (3.8)

Будемо вважати , що g(t) задано масивом ординат

-1 0 1 2 3 … L L+1

Gt L g0 g1 g2 g3 … gL Dt

Тут 600L (наприклад L=500), причому DtLD . Вважаючи, що

виконується умова (3.6), будемо обчислювати інтеграли (3.7) та (3.8) за

формулою трапецій. Тоді

)cos(20)Re(

1

1DtssGtGtDt

L

s , (3.9)

)sin()Im(1

1DtssGtDt

L

s

. (3.10)

Доданок 2LGt не враховується з огляду на виконання умови (3.6).

Формули (3.9), (3.10) будуть забезпечувати достатню точність за умови,

якщо в межах періоду коливань T, що відповідає частоті 2T ,

розміщується принаймні 20 ординат імпульсної характеристики (з кроком

Dt між сусідніми ординатами), тобто

Dt 202

(3.11)

або, що те саме

Dt

10

. (3.12)

Умова (3.11) не є строгою, ми просто збираємося представити

синусоїду (косинусоїду) в межах періоду ламаною при кількості точок

зламу не меншій 20, інакше, така апроксимація буде надто грубою. Читач

Page 51: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

50

може замінити число 20 на те, яке йому буде більше імпонувати … Але в

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

Треба зафіксувати число . Треба вибрати мінімальне число кроків в межах

періоду… Ми прийняли його рівним 20. Ми розбили інтервал інтегрування

[0..D] на L=500 кроків. Бо інженер – “крайній”: йому нема на кого

перекладати прийняття конкретних рішень. Математикам легше – сказати з

“точністю до ”, де – деяке (?!) мале число …

Масив Gt, як ми уже відзначали, заданий з кроком Dt (див. комірку з

номером L+1). Отже Dt – фіксоване, а частота в умові (3.12) може

змінюватись теоретично в діапазоні від 0 до . Ну, не до самої

нескінченності, але до якого саме числа – наперед сказати не можна. Адже

об‟єкти, частотні характеристики яких ми збираємось досліджувати,

можуть бути самими різними і параметри їх можуть змінюватись в межах,

про які ми наперед також нічого конкретного сказати не можемо. Тому

обмежуватись діапазоном частот, для яких виконується умова (3.12), може

виявитись недостатнім.

Приймемо, що використовувана в формулах (3.9), (3.10) імпульсна

характеристика )(tg така, що при кроці Dt допускає лінійну інтерполяцію в

межах цього кроку. Якщо D вибрано грамотно, тобто так, що D в (3.6) не

надто завищено (D вибрано близько до Dg – не мало, але і не занадто

багато!), крім того 500L , то для більшості технічних об‟єктів гіпотеза

про допустимість лінійної інтерполяції в межах кроку Dt=D/L уявляється

достатньо обґрунтованою (треба приймати конкретне рішення…). Якщо

зберегти підхід, використаний в (3.11) , то для частот, більших ніж ті, що

дозволяються (3.12), можна записати

10Dtw , (3.13)

де Dtw – крок між сусідніми ординатами в формулах (3.9), (3.10). Для

кожної частоти цей крок має бути своїм! Щоб пройти відрізок Dt 0

з кроком Dtw безпосередньо використати масив Gt не вдасться (він

заданий з кроком DtwDt ).

То ми, як уже згадували вище, скористаємося лінійною

інтерполяцією. Це означає, що для поточного t значення g(t) можна

реалізувати у вигляді підпрограми-функції IntGt: function IntGt(t: real): real;

var s: integer; r: real;

begin

r:=t/Gt[L+1];{dt;}

s:=trunc(r);

t:=frac(r);

IntGt:=Gt[s]+t*(Gt[s+1]-Gt[s]);

end;

Описаний алгоритм обчислення значень )Re( та )Im( для

поточного значення одержимо у вигляді підпрограми-процедури UrGod,

Page 52: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

51

яка працює з глобальним масивом Gt:CoefL описаної вище структури і

яка повертає в основну програму )Re(x та )Im(y , де x,y:real. Тут

також глобальні L:integer та w,Dw:real (останні представляють

Dта )

procedure UrGod;

var wt, dtw, g: real;

s, Lw: integer;

begin

x:=Gt[0]/2; y:=0; dt:=Gt[L+1];

if w<Pi/(10*dt)

then

begin

for s:=1 to L-1 do

begin

wt:=w*s*dt;

g:=Gt[s];

x:=x+g*cos(wt);

y:=y-g*sin(wt);

end;

x:=x*dt;

y:=y*dt;

end

else

begin

dtw:=Pi/(10*w);

Lw:=round(d/dtw);

dtw:=d/Lw;

for s:=1 to Lw-1 do

begin

wt:=w*s*dtw;

g:=IntGt(s*dtw);

x:=x+g*cos(wt);

y:=y-g*sin(wt);

end;

x:=x*dtw;

y:=y*dtw;

end;

end;

Алгоритм формування годографа, зокрема, годографа амплітудно-

фазової характеристики було детально розглянуто в [32, 40]. Наведемо

отримані там підпрограми.

Перше, з чого починається побудова годографа, це формування

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

Для цього треба спочатку задати діапазон варіації . Теоретично 0

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

каналу, а також специфіку розв‟язуваної проблеми (для чого нам цей

годограф потрібен). Ну, наприклад, якщо об‟єкт (канал) не має

Page 53: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

52

самовирівнювання, то при 0 амплітудно-фазова характеристика

дорівнює нескінченності. Реальні об‟єкти, як правило, інерційні, в них має

місце розсіювання енергії, а це приводить до того, що вони практично не

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

фазова характеристика уже при скінченних значеннях частоти практично

стає рівною нулю, отже, подальше збільшення частоти при побудові

)( jW втрачає сенс. Отже, на практиці треба задати діапазон кп ,

де п – початкове та к – кінцеве значення частоти. Для визначення

максимальних значень як дійсно-частотної так і уявно-частотної

характеристики треба, принаймні, просканувати заданий діапазон частот з

деяким кроком. З яким? Чим менше, тим краще. Задамось, наприклад,

кількістю кроків сканування Nsc, скажімо, Nsc = 50. Отже, крок сканування

буде ./)( NscD nk

Тут, знову ж таки, треба враховувати характерні особливості об‟єкта

та каналу. Як правило, індекси частот на годографі )( jW розподіляються

дуже нерівномірно. Частіше всього на малих частотах відстань між

сусідніми точками (на кроці D ) може бути відносно великою, тоді як із

зростанням частоти при тому ж кроці D відстань прогресуюче

зменшується. Якщо крок D вибрано невдало, то може виявитись, що уже

на першому кроці сканування ви “перескочите” саму суттєву ділянку

годографа (не оцінивши її параметрів) і далі будете “товктись” в зоні

частот, для яких точки згрупуються в околі початку координат, що

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

ступінь вдалості вибору можна буде оцінити лише після процесу

формування годографа. У разі невдачі весь процес доведеться

повторювати, і, не виключено, що не один раз.

На комп‟ютері однократне формування годографа у вас займе від

часток секунди до кількох секунд. Так що повторні ітерації не створюють

серйозних проблем.

Процес сканування з наступним формуванням системи координат

оформимо у вигляді процедури Scan. procedure Scan;

var s:integer;

begin

Dw:=(Wk-Wn)/Nsc;

Xmin:=0; Xmax:=0; Ymin:=0; Ymax:=0;

for s:=0 to Nsc do

begin

W:=Wn+S*Dw; UrGod;

if X<Xmin then Xmin:=X;

if X>Xmax then Xmax:=X;

if Y<Ymin then Ymin:=Y;

if Y>Ymax then Ymax:=Y

end;

X0Y0(true); ClearDevice; SystCoor

Page 54: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

53

end;

Процедури X0Y0 та SystCoor, задіяні в Scan, знаходяться в модулі

Serv, що має бути підключений до програми (через конструкцію uses).

Детальний опис модуля Serv як і модуля Groms, який використовується

для оформлення графіків і годографів, наводиться в [32, 40]. У Додатку до

даної роботи наводяться лістинг цих модулів.

При наявності системи координат координати x,y точки годографа

можна перерахувати в екранні координати s,z тобто визначити піксель, у

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

begin

UrGod;

if Dx<>0 then s:=x0+round(x/Dx)

else s:=x0;

if Dy<>0 then z:=y0-round(y/Dy)

else z:=y0

end;

Тут x0,y0:integer – екранні координати пікселя, в який

проектується початок системи координат X0Y (у нашому випадку

комплексної площини, в якій формується годограф jW ). Змінні x0,y0

описані в модулі Serv.

Годограф можна формувати або піксель за пікселем, послідовно

“пристиковуючи” черговий піксель до поточного або ж формувати

годограф у вигляді ламаної, нарощуючи годограф відрізок за відрізком.

Найвища точність (з точністю до пікселя) досягається за першим

алгоритмом, але швидкодією він поступається перед другим, в якому

задається “довжина” відрізка в діапазоні від Min до Max пікселів (це

типізовані константи типу integer, які можуть бути уточнені

користувачем).

“Попіксельний” алгоритм реалізується підпрограмою PointGod

(точка годографа). procedure PointGod;

const Kw=1.2;

var Mdx,Mdy,Md,Sp,Zp:integer;

Wp:real;

begin

Sp:=s; Zp:=z; Wp:=w;

repeat

W:=Wp+Dw; SZ;

Mdx:=abs(S-Sp);Mdy:=abs(Z-Zp);

if Mdx>Mdy then Md:=Mdx

else Md:=Mdy;

if Md<>1 then

if Md<1 then Dw:=Dw*Kw

else Dw:=Dw/Md;

Page 55: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

54

until (Md=1) or (W>Wk);

if Md=1 then PutPixel(S,Z,c)

end;

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

(один!) годографа. Черговий же відрізок формує процедура LineGod. procedure LineGod;

var Mdx, Mdy, Md, Sp, Zp:integer;

Wp, r: real;

begin

Sp:=s; Zp:=z; Wp:=w; r:=(Min+Max)/2;

repeat

W:=Wp+Dw; SZ;

Mdx:=abs(S-Sp); Mdy:=abs(Z-Zp);

if Mdx>Mdy then Md:=Mdx

else Md:=Mdy;

if (Md>Max) or (Md<Min) then

if Md<Min then Dw:=Dw*Kw

else Dw:=Dw*r/Md;

until ((Md<=Max) and (Md>=Min)) or (W>Wk);

if (Md<=Max) and (Md>=Min) then Line(Sp,Zp,S,Z);

end;

Вибір того чи іншого алгоритму (PointGod чи LineGod)

визначається Tg:char, який може приймати значення 'P' (PointGod)

або 'L' (LineGod). Формування ж годографа в цілому реалізує

підпрограма-диспетчер Godo. procedure Godo;

var J3:char;

T20: string[20];

begin

PutA;Ou('0-Exit'); J3:='1';

dt:=d/L;

Dw:=(Wk-Wn)/Nsc; W:=Wn; Sz;

PutPixel(S,Z,C); SetColor(C);

repeat

case Tg of

'P': PointGod;

'L': LineGod;

end;

Str(W,T20);

Clear(450,0,GetMaxX-1,10);

OutTextXY(450,0,'W='+T20);

if KeyPressed then J3:=ReadKey

until (W>Wk) or (J3='0');

SetColor(15)

end;

Після того як сама крива годографа сформована, треба нанести на цю

криву мітки частот – свого роду шкалу. Враховуючи імовірну та важко

Page 56: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

55

передбачувану ступінь нерівномірності цієї шкали, будемо наносити мітки

у вигляді кружечків радіусом, скажімо, в 3 пікселі кольором С, після чого

десь поряд з даним кружечком наносимо відповідний напис (щось на

зразок 0.5W чи просто значення частоти). Формування такої розмітки

будемо реалізовувати за допомогою процедури IndW: procedure IndW;

var j2: char;

begin

repeat

PutA;

Ou('0-Ex, 1-W, 2-C, 3-Point, 4-Inscr');

Str(w:1:3,T10); Ts:='w='+T10;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('w',w);

'2': Oui('C',C);

'3': begin

SetColor(C); SZ; Circle(s,z,3);

SetColor(15);

end;

'4': Inscr;

end;

until j2='0';

end;

Тут Inscr – процедура з модуля Groms [27]. Процедури Scan, SZ,

PointGod, LineGod та IndW об‟єднуються в модуль GodoGt, лістинг якого

наводиться в Додатку 1.

3.2. Динамічні характеристики теплоакумулюючої стінки

Читача, якого цікавлять аналітичні формули для розв‟язання

диференціального рівняння теплопровідності, відсилаємо до класичних

робіт [10, 49].

Ми ж тут розглянемо, як і обіцяли раніше, числовий метод

розрахунку перехідних процесів і, зокрема, розрахунку перехідної

характеристики будь-якого можливого каналу в даному об‟єкті. Отже, мова

йтиме про диференціальне рівняння (1.10), де k може приймати значення 0,

1 чи 2.

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

числового інтегрування цього рівняння наведено в роботі [32]. Ми тут

зупинимося на використанні явної схеми і лише для розрахунку перехідної

характеристики, коли вхідний сигнал вважається рівним 1(t), а початкові

умови є нульовими.

Page 57: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

56

Дискретні змінні:

,

,

,

,vsvttshx

v

s

tvt

xshx

(3.13)

де Ks

LD

mh

/,

кроки за x та t відповідно,

m – ціле додатне число, D – час спостереження, 500L – ціле додатне

число, Ks – коефіцієнт подрібнення кроку за часом.

Тут для криволінійних стінок (k=1 або 2) x відраховується від r0 (коли

r0= 0, то, зрозуміло, від осі).

Перейдемо в (3.10) до дискретних змінних

,11,2

2 ,1,1

02

,1,,1,1,

ms

hshr

k

ha

vsvsvsvsvsvsvs

Розв‟язуємо його відносно 1, vs . Отримуємо

,11,

2,1,1

0,1,1,11,

ms

h

rs

kqq vsvsvsvsvsvs (3.14)

де 2h

aq

, qq 211 .

Варіанти граничних умов будемо задавати параметрами

Ngl,Ngr:integer, які можуть приймати значення 1, 2 або 3 в залежності

від того граничні умови якого роду мають місце на “лівій” (Ngl) та

“правій” (Ngr) поверхні. Для криволінійних стінок – це відповідно

внутрішня та зовнішня поверхні.

Розглянемо послідовно всі можливі варіанти. Кожна із змінних

srrrslll TQTTQT ,,,,, вважається рівною 1, коли вона розглядається як

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

,1Ngl lv T1,0 ; (3.15)

,2Ngl l

vvQ

h

1,01,1 ,

звідки lvv Qh

1,11,0 , (3.16)

,3Ngl )( 1,00

1,01,1

vsl

vvT

h

,

slvv Tbb 11,101,0 , (3.17)

де 01

0

00 1, bb

h

hb

.

Відповідно для правої поверхні

Page 58: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

57

,1Ngr rvm T1, ; (3.18)

,2Ngr r

vmvmQ

h

1,11, ,

або rvmvm Qh

1,11, ; (3.19)

,3Ngr )( 1,1

1,11,

srvm

vmvmT

h

,

srvmvm Tbb 31,121, , (3.20)

де 23

1

12 1, bb

h

hb

.

Розглянемо ще варіант суцільних циліндра та кулі, коли 00 r . Тоді

Ngl не зможе прийняти значення з множини [1, 2, 3]. Умовно позначимо

його як Ngl=0.

Розглянемо .limlim00 r

rkrr

k

rr

Розкриваємо невизначеність за правилом Лопіталя

.limlim2

2

00 rk

rr

k

rr

Одержане співвідношення підставляємо в диференціальне рівняння (3.10)

0

2

2

0

1

rr rka

t

.

У дискретній формі це буде

2

,1,0,1,01,0 21

hka

vvvvv

. (3.21)

А за умови температурної симетрії відносно осі (температурне поле

одновимірне!) vv ,1,1 .

А коли так , то з (3.21) маємо

vvv kqkq ,1,01,0 12121 . (3.22)

Тоді крок за часом при розрахунку перехідної характеристики

виглядатиме так: procedure Step;

var s: integer; Tet: Coefr; Rs: real;

begin

for s:=1 to m-1 do

begin

Rs:=K/(R0/Hx+S)/2;

Tet[s]:=q1*Teta[s]+q*((1-Rs)*

Teta[s-1]+(1+Rs)*Teta[s+1]);

end;

case Ngl of

Page 59: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

58

0: Tet[0]:=Teta[0]+2*(1+K)*Q*(Teta[1]-Teta[0]);

1: Tet[0]:=TL;

2: Tet[0]:=Tet[1]+Hx/Lam*QL;

3: Tet[0]:=B0*Tet[1]+B1*TsL;

end;

case Ngr of

1: Tet[m]:=Tr;

2: Tet[m]:=Tet[m-1]-Hx/Lam*Qr;

3: Tet[m]:=B2*Tet[m-1]+B3*Tsr;

end;

Tet[-1]:=m; Teta:=Tet;

end;

Якщо вхідний сигнал діє на ліву поверхню, то приймаємо, що

Ninp=0, інакше Ninp=1. Тут Ninp – типізована константа типу integer.

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

х=Xout, де Xout – типізована константа типу real, що може приймати

значення в діапазоні 0XoutDelta, де Delta – ідентифікатор, що

відповідає – товщині стінки. При кроці h (ідентифікатор Hx:real) це

буде комірка з номером Nx:=round(Xout/Hx). Тип CoefR, використаний

у процедурі Step, має такий вигляд: type CoefR=array[-1..201] of

real.

Структурно він виглядає так, наприклад, стосовно змінної Teta

-1 0 1 2 … m m+1 … 201

Teta:CoefR m v,0

v,1 v,2 … vm, Hx …

Отже, змінну m треба задавати в діапазоні 0m200. А от масиви

Ht:CoefL для ординат перехідної та Gt:CoefL для ординат імпульсної

характеристики мають такий формат: type CoefL=array[-1..601] of

real.

Структура масиву Ht на прикладі:

-1 0 1 2 … L L+1 … 601

Ht:CoefL L 0,Nx

1,Nx 2,Nx … LNx , Dt …

Формувати ж масиви Ht,Gt:CoefL будемо в процедурі FormHtGt,

текст якої рекомендуємо дивитись в лістингу програми DemGt, що

наводиться в Додатку.

Формування годографа )( jW , що відповідає попередньо

сформованому масиву Gt:CoefL імпульсної характеристики, реалізується

підпрограмою FormGodo (див. програму DemGt).

Приклади сформованих за допомогою програми DemSt графіків h(t),

g(t) та годографів )( jW наводяться на рис. 3.1, а повний лістинг

програми представлений у Додатку 2.

Page 60: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

59

а)

б)

в)

Рис. 3.1. Динамічні характеристики плоскої стінки, канал outsl xT :

а – перехідна; б – імпульсна; в – амплітудно-фазова

характеристики

Page 61: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

60

3.3. Динаміка температури в неізольованому стрижні

Дискретизуємо диференціальне рівняння (1.19) та граничні умови

(1.20) та (1.21).

)(2

,2

,1,,1,1, osvvs

vsvsvsvsvsb

ha

, (3.23)

)( 1,010

1,01,1

v

s

v

vv

h

, (3.24)

1,11, vmvm . (3.25)

Розв‟язуємо (3.23) відносно 1, vs (явна схема)

)()2( ,,1,,1,1,osvvsvsvsvsvsvs bq , (3.26)

де KsL

D

m

lh

h

aq

,,

2.

З (3.24) маємо s

vvv bb 111,101,0 , (3.27)

де 01

0

00 1, bb

h

hb

.

Формулу (3.25) немає потреби спрощувати. Отже, крок за часом –

процедура Step procedure Step;

var s: integer;

Tet: Coefr;

begin

m:=round(Teta[-1]);

for s:=1 to m-1 do

Tet[s]:=Teta[s]+q*(Teta[s-1]-

2*Teta[s]+Teta[s+1])-

B*Tau*(Teta[s]-Tos);

Tet[0]:=B0*Tet[1]+B1*Tos;

Tet[m]:=Tet[m-1]; Tet[-1]:=m;

Tet[-1]:=m; Teta:=Tet;

end;

Page 62: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

61

Масиви Ht,Gt:CoefL ординат перехідної та імпульсної

характеристик формуємо за допомогою процедури FormHtGt: procedure FormHtGt;

var s:integer;

begin

Gt[-1]:=L; Ht[-1]:=L; Dt:=D/L;

Gt[0]:=0; Gt[L]:=0; Gt[L+1]:=Dt;

Ht[-1]:=L; Ht[0]:=0; Ht[L+1]:=Dt;

Hx:=Lng/m;

A:=Lam/(Ro*Cst); Tau:=sqr(Hx)/(6*A);

B:=4*A0/(Ro*Cst*D0);

Ks:=round(Dt/Tau);

if Ks=0 then Ks:=1;

Tau:= Dt/Ks; q:=A*Tau/sqr(Hx);

q1:=1-2*q;

B0:=Lam/(Lam+Hx*A0); B1:=1-B0;

Teta[-1]:=m;

for s:=0 to m do Teta[s]:=0;

Nout:=round(Xout/Hx); Tos:=1;

for s:=1 to L do

begin

for z:=1 to Ks do Step;

Ht[s]:=Teta[Nout];

end;

for s:=0 to L-1 do Gt[s]:=(Ht[s+1]-Ht[s])/Dt;

end;

Підпрограми Step та FormHtGt призначені для роботи в програмі

DemStr, лістинг якої наводиться в Додатку 3. Перехідна, імпульсна та

амплітудно-фазова характеристики, сформовані програмою DemStr,

наводяться на рис 3.2

Page 63: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

62

а)

б)

в)

Рис. 3.2. Динамічні характеристики неізольованого стрижня, канал

outos x : а – перехідна; б – імпульсна; в – амплітудно-фазова

характеристики

Page 64: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

63

3.4. Динаміка проточної ємкості

Переходимо до дискретних змінних в диференціальних рівняннях

(1.23) та (1.24)

stv

inpvv

vv bbT ,0101

, (3.28)

2

,1,,1,1, 2

ha

stvs

stvs

stvs

stvs

stvs

. (3.29)

Розв‟язуємо (3.28), (3.29) відносно 1v

та st

vs 1, відповідно

)( ,0101 vst

vinpvvv bb

T

, (3.30)

11,2 ,1,,1,1, msq stvs

stvs

stvs

stvs

stvs . (3.31)

Граничні умови (1.25) та (1.26) стосовно до моменту часу )1( vt у

дискретній формі отримують вигляд

)( 1,01

1,01,1 stvv

stv

stv

h

,

0,11,

h

stvm

stvm

,

або після розв‟язання відносно граничних точок

131,121,0 vstv

stv bb , (3.32)

де 23

0

2 1, bbh

b

.

stvm

stvm 1,11, . (3.33)

Крок за часом згідно (3.30) – (3.33) оформляємо у вигляді підпрограми

Step : procedure Step;

var s:integer;

Tet1:Coefr;

Tet0:real;

begin

Tet0:=F2*Teta0+F3*T0inp+F4*Teta1[0];

for s:=1 to m-1 do

Tet1[s]:=Q1*Teta1[s]+Q*(Teta1[s-1]+Teta1[S+1]);

Tet1[0]:=F5*Tet1[1]+F6*Teta0;

Tet1[M]:=F7*Tet1[M-1]+F8*Tos;

Tet1[-1]:=m; Teta1:=Tet1; Teta0:=Tet0

end;

Page 65: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

64

Формування масивів Ht,Gt:CoefL перехідної та імпульсної

характеристик проточної ємкості при спільному вхідному сигналі T0inp

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

теплоносія в ємкості (Nout=0) або температура стінки в Xout-ому перерізі

(Nout=1) реалізуємо в підпрограмі FormMas. procedure FormMas;

var Yp:real;

begin

Init; Gt[-1]:=L; Ht[-1]:=L; dt:=D/L;

Gt[0]:=0; Gt[L+1]:=dt; Ht[0]:=0; Ht[L+1]:=dt;

Xu:=(GetMaxX-L) div 2; Y:=0;

PutA; Rectangle(Xu,0,Xu+L,5);

for z:=1 to L do

begin

Line(Xu+z,1,Xu+z,4); Yp:=Y;

for s:=1 to Ks do Step;

case Nout of

0: y:=Teta0;

1: y:=Teta1[Nx]

end;

Ht[z]:=Y; Gt[z]:=(y-yp)/dt;

end;

end;

Повний текст програми DemPrе наведено в Додатку 4. Результати

роботи цієї програми показано рис. 3.3

Page 66: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

65

а)

б)

в)

Рис. 3.3. Динамічні характеристики проточної ємності, канал inp:

а – перехідна; б – імпульсна; в – амплітудно-фазова

характеристики

Page 67: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

66

3.5. Трубопровід з тонкими стінками

Дискретизуємо рівняння (1.28) та (1.29)

msh

wTT stvsvs

vsvsvsvs

1,,,

,1,

00

,1,

0

. (3.34)

msbbT osvvs

stvs

stvs

stvs

1,1,0,

,1,

1

. (3.35)

Гранична умова (1.30) для )1( vt набуває вигляду

inpvv 11,0 . (3.36)

Розв‟язуємо (3.34), (3.35) відносно 1, vs

та st

vs 1,

msbb vsvsvsstvsvsvs 1,( ),1,3,,2,1, , (3.37)

msbbb stvs

svvs

stvs

stvs 0),( ,1,04,1,

, (3.38)

де .,,1

400

3

0

2T

bh

wTb

Tb

Крок за часом оформляємо у вигляді підпрограми Step. У Додатку 5

наводиться повний текст програми DemTr, яка демонструє динамічні

характеристики розгляданого об‟єкта. Там типізована константа Ninp може

приймати значення 0, коли входом є температура Tinp на вході в трубу або

Ninp=1, коли за вхід приймається Tos – температура оточуючого

середовища. Вихід задається параметром Nout, який дорівнює 0, коли за

вихід приймається температура теплоносія в трубі в Xout-ому перерізі або

ж Nout=1, коли цікавляться температурою стінки, в тому Xout-ому

перерізі. Результати роботи програми DemTr показано на рис. 3.4.

Page 68: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

67

а)

б)

в)

Рис. 3.4. Динамічні характеристики трубопроводу, канал outinp x :

а – перехідна; б – імпульсна; в – амплітудно-фазова

характеристики

Page 69: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

68

3.6. Змійовиковий теплообмінник

Дискретизуємо диференціальні рівняння (1.27) – (1.30)

msh

wTT vsvs

vsvsvsvs

1,1

,0,

0,1

0,

00

0,

01,

0

, (3.39)

msbbT vvsvs

vsvs

0,2

10,0

1,

1,

11,

1

, (3.40)

,

2/)(

,24

33

1,

1

1

1,

1,02

222

12

inpvv

vs

m

svmvv

vv

bb

hbT

(3.41)

osvvv

vv bbT

6

25

333

13

. (3.42)

Гранична умова (1.31) для )1( vt

inpvv

,01

01,0 . (3.43)

Розв‟язуємо (3.39) – (3.42) відносно температур в кінці кроку за

часом тобто при ( 1)t v .

msee vsvsvsvsvsvs 1,)( 0,

0,1

0,4

1,0

0,

01, , (3.44)

msbbe vsvvsvsvs 0,1,

21

0,01

1,

11, , (3.45)

,

2/)(

2,24

33

1,

1

1

1,

1,022

221

vinp

vv

vs

m

svmvvv

bb

nLbe

(3.46)

36

253

331 v

svvvv bbe , (3.47)

де h

wTe

Te

Te

Te

Te 00

4

3

3

2

2

1

1

0

0 ;;;;

.

Лістинг програми DemZt, що розраховує динамічні характеристики

змійовикового теплообмінника, наведено в Додатку 6. Результат роботи

програми DemZt демонструється на рис. 3.5.

Page 70: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

69

а)

б)

в)

Рис. 3.5. Динамічні характеристики змійовикового теплообмінника, канал

outinp x0,0 : а – перехідна; б – імпульсна; в – амплітудно-

фазова характеристики

Page 71: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

70

3.7. Теплообмінник типу “труба в трубі”

Переходимо до дискретних змінних в диференціальних рівняннях

(1.32) – (1.35)

msh

wTT vsvs

vsvsvsvs

1,1

,0,

0,1

0,

00

0,

01,

0

, (3.48)

msbbT vvsvs

vsvs

0,2

10,0

1,

1,

11,

1

. (3.49)

,1,3,3

1,2

2,

2,1

2,

22

2,

21,

2

msbb

hwTT

vsvs

vsvsvsvsvs

(3.50)

msbbT osvvsvs

vsvs

0,5

2,4

3,

3,

31,

3

. (3.51)

Рівняння (3.50) записано для випадку прямотоку – теплоносій у

міжтубному просторі рухається у тому ж напрямку, що і теплоносій у

внутрішній трубі.

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

.11,3,3

1,2

2,

2,1

2,

22

2,

21,

2

msbb

hwTT

vsvs

vsvsvsvsvs

(3.52)

Гранична умова для теплоносія у внутрішній трубі згідно (1.36) inp

vv,01

01,0 . (3.53)

Для теплоносія у міжтрубному просторі для прямотоку маємо inp

vv,21

21,0 . (3.54)

Те ж для протитоку inp

vvm,21

21, . (3.55)

Розв‟язуємо рівняння (3.48) – (3.51) відносно температур при )1( vt :

msee vsvsvsvsvsvs 1,0,

0,1

0,4

1,0

0,

01, , (3.56)

msbbe vsvsvsvsvs 0,1,

2,1

0,01

1,

11, , (3.57)

,1,2

,2

,12,5

3,3

1,22

2,

21,

mseNr

bbe

vsvsvs

vsvsvsvs

(3.58)

.0,3,5

2,43

3,

31, msbbe vs

osvvsvsvs (3.59)

Тут

протитоку.для1

прямотоку;для1;;;;;; 22

500

4

3

3

2

2

1

10 Nrh

wTe

h

wTe

Te

Te

Te

Te

Page 72: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

71

Лістинг програми DemTrTr, яка демонструє динамічні

характеристики теплообмінників типу “труба в трубі”, наводиться в

Додатку 7.

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

параметром Nr:integer, який може приймати значення Nr=1 для

прямотоку та Nr=-1 для протитоку. Щоб абстрагуватись від конкретних

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

швидкостями їх руху W0 та W2 (за абсолютною величиною). В якості

можливих вхідних сигналів можуть розглядатись inp,0 (Ninp=0), inp,2

(Ninp=2), та os (Ninp=4). В якості вихідного сигналу маємо 0

,vNx

(Nout=0), 1

,vNx (Nout=1),

2

,vNx (Nout=2) або

3

,vNx (Nout=3) в точці x=Xout.

Тут Nx:=round(Xout/Hx), де Hx:=Lng/m,

Lng – довжина теплообмінника. На рис 3.6 показано динамічні

характеристики прямоточного, а на рис 3.7 – протиточного

теплообмінників.

Page 73: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

72

а)

б)

в)

Рис. 3.6. Динамічні характеристики прямоточного теплообмінника, канал

outinp x2,2 : а – перехідна; б – імпульсна; в – амплітудно-

фазова характеристики

Page 74: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

73

а)

б)

в)

Рис. 3.7. Динамічні характеристики протиточного теплообмінника, канал

outinp x2,0 : а – перехідна; б – імпульсна; в – амплітудно-

фазова характеристики

Page 75: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

74

3.8. Динаміка струни

В диференціальному рівнянні (1.40) переходимо до дискретних

змінних

.1,11,12

2

,2

,1,,12

1,,

2

1,,1,

vmsfmh

yyyc

yye

yyy

vs

s

vsvsvs

vsvsvsvsvs

Розв‟язуємо отримане співвідношення відносно 1, vsy

,1,11,)2(

)(2

,1,1,,12

1,,01,,1,

vmsfeyyye

yyeyyy

vsvsvsvs

vsvsvsvsvs

де 22

2

10 ;,; qem

eeeh

cq

S

.

Початковий стан струни задається її формою при t=0 – це форма

струни в початковий момент часу, функція від х lx 0 . Крім того мають

бути задані швидкості точок струни при t=0 в функції від х. У загальному

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

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

стосується швидкостей.

В якості вхідних сигналів для моделі (1.40) розглянемо переміщення

“лівого” (х=0) чи “правого” (х=l) кінців струни або зовнішню силу f. Більш

повний огляд можливих випадків, а отже, і можливих вхідних сигналів

можна знайти у посібниках з математичної фізики (хвильове рівняння) та,

наприклад, в [40]. Крок за часом оформимо у вигляді підпрограми Step: procedure Step;

var s: integer;

Myn: Coefr;

begin

Myn[-1]:=m; Myn[0]:=YL; Myn[m]:=Yr; Myn[m+1]:=Hx;

for s:=1 to m-1 do

Myn[s]:=2*My[s]-Myp[s]-e0*(My[s]-Myp[s])+

e2*(My[s-1]-2*My[s]+My[s+1]);

Myp:=My; My:=Myn;

end;

Тут типізовані константи YL,Yr типу integer можуть приймати

значення 1, коли відповідний сигнал розглядається як вхідний, тоді як

решта вважається рівними нулю.

Характерною особливістю процедури Step для хвильового рівняння

є те, що тут доводиться орудувати з двома масивами (конкретно –

My,Myp:CoefL), які представляють відповідно форму струни при vt

(це My) та при )1( vt (це Мyр). Це обумовлюється другим порядком

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

Page 76: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

75

розрахунку масив Мур для t=0 (v=0) формується у відповідності із заданою

формою струни. Для розрахунку перехідної характеристики у відповідності

з нульовими початковими умовами масив Мур треба заповнити нулями. Що

стосується масиву Му для t (v=1), то для його заповнення можна

скористатись розкладенням в ряд Маклорена

2

0

2

2

00 !2

1

tttt t

y

t

yyy , (3.62)

обмежившись в останньому трьома першими членами. Тут перший член –

початкова форма струни, 0

tt

y у другому доданку – початкові швидкості, а

от

0

2

2

tt

y – в третьому доданку визначатимемо з (1.40), розв‟язуючи

останнє рівняння відносно

0

2

2

tt

y.

2

0

0

2

22

00

2

2 1

ts

sttt

fmt

yc

t

ye

t

y. (3.63)

За нульових початкових умов 00

tt

y, отже

2

0

0

2

2 1

ts

st

fmt

y і згідно

(3.62)

2

0

1

2

1|

ts

s

t fm

y . (3.64)

Якщо зовнішня сила не розглядається як вхідний сигнал, то 0sf і

для визначення (розрахунку) перехідної характеристики формула (3.63)

даватиме нульове значення. Якраз цей варіант ми й розглянемо нижче. До

речі, при достатньо малому невелика неточність у заданні масиву Му для

t не викличе суттєвих похибок у розрахунку перехідної характеристики

при формуванні якої мають бути реалізовані багато сотень, а то і тисяч

кроків за часом.

Текст програми DemStrn, що реалізує описаний алгоритм розрахунку

перехідних та імпульсних характеристик струни, наводиться в Додатку 8.

Динамічні характеристики струни, сформовані у програмі DemStrn,

показано на рис 3.8.

Page 77: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

76

а)

б)

в)

Рис. 3.8. Динамічні характеристики струни: а – перехідна;

б – імпульсна; в – амплітудно-фазова

Page 78: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

77

3.9. Навантажена нитка

Дискретизуємо диференціальне рівняння (1.50)

.2

2

,1,

2

,1,,11

1,,

2

1,,1,

h

yy

h

yyyshl

m

mg

yy

m

kyyy

vsvsvsvsvs

n

vsvs

n

vsvsvs

Розв‟язуємо отримане співвідношення відносно 1, vsy

,)(2

2

,1,,1,,121

1,,01,,1,

vsvsvsvsvs

vsvsvsvsvs

yyhyyyshee

yyeyyy

(3.65)

де lm

me

h

ge

m

ke

nn

122

2

10 ;;

.

Щодо граничних умов, то обмежимось розглядом варіанту, коли на

верхньому кінці нитки маємо граничну умову І роду

vv yy 1,0,

де vy стосовно до визначення перехідних характеристик може приймати

значення 0 або 1. Для нижнього кінця (x=l), де кріпиться тягар, баланс сил,

прикладених до тягаря, в проекції на вісь у можна представити так

v

vmvmvmvmvmvmvmf

h

yygm

yyk

yyym ,1

,1,

1

1,,

12

1,,1,

1

2

,

де k1 – коефіцієнт опору рухові тягаря.

Розв‟яжемо це співвідношення відносно 1, vm

y

15,1,41,,31,,1, )()(2 feyyeyyeyyy vmvmvmvmvmvmvm , (3.67)

де 1

2

5

2

4

1

13 ;;

me

h

ge

m

ke

.

Тут в якості імовірного вхідного сигналу можна розглядати силу f1,

прикладену до тягаря. Але не варто забувати, що диференціальне рівняння

(1.50) і відповідне йому різницеве рівняння (3.65) можуть вважатись

адекватними об‟єкту лише за умови малості відхилень y від усталеного

режиму (від вертикалі). А одинична сила f1 може виявитись здатною

викликати далеко не маленькі відхилення нитки від вертикалі.

Орієнтуючись на нульові початкові умови будемо масиви Мур (для

t=0) та Му t заповнювати нулями. Програма DemNit наведена у

Додатку 9. Динамічні характеристики розгляданого об‟єкта – рис. 3.9.

Варто відзначити, що при слабкому затуханні коливань (при малих

значеннях k та k1) перехідні процеси можуть затягуватись аж до

нескінченності (при відсутності опору) – і тоді виконати умову

0

)(t

tg

при скінченному D стає неможливим.

Page 79: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

78

а)

б)

в)

Рис. 3.9. Динамічні характеристики навантаженої нитки:

а – перехідна; б – імпульсна; в – амплітудно-фазова

Page 80: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

79

Це накладає обмеження на можливість формування годографів

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

Тоді мова може йти про розкладення коливань на гармоніки, визначення

частот і амплітуд цих гармонік (для відповідного каналу, початкових

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

задач розглядалась авторами в [40, 41].

3.10. Проточний датчик щільності рідини

Як уже відзначалось раніше, розгляданий тип об‟єкта

диференціальним рівнянням чи відповідною системою диференціальних

рівнянь у звичайному смислі не описується, зате нами було отримано

формули перехідної (1.58), імпульсної (2.97) характеристик та передатної

функції (2.98). Виконаємо в (2.98) підстановку jp

1)sin()cos(11)(

jj

ej

j

ejW

jj

,

або jIRjW )( ,

де

1)cos(,

)sin( IR .

Отже, частотні характеристики проточного датчика щільності можна

розраховувати безпосередньо за формулою (3.68), замість того щоб

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

інших об‟єктів з розподіленими параметрами.

Сформуємо підпрограму UrGod, що реалізує формулу (3.68). procedure UrGod;

var WTau: real;

begin

WTau:= W*Tau;

if WTau=0

then

begin

x=1; y=0;

end

else

begin

x:= sin (WTau)/WTau;

y:= (cos (Wtau)-1)/Wtau;

end;

end;

Щоб скористатись модулем GodoGt наявну там процедуру UrGod

треба замінити на щойно приведену. Можливий і інший варіант. Замість

модуля GodoGt формується файл з іменем, наприклад, Godogr, в якому

відсутня процедура UrGod, а відповідні змінні, описані в модулі Godogr,

переносяться в основну програму. В основній же програмі файл Godogr

Page 81: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

80

підключається до програми після опису підпрограми UrGod типу щойно

сформованої.

Отже файл Godogr.pas складається із підпрограм SZ, Scan,

PointGod, LineGod, Godo, Indw, DemGodo. В програмі DemPdTr,

лістинг якої наводиться в Додатку И, передбачено формування годографа

)( jW як за формулою (3.68), так і за масивом Gt:CoefL ординат

імпульсної характеристики – для порівняння. Результати роботи програми

DemPdTr показано на рис 3.10.

3.11. Транспортер-витратомір

Нормована (до одиничного коефіцієнта передачі) перехідна

характеристика цього об‟єкта розглянута в п. 1.10 – формула (1.66) .

Відповідна імпульсна характеристика наведена в п. 2.10 – формула

(2.99).

Передатна функція (2.100) є квадратом від (2.98). Амплітудно-фазова

характеристика, що відповідає (2.100), очевидно, буде

ImRe1

)(2

jjIRj

ejW

j

, (3.69)

де

1)cos(,

)sin( IR , і відповідно IRIR 2Im,Re 22

.

Динамічні характеристики (перехідна, імпульсна та амплітудно-

фазова) транспортера-витратоміра демонструє програма DemPdTr, лістинг

якої наводиться у Додатку И. Графіки та годографи, сформованої за

допомогою цієї програми, приведені на рис. 3.11.

Page 82: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

81

а)

б)

в)

Рис. 3.10. Динамічні характеристики проточного датчика:

а – перехідна; б – імпульсна; в – амплітудно-фазова

Page 83: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

82

а)

б)

в)

Рис. 3.11. Динамічні характеристики транспортера-витратоміра:

а – перехідна; б – імпульсна; в – амплітудно-фазова

Page 84: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

83

4. СТАТИЧНІ РЕЖИМИ

Диференціальні рівняння, що моделюють динамічну поведінку

систем автоматичного керування, можуть бути записані в “абсолютних”

величинах або їх прирощеннях відносно усталеного режиму, прийнятого за

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

рівняння в обох випадках виглядають абсолютно однаково (з точністю до

позначень). Як правило (за умовчанням), змінні системи (параметри стану)

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

режим в математичному плані відповідає нульовим початковим умовам, а

коефіцієнти диференціальних рівнянь вважаються константами. Та

обставина, що вони часто суттєво залежать від вибраного базового режиму,

не акцентується і тим самим динамічні характеристики, розраховані для

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

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

діапазон можливих режимів, і може виявитись, що динамічні властивості

при переході з одного режиму на інший істотно змінюються і, не

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

погіршення якості функціонування системи. Настройки регулятора,

оптимізовані під розрахунковий режим, можуть виявитись неприйнятними

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

регулювання з поточним режимом. Але для цього треба, по-перше,

ідентифікувати сам режим, а по-друге, мати в розпорядженні алгоритм

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

контроль навантаження об‟єкта. А для корекції параметрів регулятора

треба мати можливість фіксувати поточний режим (шляхом його

розрахунку), визначити кількісно його характеристики, відповідно

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

Отже, перший етап - розв‟язання систем рівнянь статики. Це рівняння

динаміки, в яких онулені похідні за часом. Статичний режим – це розв‟язок

систем рівнянь статики або ж межа, до якої прямує з часом розв‟язок

системи рівнянь динаміки (об‟єкт вважається стійким). Останній підхід

називають принципом Лібмана. З фізичної точки зору стійкий лінійний

об‟єкт має прийти в одне й те ж положення рівноваги (статичний режим)

починаючи з будь-якого початкового стану, отже, початковий стан можна

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

такі комбінації початкових умов, при яких розрахунок виявляється

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

розв‟язку рівнянь статики наштовхується на неможливість надійного

визначення коефіцієнтів рівнянь до їх розв‟язання (коефіцієнти залежать

від режиму, а режим визначається лише після розв‟язання системи

рівнянь). Отже, доводиться використовувати ітераційні алгоритми, коли

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

уточнюється шуканий усталений режим. На ці та інші особливості

Page 85: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

84

розрахунку усталених режимів ми і збираємось звернути увагу читача у

даному розділі.

4.1. Товста теплоакумулююча стінка

Розглянемо окремо варіанти плоскої, циліндричної та сферичної

стінок. Для плоскої стінки у статичному режимі згідно (1.1) маємо (при

k=0):

.02

2

dx

d (4.1)

Звертаємо увагу читача на те, що диференційне рівняння в частинних

похідних (1.1) для статичного режиму 0при тобто t

перетворюється на звичайне диференційне рівняння (4.1), оскільки із двох

незалежних змінних (t та x в (1.1) ) залишається лише одна змінна x.

Розв‟язок (4.1) є очевидним

xFE , (4.2)

де E та F - сталі інтегрування.

Перша похідна від (4.2)

Fdx

d

. (4.3)

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

позначати номер граничної умови на “лівій” поверхні (х=0) як Ngl, тоді для

“правої” поверхні (х= ) це буде Ngr. Тут - товщина стінки.

Отже, варіант 1 – Ngl = 1, Ngr = 1 (k = 0).

Розв‟язок

xFE 1,11,11,1 . (4.4)

Граничні умови

rx

lx

T

T

1,1

01,1 ,

або після підстановки сюди розв‟язку

,

,

1,11,1

1,1

r

l

TFE

TE

звідки

)6.4(.

)5.4(,

1,11,1

1,1

ETF

TE

r

l

Варіант 2 – Ngl = 1, Ngr = 2 (k = 0).

Розв‟язок

xFE 2,12,12,1 . (4.7)

Page 86: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

85

Граничні умови

r

x

lx

Qdx

d

T

2,1

02,1 ,

або

,

,

2,1

2,1

r

l

QF

TE

звідки

)9.4(.

)8.4(,

2,1

2,1

r

l

QF

TE

Варіант 3 – Ngl = 1, Ngr = 3 (k = 0).

Розв‟язок

xFE 3,13,13,1 . (4.10)

Граничні умови

srxx

lx

Tdx

d

T

3,1

3,1

1

03,1 ,

або

,

,

3,13,13,1

1

3,1

sr

l

TFEF

TE

звідки

)12.4(.

)11.4(,

1

3,13,1

3,1

ETF

TE

sr

l

Варіант 4 – Ngl = 2, Ngr = 1 (k = 0).

Розв‟язок

xFE 1,21,21,2 . (4.13)

Граничні умови

rx

l

x

T

Qdx

d

1,2

0

1,2,

або

Page 87: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

86

,

,

1,21,2

1,2

r

l

TFE

QF

звідки

)15.4(.

)14.4(,

1,21,2

1,2

FTE

QF

r

l

Варіант 5 – Ngl = 2, Ngr = 2 (k = 0).

Розв‟язок

xFE 2,22,22,2 . (4.16)

Граничні умови

r

x

l

x

Qdx

d

Qdx

d

2,2

0

2,2,

або

,

,

2,2

2,2

r

l

QF

QF

Дана система несумісна (2,2F визначається неоднозначно тоді як

2,2E

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

комбінації граничних умов неможливий. Це очевидно і з фізичних

міркувань. При rl QQ порушується закон збереження енергії (теплової, в

даному випадку).

Варіант 6 – Ngl = 2, Ngr = 3 (k = 0).

Розв‟язок

xFE 3,23,23,2 . (4.17)

Граничні умови

srxx

l

x

Tdx

d

Qdx

d

3,23,2

1

0

3,2,

або

,

,

3,23,23,2

1

3,2

sr

l

TFEF

QF

звідки

Page 88: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

87

)19.4(.

)18.4(,

3,2

1

3,2

3,2

FTE

QF

sr

l

Варіант 7 – Ngl = 3, Ngr = 1 (k = 0).

Розв‟язок

xFE 1,31,31,3 . (4.20)

Граничні умови

rx

xsl

x

T

Tdx

d

1,3

01,3

0

1,3

0

,

або

.

,

1,31,3

1,31,3

0

r

sl

TFE

ETF

Після перегрупування

.

,

1,31,3

1,3

0

1,3

r

sl

TFE

TFE

Звідки за правилом Крамера

)22.4(.

)21.4(,

;1

;1

;1

;1

1,31,3

00

1,3

FTE

TTT

T

F

r

slrr

sl

Варіант 8 – Ngl = 3, Ngr = 2 (k = 0).

Розв‟язок

xFE 2,32,32,3 . (4.23)

Граничні умови

r

x

xsl

x

Qdx

d

Tdx

d

2,3

02,3

0

2,3

0

,

або

Page 89: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

88

.

,

2,3

2,32,3

0

r

sl

QF

ETF

Звідки

)25.4(.

)24.4(,

2,3

0

2,3

2,3

FTE

QF

sl

r

Варіант 9 – Ngl = 3, Ngr = 3 (k = 0).

Розв‟язок

xFE 3,33,33,3 . (4.26)

Граничні умови

srxx

xsl

x

Tdx

d

Tdx

d

3,33,3

1

03,3

0

3,3

0

,

або

.

,

3,33,33,3

1

3,33,3

0

sr

sl

TFEF

ETF

Після перегрупування

,

,

3,3

1

3,3

3,3

0

3,3

sr

sl

TFE

TFE

Звідки за правилом Крамера

)28.4(.

)27.4(,

;1

;1

;1

;1

3,3

0

3,3

01

1

0

3,3

FTE

TTT

T

F

sl

slsrsr

sl

Page 90: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

89

Переходимо до розгляду циліндричної стінки (k=1). Диференціальне

рівняння (1.1) при k=1 в статиці

01

2

2

dr

d

rdr

d . (4.29)

Розв‟язок (4.29) шукаємо у вигляді

rFE ln . (4.30)

Похідна (по r) від (4.30)

rF

dr

d 1

. (4.31)

Друга похідна

22

2 1

rF

dr

d

.

Підставляємо значення похідних в (4.29)

0111

2

rF

rrF .

Отримана тотожність свідчить про правильність розв‟язку (4.30). Значення

E та F визначаємо із граничних умов.

Проблеми виникають при спробі розповсюдити диференціальне

рівняння (4.29) та його розв‟язок (4.30) на випадок коли r=0.

Розглянемо межу, до якої наближається dr

d

r

1 при 0r ,

застосовуючи правило Лопіталя

2

2

000limlim

1lim

dr

d

r

dr

d

dr

d

r rrr

.

Отже, при 0r рівняння (4.29) зводиться до виду

0

0

2

2

0

2

2

rrdr

d

dr

d

або що еквівалентно

0

0

2

2

rdr

d , (4.32)

розв‟язок якого

rFEr

0

. (4.33)

Оскільки ми розглядаємо одновимірну задачу, то на осі суцільного

циліндра тепловий потік має бути відсутнім (умова симетрії)

00

rdr

d,

звідки після підстановки сюди (4.33) отримуємо

0F ,

і розв‟язок (4.33) набуває остаточного вигляду, а саме

Page 91: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

90

Er

0

.

А тепер розглянемо можливі варіанти граничних умов на зовнішній

поверхні суцільного циліндра.

Варіант 10 – Ngl = 0, Ngr = 1 (k = 1).

Тут і в подальшому граничну умову на осі суцільного циліндра (так

як і у центрі суцільної кулі) будемо позначати Ngl = 0.

Розв‟язок

1,01,0 E . (4.35)

Гранична умова при 1rr

rrrT

11,0 ,

отже,

rTE 1,0. (4.36)

Варіант 11 – Ngl = 0, Ngr = 2 (k = 1).

Розв‟язок

2,02,0 E . (4.37)

Гранична умова при 1rr

r

rr

Qdr

d

1

2,0

або після підстановки (4.37)

rQ 0 .

Бачимо, що значення 2,0E не визначається, звідси робимо висновок,

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

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

через зовнішню поверхню суцільного циліндра його температура буде

необмежено зростати або зменшуватися в залежності від знаку rQ .

Варіант 12 – Ngl = 0, Ngr = 3 (k = 1).

Розв‟язок

3,03,0 E . (4.38)

Гранична умова

srrrrr

Tdr

d

1

1

3,0

3,0

1

або після підстановки (4.38)

srTE 3,0

1

0

,

звідки

Page 92: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

91

srTE 3,0. (4.39)

Варіант 13 – Ngl = 1, Ngr = 1 (k = 1).

Розв‟язок – див. (4.30)

rFE ln1,11,11,1 . (4.40)

Граничні умови

rrr

lrr

T

T

1

0

1,1

1,1 ,

або

,ln

,ln

11,11,1

01,11,1

r

l

TrFE

TrFE

звідки

)42.4(.ln

)41.4(,ln

ln;1

ln;1

;1

;1

01,11,1

01

1

01,1

rFTE

rr

TT

r

r

T

T

F

l

lrr

l

Варіант 14 – Ngl = 1, Ngr = 2 (k = 1).

Розв‟язок

rFE ln2,12,12,1 . (4.43)

Граничні умови

r

rr

lrr

Qdr

d

T

1

0

2,1

2,1 ,

або

,

,ln

1

2,1

02,12,1

r

l

Qr

F

TrFE

звідки

)45.4(.ln

)44.4(,

02,12,1

12,1

rFTE

Qr

F

l

r

Page 93: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

92

Варіант 15 – Ngl = 1, Ngr = 3 (k = 1).

Розв‟язок

rFE ln3,13,13,1 . (4.46)

Граничні умови

srrrrr

lrr

Tdr

d

T

1

1

0

3,13,1

1

3,1 ,

або

.ln

,ln

13,13,1

1

3,1

1

03,13,1

sr

l

TrFEr

F

TrFE

Перегруповуємо

,ln

,ln

11

13,13,1

03,13,1

sr

l

Tr

rFE

TrFE

звідки

)42.4(.ln

)47.4(,

ln

ln;1

ln;1

;1

;1

03,13,1

01

11

11

1

03,1

rFTE

rrr

TT

rr

r

T

T

F

l

lsrsr

l

Варіант 16 – Ngl = 2, Ngr = 1 (k = 1).

Розв‟язок

rFE ln1,21,21,2 . (4.49)

Граничні умови

rrr

l

rr

T

Qdr

d

1

0

1,2

1,2,

або

,ln

,

11,21,2

0

1,2

r

l

TrFE

Qr

F

звідки

Page 94: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

93

)51.4(.ln

)50.4(,

11,21,2

01,2

rFTE

Qr

F

r

l

Варіант 17 – Ngl = 2, Ngr = 2 (k = 1).

Розв‟язок

rFE ln2,22,22,2 . (4.52)

Граничні умови

r

rr

l

rr

Qdr

d

Qdr

d

1

0

2,2

2,2,

або

.

,

1

2,2

0

2,2

r

l

Qr

F

Qr

F

З отриманої системи рівнянь 2,2F визначається неоднозначно, тоді як

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

усталений режим неможливий (хіба що при 10 rQrQ rl коли значення

усталеної температури може бути будь-яким).

Варіант 18 – Ngl = 2, Ngr = 3 (k = 1).

Розв‟язок

rFE ln3,23,23,2 . (4.53)

Граничні умови

srrrrr

l

rr

Tdr

d

Qdr

d

1

1

0

3,23,2

1

3,2,

або

,ln

,

13,23,2

1

3,2

1

0

3,2

sr

l

TrFEr

F

Qr

F

звідки

Page 95: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

94

)19.4(.ln

)54.4(,

3,21

11

3,2

03,2

Frr

TE

Qr

F

sr

l

Варіант 19 – Ngl = 3, Ngr = 1 (k = 1).

Розв‟язок

rFE ln1,31,31,3 . (4.56)

Граничні умови

rrr

rrsl

rr

T

Tdr

d

1

0

0

1,3

1,31,3

0

,

або

.ln

,ln

11,31,3

01,31,3

0

1,3

0

r

sl

TrFE

rFETr

F

Перегруповуємо

,ln

,ln

11,31,3

00

01,31,3

r

sl

TrFE

Tr

rFE

звідки

)58.4(.ln

)57.4(,

ln

ln;1

ln;1

;1

;1

11,31,3

00

01

1

00

0

1,3

rFTE

rrr

TT

r

rr

T

T

F

r

slrr

sl

Варіант 20 – Ngl = 3, Ngr = 2 (k = 1).

Розв‟язок

rFE ln2,32,32,3 . (4.59)

Граничні умови

Page 96: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

95

r

rr

rrsl

rr

Qdr

d

Tdr

d

1

0

0

2,3

2,32,3

0

,

або

,

,ln

1

2,3

02,32,3

0

2,3

0

r

sl

Qr

F

rFETr

F

звідки

)61.4(.ln

)60.4(,

0

00

2,32,3

12,3

rr

FTE

Qr

F

sl

r

Варіант 21 – Ngl = 3, Ngr = 3 (k = 1).

Розв‟язок

rFE ln3,33,33,3 . (4.62)

Граничні умови

srrrrr

rrsl

rr

Tdr

d

Tdr

d

1

1

0

0

3,33,3

1

3,33,3

0

,

або

.ln

,ln

13,33,3

1

3,3

1

03,33,3

0

3,3

0

sr

sl

TrFEr

F

rFETr

F

Після перегрупування

,ln

,ln

11

13,33,3

00

03,33,3

sr

sl

Tr

rFE

Tr

rFE

звідки

Page 97: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

96

)64.4(.ln

)63.4(,

ln

ln;1

ln;1

;1

;1

11

13,33,3

0011

01

11

1

00

0

3,3

rrFTE

rrrr

TT

rr

rr

T

T

F

sr

slsrsr

sl

А тепер переходимо до розгляду усталеного режиму для кулі (k=2).

Відповідне диференціальне рівняння

02

2

2

dr

d

rdr

d . (4.65)

Розв‟язок даного рівняння будемо шукати у вигляді

r

FE . (4.66)

При цьому перша та друга похідні відповідно дорівнюють

2r

F

dr

d

, (4.67)

32

2 2

r

F

dr

d

. (4.68)

Підставляємо (4.67) та (4.68) в (4.65)

022

23

r

F

rr

F.

Отримали тотожність, що свідчить про те, що (4.66) дійсно є

розв‟язком (4.65).

При 0r рівняння (4.65) та його розв‟язок (4.66) стають

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

d

r

2 в (4.65) при 0r .

Використовуючи правило Лопіталя отримуємо

2

2

0002lim2lim

2lim

dr

d

r

dr

d

dr

d

r rrr

.

Підставляємо отриманий результат в (4.65). Маємо

02

0

2

2

0

2

2

rrdr

d

dr

d ,

що еквівалентно

0

0

2

2

rdr

d . (4.69)

Page 98: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

97

Розв‟язок останнього рівняння

rFE .

Умова температурної симетрії для центра кулі

00

rdr

d

або з урахуванням попереднього виразу

0F ,

і розв‟язок (4.70) набуває вигляду

E . (4.70)

Як і для циліндра, варіант коли 00 r розглядатимемо як такий, що

відповідає Ngl = 0.

Варіант 22 – Ngl = 0, Ngr = 1 (k = 2).

Розв‟язок

1,01,0 E . (4.71)

Гранична умова

rrrT

11,0

або

rTE 1,0. (4.72)

Варіант 23 – Ngl = 0, Ngr = 2 (k = 2).

Розв‟язок

2,02,0 E . (4.73)

Гранична умова

r

rr

Qdr

d

1

2,0

або

rQ 0 .

Як бачимо, з граничної умови 2,0E не визначається. Усталений режим

при 0rQ та даних граничних умовах неможливий.

Варіант 24 – Ngl = 0, Ngr = 3 (k = 2).

Розв‟язок

3,03,0 E . (4.74)

Гранична умова

srrrrr

Tdr

d

1

1

3,0

3,0

1

або

Page 99: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

98

srTE 3,0

1

0

,

звідки

srTE 3,0. (4.75)

Варіант 25 – Ngl = 1, Ngr = 1 (k = 2).

Розв‟язок (4.66)

r

FE

1,1

1,11,1 . (4.76)

Граничні умови

rrr

lrr

T

T

1

0

1,1

1,1 ,

або

,

,

1

1,1

1,1

0

1,1

1,1

r

l

Tr

FE

Tr

FE

звідки

)78.4(.

)77.4(,11

1;1

1;1

;1

;1

0

1,1

1,1

011

01,1

r

FTE

rr

TT

r

r

T

T

F

l

lrr

l

Варіант 26 – Ngl = 1, Ngr = 2 (k = 2).

Розв‟язок

r

FE

2,1

2,12,1 . (4.79)

Граничні умови

r

rr

lrr

Qdr

d

T

1

0

2,1

2,1 ,

або

Page 100: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

99

,

,

21

2,1

0

2,1

2,1

r

l

Qr

F

Tr

FE

звідки

)81.4(.

)80.4(,

0

2,12,1

21

2,1

r

FTE

Qr

F

l

r

Варіант 27 – Ngl = 1, Ngr = 3 (k = 2).

Розв‟язок

r

FE

3,1

3,13,1 . (4.82)

Граничні умови

srrrrr

lrr

Tdr

d

T

1

1

0

3,1

3,1

1

3,1 ,

або

.

,

1

3,13,12

1

3,1

1

0

3,13,1

sr

l

Tr

FE

r

F

Tr

FE

Перегруповуємо

,1

,1

2111

3,13,1

0

3,13,1

sr

l

Trr

FE

Tr

FE

звідки

)84.4(.

)83.4(,11

1;1

1;1

;1

;1

03,13,1

02

111

2111

03,1

rFTE

rrr

TT

rr

r

T

T

F

l

lsrsr

l

Page 101: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

100

Варіант 28 – Ngl = 2, Ngr = 1 (k = 2).

Розв‟язок

r

FE

1,2

1,21,2 . (4.85)

Граничні умови

rrr

l

rr

T

Qdr

d

1

0

1,2

1,2,

або

,

,

1

1,2

1,2

20

1,2

r

l

Tr

FE

Qr

F

звідки

)87.4(.

)86.4(,

11,21,2

20

1,2

rFTE

Qr

F

r

l

Варіант 29 – Ngl = 2, Ngr = 2 (k = 2).

Розв‟язок

r

FE

2,2

2,22,2 . (4.88)

Граничні умови

r

rr

l

rr

Qdr

d

Qdr

d

1

0

2,2

2,2,

або

.

,

21

2,2

20

2,2

r

l

Qr

F

Qr

F

Отримана система однозначного розв‟язку не має.

Page 102: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

101

Варіант 30 – Ngl = 2, Ngr = 3 (k = 2).

Розв‟язок

r

FE

3,2

3,23,2 . (4.89)

Граничні умови

srrrrr

l

rr

Tdr

d

Qdr

d

1

1

0

3,23,2

1

3,2,

або

,

,

1

3,2

3,221

3,2

1

20

3,2

sr

l

Tr

FE

r

F

Qr

F

звідки

)91.4(.1

)90.4(,

12

11

3,23,2

20

3,2

rrFTE

Qr

F

sr

l

Варіант 31 – Ngl = 3, Ngr = 1 (k = 2).

Розв‟язок

r

FE

1,3

1,31,3 . (4.92)

Граничні умови

rrr

rrsl

rr

T

Tdr

d

1

0

0

1,3

1,31,3

0

,

або

.

,

1

1,31,3

0

1,31,32

0

1,3

0

r

sl

Tr

FE

r

FET

r

F

Перегруповуємо

Page 103: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

102

,

,1

1

1,3

1,3

2000

1,31,3

r

sl

Tr

FE

Trr

FE

звідки

)58.4(.

)93.4(,11

1;1

1;1

;1

;1

1

1,31,3

12

000

1

2000

1,3

r

FTE

rrr

TT

r

rr

T

T

F

r

rslr

sl

Варіант 32 – Ngl = 3, Ngr = 2 (k = 2).

Розв‟язок

r

FE

2,3

2,32,3 . (4.95)

Граничні умови

r

rr

rrsl

rr

Qdr

d

Tdr

d

1

0

0

2,3

2,32,3

0

,

або

,

,

21

2,3

0

2,32,32

0

2,3

0

r

sl

Qr

F

r

FET

r

F

звідки

)97.4(.1

)96.4(,

2000

2,32,3

21

2,3

rrFTE

Qr

F

sl

r

Page 104: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

103

Варіант 33 – Ngl = 3, Ngr = 3 (k = 2).

Розв‟язок

r

FE

3,3

3,33,3 . (4.98)

Граничні умови

srrrrr

rrsl

rr

Tdr

d

Tdr

d

1

1

0

0

3,33,3

1

3,33,3

0

,

або

.

,

1

3,33,32

1

3,3

1

0

3,33,32

0

3,3

0

sr

sl

Tr

FE

r

F

r

FET

r

F

Перегруповуємо

,1

,1

2111

3,33,3

2000

3,33,3

sr

sl

Trr

FE

Trr

FE

звідки

)100.4(.1

)99.4(,11

1;1

1;1

;1

;1

2111

3,33,3

2000

2111

2111

2000

3,3

rrFTE

rrrr

TT

rr

rr

T

T

F

sr

slsrsr

sl

Графіки температурних полів для вищерозглянутих варіантів

формуються в підпрограмі DemStat (програма DemSt, лістинг якої

представлений у Додатку 2). Для прикладу на рис. 4.1 представлені

температурні поля для плоскої, циліндричної та сферичної стінок.

Page 105: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

104

а)

б)

в)

Рис. 4.1. Температурне поле в усталеному режимі для тепло-

акумулюючої стінки: а – Ngl = 3, Ngr = 1, k = 0; б – Ngl = 1,

Ngr = 1, k = 1; в – Ngl = 3, Ngr = 2, k = 2

Page 106: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

105

4.2. Неізольований стрижень

В усталеному режимі диференціальне рівняння (1.19) набуває

вигляду

0)(2

2

osbdx

da

або

os

dx

df

2

2

, (4.101)

де 0

00

p

s

b

af

.

Розв‟язок (4.33) матиме вигляд

.вільнвим (4.102)

Характеристичне рівняння, що відповідає (4.101) .012 rf

Його корені .1

2,1f

r Вільна складова розв‟язку:

f

x

f

x

в ільн eCeC

21 . (4.103)

Вимушену складову шукаємо у вигляді правої частини (4.101), тобто

у вигляді константи (оскільки os не є функцією координати х).

Cвим .

Підстановка у (4.101) дає .osвим Отже, розв‟язок (4.102) набуває

вигляду

f

x

f

x

os eCeC

21 .

Скористаємось граничними умовами (1.20) та (1.21)

.011

,11

21

2121

f

l

f

l

osos

ef

Cef

C

CCf

Cf

C

Спрощуємо

.011

,0

21

21

f

l

f

l

ef

Cef

C

Cf

Cf

Розв‟язуємо відносно 1C та 2C : ,01 C .02 C

Page 107: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

106

Отже, розв‟язок (4.102)

,os (4.104)

Що, до речі, і варто було очікувати з чисто фізичних міркувань – в

усталеному режимі стрижень має прийняти температуру оточуючого

середовища, бо інших притоків та витоків тепла, крім теплообміну з

середовищем температури ,os в моделі не передбачено.

4.3. Проточна ємкість з товстими стінками

Математичну модель статики отримуємо з (1.23), (1.24), покладаючи

похідні за часом рівними нулю

010

x

stinp bb , (4.105)

xdx

d st

0,02

2

. (4.106)

А щодо граничних умов, залишимо як є , а саме

0

0

0

x

st

xdx

d

, (4.107)

os

x

st

xdx

d

1 . (4.108)

Розв‟язок для (4.106)

.10 xEEst (4.109)

Підставляємо (4.109) в (4.107) та (4.108)

)112.4(.

)111.4(,

)110.4(,

1011

001

010

os

inp

EEE

EE

Ebb

Систему (4.110) – (4.112) розв‟язуємо відносно 10 ,, EE . Підставимо

з (4.110) в (4.111).

Тоді система зведеться до двох рівнянь

,

,

1

1

0

1

00

0

os

inp

EE

Eb

E

Звідки, за правилом Крамера

,001

0 fb

E osinp

(4.113)

,)(1 fE inpos (4.114)

Page 108: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

107

де

100

11

bf .

Підстановку отриманих значень 0E та 1E в (4.109) та (4.110)

залишаємо читачеві.

Графіки температурних полів для статичного режиму проточної

ємкості формуються в підпрограмі Stat (програма DemPrе, лістинг якої

представлений у Додатку 4). На рис. 4.2 показано розподіл температур в

ємкості в усталеному режимі.

Рис. 4.2. Розподіл температур в стінці ємкості в усталеному режимі:

0 – inp ; 1 – xst ; 2 –

os

4.4. Трубопровід з тонкими стінками

З (1.28) та (1.29) для усталеного режиму маємо

)116.4(.

)115.4(,

10

00

osst

st

bb

dx

dwT

При граничній умові (див. (1.30))

.0

constinp

x

(4.117)

Підставляємо st з (4.116) в (4.115)

osbbdx

dwT

1000 ,

або .)1( 1000osbb

dx

dwT

Але ж 101 bb , отже,

Page 109: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

108

os

dx

df

0 , (4.118)

де 1000 bwTf .

Розв‟язуємо (4.118). Характеристичне рівняння:

,010 rf

його корінь 0

1

fr .

Вимушена складова розв‟язку osвим . Повний розв‟язок:

0

1f

x

os eE

.

З урахуванням (4.117) маємо остаточно

0)(f

x

osinpos e

. (4.119)

А тепер підставляємо (4.119) в (4.116) osf

x

osinposst beb 100)(

,

або після спрощення

.)( 0

0f

x

osinposst eb

(4.120)

Запропонований підхід для визначення розподілу температури

теплоносія x та стінки тонкостінного трубопроводу xst по

координаті x реалізований у програмі DemTr із використанням підпрограми

StCar. Лістинг програмного коду DemTr знаходиться у Додатку 5. На рис.

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

трубопроводу.

Рис. 4.3. Розподіл температур у тонкостінному трубопроводі:

0 – x ; 1 – xst ; 2 – os

Page 110: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

109

4.5. Змійовиковий теплообмінник

З (1.31) – (1.35) для усталеного режиму маємо

)125.4(,

)124.4(,

)123.4(,

)122.4(,

)121.4(,

,0

0

0

62

53

,233

0

122

21

00

1

100

00

inp

x

os

inpn

l

bb

bbdxl

b

bb

dx

dwT

де 1100

000

pp

pb

, 01 1 bb ,

00

0000

p

csT

,

221122

112

FFcQ

Fb

,

221122

223

FFcQ

Fb

, 32

221122

224 1 bb

FFcQ

cQb

,

3322

225

FF

Fb

, 56 1 bb .

Увага! Цифри 0, 1, 2, 3 справа зверху – це індекси, а не степені!

Як і в попередніх задачах вважатимемо, що усі коефіцієнти відомі і

розглядаються як константи, зокрема, не залежать від координати х та

вибраного статичного режиму.

Підставляємо 1 з (4.122) в (4.121)

21

00

00

00

bbdx

dwT ,

або 21

00

0

00 )1(

bbdx

dwT .

Але ж 101 bb , отже,

200

1

00

dx

d

b

wT. (4.126)

Температура 2 (у міжтрубному просторі) не є функцією від х , отже,

(4.126) можна розв‟язати відносно 0 (байдуже, що ми не знаємо

конкретного значення 2 ):

200

1

00

dx

d

b

wT,

де 001 wTbg .

Сталу інтегрування С визначаємо з граничної умови (4.125), в

результаті отримуємо

Page 111: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

110

.)( 2,020 gxinp e (4.127)

Підставляємо отриманий вираз 0 з (4.127) в (4.122)

21

2,020

1 )( beb gxinp .

Зводимо подібні

gxinp ebbb )()( 2,0

02

101 .

Але ж 110 bb , так що

gxinp eb )( 2,00

21 . (4.128)

А тепер підставляємо 1 з (4.128) в (4.123), в якому замість

3 також

підставляємо його значення з (4.118)

inposl

bbbbdxl

b ,246

253

0

122 )( . (4.129)

Візьмемо інтеграл в (4.129)

l

gxinpl

gxinpl

eg

bldxebdx

0

2,00

2

0

2,00

2

0

1 1)(

Маємо: glinpl

eg

bldx 12,002

0

1 . (4.130)

З урахуванням (4.130) рівняння (4.129) набуває вигляду

inposglinp bbbbeg

bl

l

b ,246

253

2,00222 1

.

Зводимо подібні

inposinpglgl bbbegl

bbbbe

gl

bbb ,2

463,020

5320

22 111

.

Розв‟язуємо відносно 2

osinpinp RRR 3,2

2,0

12 , (4.131)

де 5320

20 11 bbegl

bbbR gl

, gleRgl

bbR

1

0

201 ,

0

42

R

bR , .

0

633

R

bbR

Далі, як кажуть, справа техніки. 2 з (4.131) можна підставити в

(4.127) – отримаємо 0 . Маючи

0 підставимо його в (4.122) – матимемо 1 . Підставляючи

2 з (4.131) в (4.118) – отримаємо формулу для 3 .

Із програмною реалізацію наведеного алгоритму можна

ознайомитись у програмі DemZmt, що наведена у Додатку 6. За розрахунок

статичного режиму відповідає підпрограма Stat. На рис. 4.4 представлено

температурний режим змійовикового теплообмінника.

Page 112: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

111

Рис. 4.4. Розподіл температур у змійовиковому теплообміннику:

0 – x0 ; 1 – x1 ; 2 – 2 ; 3 –

3 ; 4 – os .

4.6. Прямоточний теплообмінник типу “труба в трубі”

З (1.32) – (1.37) для усталеного режиму матимемо

)137.4(,

)136.4(,

)135.4(,

)134.4(,

)133.4(,

)132.4(,

,2

0

2

,0

0

0

52

43

33

12

22

22

21

00

1

100

00

inp

x

inp

x

osbb

bbdx

dwT

bb

dx

dwT

де 00

0000

p

csT

,

1100

000

pp

pb

, 01 1 bb ,

2211

2222

pp

csT

,

2211

112

pp

pb

, 23 1 bb ,

3322

224

pp

pb

, 45 1 bb .

Підставляємо 1 з (4.133) в (4.132)

21

00

00

00

bbdx

dwT

або 21

00

0

00 )1(

bbdx

dwT .

Враховуючи, що 101 bb записуємо отримане рівняння у вигляді

Page 113: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

112

200

0

dx

df , (4.138)

де 1000 bwTf .

Підставляємо тепер 1 з (4.133) та 3 з (2.135) в (2.134)

osbbbbbbdx

dwT

5

243

21

002

22

22 .

Зводимо подібні osbbbbbbbbdx

dwT

53

020

24321

2

22 1 або

osbbdx

df

7

06

22

2 , (4.139)

де 4321

222

1 bbbb

wTf

,

4321

206

1 bbbb

bbb

,

4321

537

1 bbbb

bbb

.

Підставляємо 2 з (4.138) в (4.139)

osbb

dx

df

dx

d

dx

dff

7

06

00

0

0

2

02

02

або

osbbdx

dff

dx

dff

7

06

0

202

02

20 1 . (4.140)

Характеристичне рівняння для (4.140)

01 6202

20 brffrff

Його корені:

20

620

2

20202,1

2

14

ff

bffffffr

.

Оскільки 110 6 b , то 2,1r явно дійсні різні, отже, розв‟язок (4.140)

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

b

b21

21

6

70

1

або

xrxros eEeEb 21

2180 , (4.141)

де 6

78

1 b

bb

.

Граничні умови. Почнемо з (4.136). Підставляємо сюди (4.141)

.,0218

inpos EEb (4.142)

Диференціюємо (4.141) по х:

xrxr

eEreErdx

d21

2211

0

.

При х=0

0

0

2211

xdx

dErEr

.

Page 114: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

113

Значення

0

0

xdx

d беремо з (4.138), розглядаючи його при х=0 і

враховуючи, що згідно (4.137) inp

x

,2

0

2

:

0,0,2

2211 fErEr inpinp . (4.143)

Співвідношення (4.142) та (4.143) представимо у вигляді

)145.4(,

)144.4(,

42211

321

fErEr

fEE

де osinp bf 8

,03 , 0

,0,24 ff inpinp .

Розв‟язок системи (4.144), (4.145) 12

4231

rr

frfE

,

12

1342

rr

rffE

.

Маючи значення 1E та 2E за формулою (4.143) визначаємо 0 . З (4.132),

маючи 0 , можна визначити

1

xrxrrErEWT 21

22110001 . (4.146)

При наявності 1 та

0 з (4.133) визначається 2

10

012 bb . (4.147)

Далі, з (4.137) визначається 3 .

Програмна реалізація розглянутого алгоритму наведена в програмі DemTrTr (див. підпрограми Stat та DemStat). Лістинг програми DemTrTr – в Додатку Є. На рис. 4.5 показано температурні поля для статичного

режиму прямоточного теплообмінника типу “труба в трубі”.

Рис. 4.5. Статичний режим прямоточного теплообмінника:

0 – x0 ; 1 – x1 ; 2 – x2 ; 3 – x3 ; 4 – os

Page 115: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

114

4.7. Протиточний теплообмінник

Замість системи (4.132) – (4.137) для статичного режиму матимемо

)153.4(.

)152.4(,

)151.4(,

)150.4(,

)149.4(,

)148.4(,

.22

.0

0

0

52

43

33

12

22

22

21

00

1

100

00

inp

lx

inp

x

osbb

bbdx

dwT

bb

dx

dwT

Коефіцієнти, що входять в рівняння (4.148) – (4.153), ті ж, що маємо

для системи (4.132) – (4.137). Хід розв‟язку системи (4.148) – (4.153) також

практично повторює аналогічний розв‟язок для випадку прямотоку, тому

обмежимось мінімальними коментарями та покажемо лише відмінності в

проміжних та остаточних результатах.

Рівняння (4.138) залишається тим же, тобто

200

0

dx

df , (4.154)

де 1000 bwTf .

А от замість (4.139) матимемо

osbbdx

df

7

06

22

2 . (4.155)

Тут як і в (4.139) 4321

222

1 bbbb

wTf

,

4321

206

1 bbbb

bbb

,

4321

537

1 bbbb

bbb

.

Підставляємо 2 з (4.154) в (4.155)

osbbdx

df

dx

d

dx

dff

7

06

00

0

0

2

02

02

або osbbdx

dff

dx

dff

7

06

0

202

02

20 1 . (4.156)

Характеристичне рівняння для (4.156) 0)1()( 6202

20 bsffsff .

Його корені:

20

620

2

20202,1

2

14

ff

bffffffs

,

або:

20

620

2

20202,1

2

14

ff

bffffffs

.

Page 116: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

115

Розглядаючи 2,1s як дійсні різні, розв‟язок (4.156) представляємо у

вигляді xsxsos eEeEb 21

2180 , (4.157)

де 6

78

1 b

bb

.

Гранична умова (4.152)

321 fEE , (4.158)

де osinp bf 8

,0 .

Диференціюємо (4.157) по х

xsxsesEesE

dx

d21

2211

0

. (4.159)

Підставляємо 0 тепер з (4.159) та

dx

d 0 з (4.119) в (4.154),

розглядаючи їх при х=l та враховуючи (4.153)

inplslsoslslseEeEbesEesEf ,2

218221102121 ,

що після зведення подібних дає

42615 fEfEf , (4.160)

де osinp bf 8

,24 , ls

esff 1

105 1 , lsesff 2

206 1 .

Розглядаємо (4.158) та (4.160) як систему, яку й розв‟язуємо відносно

1E та 2E .

;;

1;1

;

1;

56

463

6564

3

1ff

fff

ffff

fE

(4.161)

.;

1;1

;

;1

56

534

6545

3

2ff

fff

ffff

fE

(4.162)

При наявності 1E та 2E температура 0 визначається за (4.117),

1 –

з (4.148) з використанням (4.119), 2 – з (4.149) та

3 – з (4.151).

Формування масивів Teta0,Teta1,Teta2,Teta3:Coefl значень

відповідних температур в функції від координати х lx 0 реалізуємо в

підпрограмі Stat, текст якої можна подивитись в програмі DemTrTr, що

наводиться у Додатку 7. Для компактності варіанти прямотоку і протитоку

об‟єднанні в одній програмі. Напрямок руху теплоносія у міжтрубному

середовищі задається типізованою константою Nr )1( . На рис. 4.6

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

теплообмінника типу “труба в трубі”.

Page 117: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

116

Рис. 4.6. Усталений режим прямоточного теплообмінника:

0 – x0 ; 1 – x1 ; 2 – x2 ; 3 – x3 ; 4 – os

4.8. Статика для струни, нитки та датчиків

З диференціального рівняння (1.40) для статичного режиму

отримуємо

s

s

fmdx

ydC

12

22 , lx 0 . (4.163)

Якщо розглядати sf як константу (тобто таку, що не залежить від х),

то розв‟язок (4.163) можна подати у вигляді 2

210 xDxDDy . (4.164)

Спочатку підставимо (4.164) в (4.163) – матимемо s

s

fm

DC1

2 22 ,

Звідки: s

s

fmC

D

22

2

1. (4.165)

В граничних умовах (1.44) та (1.45) будемо також розглядати )(tyl та

)(tyr як константи (це ж статика!). Тоді граничні умови для (4.163)

набувають вигляду

lxyy

0, (4.166)

rlxyy

. (4.167)

Підставляємо сюди (4.166)

.

,

2210

0

r

l

ylDlDD

yD

Page 118: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

117

Розв‟язуємо отриману систему рівнянь відносно 0D та 1D ( 2D уже

визначено в (4.165)).

lyD 0 , (4.168)

l

fmC

lyy

D

s

s

lr

2

2

1

2. (4.169)

Читач при потребі може розглянути і будь-які інші комбінації

граничних умов для струни, тобто для диференціального рівняння (2.96).

Навантажена нитка

З диференціального рівняння (1.50) в статиці маємо

xfgmdx

dy

dx

ydxl

v

m

n

12

2

2

1

. (4.170)

З аналітичним розв‟язком диференціального рівняння (4.170)

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

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

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

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

типізовані константи типу real). Організацію спостереження за перехідним процесом та фіксацію

досягнутого усталеного режиму (форму нитки) реалізує підпрограма StatNit у програмі DemNit.

Page 119: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

118

5. КОМП’ЮТЕРНА ОПТИМІЗАЦІЯ СИСТЕМ АВТОМАТИЧНОГО

КЕРУВАННЯ

Теорія оптимізації динамічних систем базується на векторно-

матричному представленні моделей систем автоматичного керування

(САК) [22, 57]. На жаль, запропоновані методи синтезу не знайшли

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

сучасні SOFTLOGIC-системи у своєму арсеналі використовують

модифікації ПІД законів керування та не містять векторно-матричного

апарату математичних моделей об‟єкта керування (ОК) та цифрового

регулятора (ЦР) [56, 63]. Це пояснюється багатьма причинами, ось деякі з

них.

Автоматизація як наука “виділилася” із механіки і методи оптимізації

механічних систем стали “клонуватися” у автоматику. Проте властивості

об‟єктів автоматизації сильно відрізняються від механічних систем. Крім

інерційності (як і в механічних системах) більшість технологічних апаратів

містять значне транспортне запізнення, або розподіленість параметрів.

Математичне відтворення цих властивостей різко збільшує розмірність

матриць динамічної моделі ОК в просторі станів. Оптимальний регулятор у

розрахунках керуючої величини враховує змінні простору стану, які

необхідно розраховувати контролером за допомогою спостерігача за

вхідним та вихідним сигналами ОК. По суті спостерігач простору стану

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

неефективно використовує незначні ресурси контролера, якщо ОК має

транспортне запізнення або розподіленість параметрів ОК. Крім того,

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

Калмана, на який теж необхідно витрачати обмежені обчислювальні

ресурси контролера.

Аналітичні методи синтезу оптимальної САК зводяться до пошуку

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

регулятор високого порядку [22, 57]. Як відомо з теорії автоматичного

керування, ПД регулятор не може усунути статичну похибку регулювання,

що неприйнятно для більшості технологічних процесів. Існують підходи,

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

шляхом розширення простору стану ОК [14, 22, 57, 77], але це знову

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

Методи класичної оптимізації динамічних систем за критерій

оптимальності приймають середньоквадратичні показники якості, оскільки

інтеграл від квадрату функції має загальний аналітичний розв‟язок. На

практиці такий критерій для САК не завжди задовольняє вимоги

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

підвищену схильність до наявності коливної складової у динамічних

режимах системи керування. Модульні критерії забезпечують кращу

Page 120: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

119

динаміку САК [15, 16], але синтез САК за модульними показниками якості

не завжди має аналітичний розв‟язок.

Специфічна особливість систем автоматизації об‟єктів з

розподіленими параметрами полягає в тому, що їх передатні функції, як

було показано вище, не є дробово-раціональними, для яких розроблена

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

(САК). Джерелом інформації про динамічні властивості таких ОК, можуть

бути або математична модель у формі системи диференціальних рівнянь у

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

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

ординат перехідної характеристики, це свого роду математичний

експеримент), або ж фізичний експеримент над окремо взятим ОК чи над

змонтованою системою з даним ОК у процесі налагодження або ж у

процесі нормальної експлуатації системи.

Також не слід забувати, що мова йде про динамічні системи, які

описуються диференційними рівняннями n-го порядку. На практиці,

аналітичним способом розв‟язуються звичайні диференційні рівняння до 2-

го порядку, решта – шукається чисельними методами. Технічні

характеристики комп‟ютерної техніки відкривають можливість принципово

нового підходу до аналізу динамічної поведінки САК. Зокрема, в якості

базової моделі можна використати перехідну або імпульсну

характеристику ОК у вигляді масиву її ординат [17, 42]. Єдина умова – цей

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

ОК. З наведених вище причин оптимальні налаштування регулятора

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

аналітичних вимог до вигляду та поведінки цільової функції.

5.1. Формування масиву ординат перехідної характеристики САК

Будемо виходити з того, що динамічні властивості каналу

регулюючого впливу ОК задано у вигляді масиву ординат перехідної

характеристики Ht:Coefl, де Coefl визначається як type

Coefl=array[-1..601] of real, його структуру представлено у

таблиці

-1 0 1 2 3 … L L+1 … 601

L h[0] h[1] h[2] h[3] … h[L] dt

При цьому ОК вважається таким, що має самовирівнювання, а час

спостереження dtLD (dt – крок за часом між сусідніми ординатами)

достатній для того, щоб

constth Dt h[L] . (5.1)

Тобто, перехідний процес в ОК за час D встигає вийти на усталений рівень.

В загальному випадку розглядатимемо класичний ПІД-регулятор з

передатною функцією:

Page 121: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

120

pT

pTKpW d

i

r

11 , (5.2)

де, Kr, Ti, Td – параметри налагодження ПІД–регулятора (відповідно

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

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

представлена як:

dt

eeTe

T

dteKu ss

d

s

ii

i

srs1

1

0

, (5.3)

тут, us – сигнал керування, еs – сигнал розузгодження. Для узагальнення

будемо враховувати можливість цифрової реалізації ПІД-закону з періодом

квантування dtNkTkv . При 1Nk можна вважати, що система вестиме

себе як аналогова.

Таким чином, розглядається одноконтурна САК, структурна схема

якої представлена рис. 5.1. САК складається із ОК, суматорів та цифрового

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

прикладатися в різних точках ОК. Коли конкретне місце збурення не

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

(канал регулювання має найбільший вплив на динаміку ОК). Прикладом

такого збурення може бути зміна витрати матеріального потоку, що

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

клапана. Такі випадки не рідкість на виробництві із-за змін перепадів тиску

на регулюючому клапані, що є наслідком порушення технології. Іншим

прикладом може служити неконтрольована зміна температури теплоносія

при регулюванні його витрати і таке інше.

Рис. 5.1. Структура схема САК, зs – сигнал завдання, еs – сигнал

розузгодження, us – сигнал керування, s – сигнал

зовнішнього збурення, хs – вхідний та уs – вихідний сигнали

ОК

Дискретну математичну модель ОК можна представити у вигляді

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

ОК

ЦР

ys

es зs

_

us

xs

Page 122: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

121

порядку (ФНП) із передатною функцією p

epW

pT

ФНП

1; неперервного

ОК, для якого існує передатна функція WOK(p); квантувачів S1, S2, які

працюють синхронно із періодом квантування Тkv. Передатна функція

квантувачів Тkv

pWКВ

1 . Для такої системи структурна схема зображена

на рис. 5.2.

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

характеристикою h(t). Реакцію ФНП на імпульс одиничний висоти

тривалістю Тkv у часовій області можна представити як різницю одиничних

сигналів, які зсунені на період квантування (рис. 5.3, а):

TkvttLpWФНП 11 . (5.4)

Рис. 5.2. Послідовне з‟єднання елементів дискретної моделі ОК

Також (див. рис. 5.3, б), у часовій області можна представити реакцію

приведеної неперервної частини (ПНЧ) системи із ФНП та неперервним

ОК на одиничний імпульс

0якщо,1

0якщо,0*

t

ttx як:

trLTkvththLpWpWpW ОКФНППНЧ , (5.5)

тут r(t) – реакція ПНЧ на імпульс одиничної висоти тривалістю Тkv. Якщо

на вхід ПНЧ надходить послідовність імпульсів х*(t), тоді вихідний сигнал

можна записати як:

...220 TkvtrTkvxTkvtrTkvxtrxty . (5.6)

Для Tst (s = 0, 1, 2, … Nt) залежність (5.6) прийме вигляд:

js

s

jjssss rxrxrxrxy

00110 ... . (5.7)

Візьмемо z–перетворення для обох частин (5.7), застосуємо теорему

згортки в часовій області

02121

n

nTkTfnTfZzFzF [43] та

отримаємо: zWzxzy . (5.8)

Тут W(z) – дискретна передатна функція ОК, що визначається за

залежністю: s

ss zrzW

0

(5.9)

WПНЧ(р)

WФНП(р)

WОК(р)

x(t) x*(t)

S1

y(t)

y*(t)

S2

Page 123: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

122

Рис. 5.3. Формування реакції неперервного ОК на імпульс

одиничної величини тривалістю Тkv

Отже, якщо динаміка ОК в часовій області описується імпульсною

характеристикою ПНЧ r(t), яка є реакцією неперервного ОК на імпульс

одиничної величини тривалістю Тkv, а також для імпульсної

характеристики r(t) існує ґратчаста функція rs (s = 0, 1, 2, 3, …), то

дискретну передатну функцію ПНЧ можна визначити за залежністю (5.9), а

залежність (5.7) може використовуватися для чисельного визначення

реакції дискретного вихідного сигналу ys ОК на послідовність вхідних

імпульсів xs. Графічну інтерпретацію визначення вихідного сигналу ys ОК

за залежністю (5.7) представлено на рис. 5.4. Для наочності ґратчасті

функції rs, xs та ys між вузлами лінійно інтерпольовані, хоча вони визначені

тільки у вузлах квантування.

Вхідний сигнал ОК xs (див. рис. 5.1) представляє суму сигналів

керування та збурення sss ux . Наявність чи відсутність збурення

будемо враховувати параметром Tvs:char, який може приймати значення

'Z' коли входом є зs або 'L' коли в якості входу приймається s .

a) Тkv t

gФНП(t)

1

0

t

h(t) r(t)

б)

-h(t-Tkv)

r(t)

Тkv

0

Page 124: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

123

Рис. 5.4. Схема формування масиву ординат реакції уs ОК

В процесі формування масиву перехідної характеристики САК

(масив Hts:Coefl) будемо обчислювати значення інтегрального

показника якості:

,4,

,3,

,2,

,1,

0

2

0

0

2

0

Nvrdtft

Nvrdtft

Nvrdtf

Nvrdtf

I (5.10)

тут, Nvr – номер критерію якості, за яким оптимізується САК. Чисельна

реалізація критерію прийме вид:

r4

Tkv

r2

r1 rNt t, s

r3

r0 0 1 2 3 4 5 … s Nt

r5 r(t), rs

x1 x5

x4

x3 xs

x0

s 0 1 2 3 4 5 … s Nt

ys

y0 y1 y2

y3

y4

s 0 1 2 3 4 5 … s Nt

у5 у6

x0 r(t)

x1 r(t-Tkv)

x2 r(t-2Tkv)

Page 125: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

124

Nt

s

Nt

s

Nt

s

Nt

s

NvrfsNt

Tkv

NvrfsNt

Tkv

NvrfTkv

NvrfTkv

I

1

2

1

1

2

1

,4,

,3,

,2,

,1,

де NkLNt div ,

.каналу для 0якщо,

,каналу для 0якщо,

,каналу для 0якщо,

,каналу для 0якщо,

ssss

ssss

ssss

ssss

yeeR

yee

yзeeR

yзee

f

(5.11)

При формуванні f коефіцієнт R у (5.11) призначений впливати на величину

перерегулювання. Підсилювати (при 0<R<1) або приглушувати (R 1)

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

sss узe та за різними каналами впливу перерегулювання

характеризується різним знаком розузгодження, як це показано на рис. 5.5.

Рис. 5.5. Знак перерегулювання у перехідних процесах САК: а – за

каналом ss yз ; б – за каналом ss y

Вибір показника якості (5.10) для функціонування САК обумовлений

наступними міркуваннями. Традиційно при налагодженні САК перевагу

віддавали опосередкованим показникам якості (кореневим, частотним і,

зокрема, інтегральним). Це пояснювалося неможливістю (надто великою

трудомісткістю) розрахунку перехідної характеристики САК, за якою

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

процесу, його характер, перерегулювання тощо). Графік перехідної

характеристики САК несе в собі максимум необхідної інформації для

зs=1

0 s

ys

a)

es < 0

es > 0 зs=0 s

ys

б)

Page 126: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

125

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

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

узагальненням оцінки критерію якості (5.10). А навіщо чотири варіанти

критерію Nvr та параметр R у (5.11)? Справа в тому, що для різних OK

значно варіюються додаткові умови в формуванні критерію (5.10), як-то

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

початковому відрізку перехідного процесу САК (отже, і час існування

значних відхилень від заданого рівня) і таке інше. З цих причин,

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

шляхом співставлення) графіки оптимальних перехідних характеристик

САК, які отримані при різних варіантах Nvr показника якості (5.10) і

вибрати “кращий серед кращих”. Додаткові можливості варіювати

показник (5.10) надає параметр R у (5.11). Так, наприклад, завищуючи R,

можна отримати в якості оптимальних процеси близькі до аперіодичних, чи

навпаки, інтенсифікувати швидкодію системи за рахунок деякого

завищення перерегулювання.

Масив перехідної характеристики САК Hts:Coefl можна

формувати з кроком dt (як для аналогової САК), або з кроком Tkv (що

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

процедуру FormHtsA для формування масиву перехідної характеристики

аналогової САК. procedure FormHtsA;

var z,s,Zd,La,L: integer;

x,Eps,Epsp,Epsf,Integr,f: real;

Rs: CoefL;

begin

L:=round(Ht[-1]); dt:=Ht[L+1]; Tkv:=Nk*Dt;

Rs:=Ht; Hts[-1]:=L;

for z:=Nk to L do Rs[z]:=Rs[z]-Ht[z-Nk];

if Tvs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

Eps:=Zd; x:=Kr*eps; Integr:=0;

for s:=0 to L do

Hts[s]:=Rs[s]*(x+La);

if Nvr in [1,2] then I:=Zd

else I:=0;

z:=1;

repeat

Epsf:=Zd-Hts[z];

if z mod Nk = 0 then

begin

Epsp:=Eps; Eps:=Zd-Hts[z];

Integr:=Integr+Eps*Tkv;

x:=Kr*(Eps+Integr/Ti+Td*(Eps-Epsp)/Tkv);

for s:=0 to L-z do

Hts[z+s]:=Hts[z+s]+Rs[s]*(x+La);

Page 127: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

126

end;

if abs(Hts[z])>2

then I:=500

else

begin

if Tvs='Z'

then if Epsf>0 then f:=Epsf else

f:=R*Epsf

else if Epsf>0 then f:=R*Epsf else

f:=Epsf;

case Nvr of

1: I:=I+abs(f);

2: I:=I+sqr(f);

3: I:=I+z/L*abs(f);

4: I:=I+z/L*sqr(f);

end;

end;

inc(z);

until (z>L) or (I>=500);

Hts[601]:=I*dt;

if I>=500 then

for s:=z to L do Hts[s]:=0.5;

end;

Другий варіант формування масиву перехідної характеристики Hts

реалізовано процедурою FormHtsD для цифрової САК (крок з часом

Tkv:=Nk*Dt). procedure FormHtsD;

var z,s,Zd,La,L: integer;

x,Eps,Epsp,Epsf,Integr,f: real;

Rs: CoefL;

begin

L:=round(Ht[-1]); dt:=Ht[L+1]; Tkv:=Nk*Dt;

Nt:=L div Nk; Rs[-1]:=Nt; Rs[Nt+1]:=Tkv;

Rs[0]:=Ht[0];

for z:=1 to Nt do

Rs[z]:=Ht[z*Nk]-Ht[(z-1)*Nk];

if Tvs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

Eps:=Zd; x:=Kr*eps; Integr:=0;

for z:=0 to Nt do Hts[z]:=Rs[z]*(x+La);

if Nvr in [1,2] then I:=Zd

else I:=0;

z:=1;

repeat

Epsp:=Eps; Eps:=Zd-Hts[z];

Integr:=Integr+Eps*Tkv;

x:=Kr*(Eps+Integr/Ti+Td*(Eps-Epsp)/Tkv);

for s:=0 to Nt-z do

Page 128: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

127

Hts[z+s]:=Hts[z+s]+Rs[s]*(x+La);

if abs(Hts[z])>2

then I:=500

else

begin

if Tvs='Z'

then if Eps>0 then f:=Eps else f:=R*Eps

else if Eps>0 then f:=R*Eps else f:=Eps;

case Nvr of

1: I:=I+abs(f);

2: I:=I+sqr(f);

3: I:=I+z/Nt*abs(f);

4: I:=I+z/Nt*sqr(f);

end;

end;

inc(z);

until (z>Nt) or (I>=500);

Hts[601]:=I*Tkv;

if I>=500 then

for s:=z to Nt do Hts[s]:=0.5;

end;

Вибір того чи іншого варіанта формування масиву Hts реалізується

підпрограмою FormHts. procedure FormHts;

begin

case Tmo of

'A': FormHtsA;

'D': FormHtsD;

end;

end;

Тут Tmo:char – глобальна типізована константа, яка може приймати

значення 'A' або 'D' в залежності від обраного варіанту моделі ОК ('A'

– аналогова, 'D' – цифрова).

5.2. “Ручний” пошук оптимального налагодження регулятора

Якщо масив Hts:Coefl сформовано з кроком dt, то графік

відповідної перехідної характеристики САК можна сформувати

процедурою Graphiс, що входить до модуля Serv [27]. У випадку, якщо

масив Hts:Coefl сформовано з кроком Tkv, то відповідний графік

будемо формувати процедурою Grad у вигляді ламаної, горизонтальна

проекція якої дорівнює не 1 піксель, як у Graphic, а Nk пікселів. procedure Grad(Hts:CoefL; c:integer);

var z,L: integer;

begin

L:=round(Ht[-1]);

Nt:=L div Nk; Setcolor(c);

Page 129: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

128

MoveTo(X0,Y0-round(Hts[0]/dy));

for z:=1 to Nt do

LineTo(x0+z*Nk,y0-round(Hts[z]/dy));

SetColor(15);

end;

Введення (уточнення) вище згаданих параметрів реалізується

підпрограмою Param. procedure Param;

var J2:char;

begin

repeat

PutA;

Ou('0-Ex,1-Nk,2-Nvr,3-R,4-k,5-Ek,6-Tvs,7-Tmo');

str(Nk,T10); Ts:='Nk='+T10;

L:=round(Ht[-1]); Dt:=Ht[L+1]; Tkv:=Nk*dt;

str(Tkv:1:3,T10); Ts:=Ts+' (Tkv='+T10+')';

str(Nvr,T10); Ts:=Ts+', Nvr='+T10;

str(R:1:3,T10); Ts:=Ts+', R='+T10;

str(k,T10); Ts:=Ts+', k='+T10;

str(Ek:1:3,T10); Ts:=Ts+', Ek='+T10;

Ts:=Ts+', Tvs='+Tvs;

Ts:=Ts+', Tmo='+Tmo;

Info; J2:=ReadKey;

case J2 of

'1': Oui('Nk',Nk);

'2': Oui('Nvr',Nvr);

'3': Our('R',R);

'4': Oui('k',k);

'5': Our('Ek',Ek);

'6': if Tvs='Z' then Tvs:='L' else Tvs:='Z';

'7': if Tmo='A' then Tmo:='D' else Tmo:='A';

end

until J2='0'

end;

Система координат для графіків перехідних характеристик САК

формується у процедурі Sc. procedure Sc;

begin

Xmin:=0; Xmax:=D; Ymin:=0; Ymax:=1.5;

X0Y0(false); ClearDevice; SystCoor;

Line(x0,y0-round(1/dy),x0+L,y0-round(1/dy));

end;

Процедура Nastr організує підбір параметрів налагодження

регулятора (Kr, Ti, Td) та демонструє відповідні перехідні процеси у

САК. procedure Nastr;

var J1:char;

begin

Page 130: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

129

repeat

PutA; Ou('0-Ex,1-Param,2-Kr,3-Ti,4-Td,5-Sc,6-C,

7-h(t),8-Service');

Str(Kr:1:3,T10); Ts:='Kr='+T10;

Str(Ti:1:3,T10); Ts:=Ts+', Ti='+T10;

Str(Td:1:3,T10); Ts:=Ts+', Td='+T10;

Str(C,T10); Ts:=Ts+', C='+T10;

Str(I:1:3,T10); Ts:=Ts+' (I='+T10+')';

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Our('Kr',Kr);

'3': Our('Ti',Ti);

'4': Our('Td',Td);

'5': begin

Xmin:=0; Xmax:=Ht[-1]*Ht[L+1];

Ymax:=1.5;

if Tvs='Z' then Ymin:=0

else Ymin:=-1.5;

X0Y0(false); ClearDevice; SystCoor;

if Tvs='Z' then

Line(x0,y0-round(1/dy),

x0+L,y0-round(1/dy));

FormHts;

if Tmo='A' then Graphic(Hts,C)

else Grad(Hts,c);

I:=Hts[601];

end;

'6': Oui('C',C);

'7': begin

FormHts;

if Tmo='A' then Graphic(Hts,C)

else Grad(Hts,C);

I:=Hts[601];

end;

'8': Service;

end;

until J1='0';

end;

Page 131: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

130

5.3. Формування зображення поверхні показника якості в

просторі параметрів налаштування регулятора

При пошуку оптимального налагодження системи, скажімо, на

мінімум одного з інтегральних показників якості (5.10), бажано мати

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

налагодження регулятора. У першу чергу, це Kr – коефіцієнт передачі та Tі

– час ізодрому регулятора. Якщо обмежитись цими двома параметрами, то

простір параметрів налагодження зведеться до площини (Tі, Kr), на якій

функціонал (показник якості I) можна зобразити у формі системи ізоліній.

Система координат та досліджувана ділянка матимуть вигляд рис. 5.6.

Рис. 5.6. Область дослідження показника якості

Домовимось задавати значення Krk та Tik, а Krn та Tin визначатимемо за

залежностями: rkrn KK 1,0 , ikin TT 1,0 . Отже, область дослідження

прийме вигляд рис. 5.7.

Рис. 5.7. Визначення розмірів області дослідження на екрані

Коефіцієнт Td при диференціальній складовій вважатимемо

фіксованим, як окремий випадок можна приймати Td=0 (ПІ – регулятор).

Робоча (заштрихована) область сканується попіксельно, тому, щоб процес

0 Ti

Kr

Tin Tik

Krk

Krn

0

Ti

Kr

Н2

L2

Page 132: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

131

тривав не надто довго, розміри L2 та H2 (в пікселях) підбираються з

урахуванням цієї обставини. Алгоритм формування ізоліній описано в [27].

Нижче наводиться лістинг процедури Izo, що відповідає за формування

зображення ізоліній в координатах параметрів регулятора. procedure Izo;

var Nr,Z,S,Zn,Sn,So,Zo,C1:integer;

Krn,Tin,Nrr:real; F:boolean; J2:char;

Mnr:array[-1..600] of integer;

begin

L:=L2; H:=H2;

Krn:=0.1*Krk; Tin:=0.1*Tik;

Xmin:=0; Xmax:=Tik; Ymin:=0; Ymax:=Krk;

X0Y0(false); ClearDevice; SystCoor;

Sn:=round(Tin/dx); Zn:=round(Krn/dy);

Ti:=Tin-dx; Io:=500; J2:='1';

PutA; Ou('0-exit');

for z:=Zn-1 to H do

begin

Kr:=z*Dy; FormHts; Nrr:=Hts[601]/Hiz;

if Nrr>Mi then Mnr[z]:=Mi

else Mnr[z]:=trunc(Nrr);

end;

s:=Sn;

repeat

Ti:=S*dx; F:=true;

for z:=Zn-1 to H2 do

if F

then

begin

Kr:=Z*dy; FormHts; I:=Hts[601];

if I<Io then

begin

Io:=I; So:=S; Zo:=Z;

end;

if I>=500

then

begin

PutPixel(x0+s,y0-z,5);

F:=false;

end

else

begin

Nrr:=I/Hiz;

if Nrr>Mi then Nr:=Mi

else Nr:=trunc(Nrr);

if (z>=Zn) and ((Nr<>Mnr[z-1])

or (Nr<>Mnr[z]))

then

Page 133: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

132

begin

if Nr<Mnr[z-1] then C1:=10

else C1:=12;

PutPixel(x0+s,y0-z,C1);

end;

end;

Mnr[z]:=Nr;

end

else PutPixel(x0+s,y0-z,5);

if KeyPressed then J2:=ReadKey;

inc(s);

until (s>L) or (J2='0');

Kr:=Zo*dy; Ti:=So*dx; SetColor(10);

Circle(x0+So,y0-Zo,3); SetColor(15);

I:=Io;

L:=GetMaxX-139; H:=GetMaxY-100;

end;

Тут Hiz – крок ізоліній, Мі – константа типу integer –

максимальний номер ізоліній, що відображаються на екрані (коли номери

ізоліній стають надто великими – ізолінії зливаються, отже, втрачають

сенс). Зеленим кольором (С:=10) зображуються ділянки ізоліній, які при

скануванні знизу вверх ведуть до мінімуму. Також зеленим кольором

малюється коло радіусом 3 пікселі навколо пікселя, де було зафіксовано

найменше виявлене за час сканування значення показника якості.

Кольором С:=5 зафарбовуються пікселі, в яких (при відповідних

значеннях Kr, Ti, Td) система виявляється нестійкою. Сканування робочої

зони реалізується знизу вверх (в напрямку зростання Kr). Так от, коли

виявляється, що на черговому кроці сканування е>=500 (система

нестійка), усі пікселі над даним Ti (при більших Kr) будуть

характеризувати нестійку САК, а тому їх не варто обслуговувати по повній

програмі, тобто формувати для них Hts і тому подібне, і вони просто

зафарбовуються червоним (С:=5) кольором. Це прискорює формування

зображення. Якщо система має цифровий регулятор, то для пришвидшення

процесу варто задавати Tmo='D' (чим більше Nk – тим швидше проходить

побудова зображення).

“Технічне обслуговування” процедури Izo відбувається за

допомогою підпрограми DemIzo. procedure DemIzo;

var J1:char;

begin

repeat

PutA; Ou('0-Ex,1-Param,2-L2,3-H2,4-Krk,5-Tik,6-

Td,

7-Hiz,8-Mi,9-Izo,S-Service');

Str(L2,T10); Ts:='L2='+T10;

Str(H2,T10); Ts:=Ts+', H2='+T10;

Page 134: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

133

Str(Krk:1:3,T10); Ts:=Ts+', Krk='+T10;

Str(Tik:1:3,T10); Ts:=Ts+', Tik='+T10;

Str(Td:1:3,T10); Ts:=Ts+', Td='+T10;

Str(Hiz:1:2,T10); Ts:=Ts+', Hiz='+T10;

Str(Mi,T10); Ts:=Ts+', Mi='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Oui('L2',L2);

'3': Oui('H2',H2);

'4': Our('Krk',Krk);

'5': Our('Tik',Tik);

'6': Our('Td',Td);

'7': Our('Hiz',Hiz);

'8': Oui('Mi',Mi);

'9': Izo;

'S','s': Service;

end;

until J1='0';

end;

Система ізоліній формується опцією '9-Izo' підпрограми DemIzo.

Як приклад, на рис. 5.10 зображено поверхню показника якості (5.10) для

конкретної САК, яка сформована підпрограмами даного пункту. Знайдені

оптимальні значення Kr та Ti та відповідне їм значення показника якості

можна побачити в інформаційному рядку підпрограми Nastr. За

допомогою процедури Nastr можна сформувати графік перехідної

характеристики САК при знайдених оптимальних значеннях Kr та Ti.

5.4. Пошук оптимальної настройки ПІД регулятора

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

Щойно розглянутий в п. 5.3. алгоритм визначення оптимальних

параметрів налаштування регулятора надто трудомісткий, отже, може

забирати багато часу. Крім того, пошук ведеться при фіксованому Td. Тому

бажано мати алгоритм, який би розв‟язував цю задачу швидше та дозволяв

варіювати усі три параметри налаштування ПІД-регулятора.

Пошук оптимуму (мінімум показника якості (5.10)) будемо вести в

межах прямокутного паралелепіпеда, проекція якого на площину Ti, Kr

виглядає як зображено на рис. 5.8. В робочій області (аналогічній такій як

для системи ізоліній) визначається її центр (Tic, Krc) та початкові

значення кроків сканування (Di, Dk). Центр області для початку

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

зменшується в k разів (k – константа типу integer, яку задає користувач,

на рис. 5.8 k=3). Отримана таким чином сітка сканується вузол за вузлом

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

(5.10).

Page 135: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

134

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

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

зменшуються в k разів і процес повторюється доти, поки при кроці

Dk<=Epsk не буде знайдено вузол з мінімальним показником якості, який і

приймається за положення шуканого оптимуму. Мала величина Epsk

визначається як Epsk:=Ek*Krk, де Ek – константа типу real (задається

користувачем, наприклад, Ek:=0.001).

Рис. 5.8. Схема пошуку оптимуму методом сканування

Варіювання параметра Тd реалізується аналогічно варіюванню Kr та

Ti. Знайдені оптимальні значення Kro, Tio, Tdo та I записуються в

однойменні ідентифікатори (глобальні змінні типу real) і виводяться в

інформаційному рядку підпрограми DemSc3, яка обслуговує підпрограму

OptSC3, яка, власне, реалізує пошук. procedure OptSc3;

var z,s,v,w:integer; J2: char;

dk,di,dd,Krn,Tin,Tdn,Krc,

Tic,Tdc,Kro,Tio,Tdo,Epsk: real;

begin

Krn:=0.1*Krk; Tin:=0.1*Tik; Tdn:=0.1*Tdk;

Krc:=0.55*Krk; Tic:=0.55*Tik; Tdc:=0.55*Tdk;

dk:=0.45*Krk; di:=0.45*Tik; dd:=0.45*Tdk;

Epsk:=Ek*Krk; Io:=500; w:=0; J2:='1';

PutA; Ou('0-exit');

repeat

dk:=dk/k; di:=di/k; dd:=dd/k;

for s:=-k to k do

begin

Ti:=Tic+s*di;

if Ti<Tin then Ti:=Tin;

if Ti>Tik then Ti:=Tik;

for z:=-k to k do

begin

Tic Tik Tin

Ti

Krc

Krk

Krn

Kr

Dk

Di

0

Page 136: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

135

Kr:=Krc+z*dk;

if Kr<Krn then Kr:=Krn;

if Kr>Krk then Kr:=Krk;

for v:=-k to k do

begin

Td:=Tdc+v*dd;

if Td<Tdn then Td:=Tdn;

if td>Tdk then Td:=Tdk;

FormHts; I:=Hts[601];

inc(w); str(w,T10);

clear(450,60,550,70);

OutTextXY(450,60,'W='+T10);

if I<Io then

begin

Kro:=Kr; Tio:=Ti;

Tdo:=Td; Io:=I;

end;

end;

end;

end;

Krc:=Kro; Tic:=Tio; Tdc:=Tdo;

if KeyPressed then J2:=ReadKey;

until (Dk<=Epsk) or (J2='0');

Kr:=Kro; Ti:=Tio; Td:=Tdo; I:=Io;

Clear(450,60,550,70);

OutTextXY(450,60,'Ok');

end;

“Технічне обслуговування” процедури OptSc3 бере на себе

процедура DemSc3. procedure DemSc3;

var J1: char;

begin

repeat

PutA;

Ou('0-Ex,1-Param,2-Krk,3-Tik,4-Tdk,5-OptSc3');

Str(Krk:1:3,T10); Ts:='Krk='+T10;

Str(Tik:1:3,T10); Ts:=Ts+',Tik='+T10;

Str(Tdk:1:3,T10); Ts:=Ts+',Tdk='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Our('Krk',Krk);

'3': Our('Tik',Tik);

'4': Our('Tdk',Tdk);

'5': OptSc3;

end;

until J1='0'

end;

Page 137: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

136

В процедурі Nastr передбачено виведення в інформаційному рядку

(процедура Infо) поточних значень Kr, Ti та Td. Отже, після

спрацювання процедури OptSс3 і виклику Nastr в інформаційному рядку

висвітлюються знайдені оптимальні значення параметрів налаштування

регулятора.

Щоб побачити і візуально оцінити отриману оптимальну перехідну

характеристику системи, треба викликати процедуру Nastr і там

сформувати відповідний графік. Оскільки процедура OptSс3 не формує

додаткового зображення на екрані, то при вході в DemSс3 можна не

стирати зображення, сформоване процедурою Nastr (графік чи графіки

попередньо отриманих перехідних характеристик системи). Тим самим

створюється можливість накладати черговий графік поверх раніше

сформованих для їх порівняння між собою. Таким чином можна

досліджувати вплив Nvr, R, Nk та інших чинників на характер і

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

5.5. Пошук оптимуму із стартової точки

Алгоритм пошуку оптимуму, розглянутий в п. 5.4, має лише те

обмеження, щоб діапазон пошуку (для області обмеженої Krn .. Krk, Tin

.. Tik, Tdn .. Tdk) включав би, принаймні, один вузол, де б система була

стійкою, інакше процес пошуку закінчиться, не почавшись, у центрі

заданого початкового паралелепіпеда. Початкове “орієнтування” – пошук

комбінації Kr, Ti, Td, при яких система була б стійкою – може бути

реалізовано в процедурі Nastr шляхом простого підбору. Якщо ж

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

паралелепіпеда, то, очевидно, варто відповідним чином скоригувати Krk,

Tik та Tdk, надаючи програмі можливість виконати пошук у

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

Алгоритм пошуку, позбавлений від даного обмеження, розглянуто

нижче. Даний алгоритм є різновидом методу Хука-Дживса [48]. Для

початку пошуку оптимуму необхідно задати початкову (стартову) точку

пошуку. Вимога щоб ця точка була “стійкою” залишається в силі.

Пошук починається з “орієнтації” – вибору перспективного

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

що варіюються (Kr, Ti та Td), отримує прирощення Dk , Di , Dd (у

вкладених циклах). Для кожної з розгляданих комбінацій Kr, Ti, Td

визначається показник якості І (через формування масиву Hts:Coefl) і

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

комбінації відносно центра визначає найбільш перспективний напрямок

руху до оптимуму.

Рух у даному напрямку виконується покроково доти, поки дає

покращення показника І. Після цього знайдена поточна “найкраща” точка

Page 138: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

137

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

черговому орієнтуванні перспективний напрямок не знаходиться (усі

потенційні точки “гірші” центральної). Останній центр орієнтації

приймається за шукану точку оптимуму.

Знайдену точку можна взяти за стартову для повторення пошуку при

менших значеннях Dk, Di, Dd (усіх чи будь-якої комбінації з них). Циклів з

послідовним зменшенням кроків Dk, Di, Dd можна організувати скільки

завгодно на розсуд користувача. procedure OptSt;

var z,s,q,zv,sv,w:integer;

j3:char;

f,out:boolean;

dkro,dtio,dtdo,dkvo,dtvo,Io,

krc,tic,tdc,kvc,tvc,

kro,tio,tdo,kvo,tvo:real;

begin

Kr:=krs; Ti:=tis; Td:=tds;

FormHts; w:=1; Io:=Hts[601];

kro:=Kr; tio:=Ti; tdo:=Td;

out:=false; j3:='1';

puta; Ou('0-ex'); Clear(500,45,630,55);

repeat

krc:=kro; tic:=tio; tdc:=tdo;

f:=false; z:=-Ddk;

repeat

Kr:=krc+z*Dk; s:=-Ddi;

repeat

Ti:=tic+s*Di; q:=-Ddd;

repeat

Td:=tdc+q*Dd;

FormHts; I:=Hts[601];

inc(w); str(w,T10); Clear(550,30,630,40);

OutTextXY(550,30,'w='+T10);

if I<Io then

begin

Io:=I; f:=true;

kro:=Kr; tio:=Ti; tdo:=Td;

dkro:=z*Dk; dtio:=s*Di; dtdo:=q*Dd;

end;

if KeyPressed then j3:=Readkey;

if j3='0' then out:=true;

inc(q);

until (q>Ddd) or out;

inc(s);

until (s>Ddi) or out;

inc(z);

until (z>Ddk) or out;

Kr:=kro; Ti:=tio; Td:=tdo;

Page 139: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

138

if f then

repeat

Kr:=Kr+dkro; Ti:=Ti+dtio; Td:=Td+dtdo;

FormHts; I:=Hts[601]; inc(w); str(w,T10);

Clear(550,30,630,40);

OutTextXY(550,30,'w='+T10);

if I<Io then

begin

kro:=Kr; tio:=Ti; tdo:=Td; Io:=I;

end;

until I>Io;

until (f=false) or out;

Kr:=kro; Ti:=tio; Td:=tdo;

Krs:=Kr; Tis:=Ti; Tds:=Td;

Clear(500,45,630,55);

OutTextXY(500,45,'Ok! Press Enter');

J3:=ReadKey;

end;

“Обслуговуванням” процедури OptSt займаються процедури DemSt

та Diffs. procedure DemSt;

var j1:char;

begin

repeat

PutA;

Ou('0-ex,1-Param,2-Diffs,3-Krs,4-Tis,5-Tds,

6-OptSt');

str(Krs:1:2,T10); Ts:='Krs='+T10;

str(Tis:1:2,T10); Ts:=Ts+', Tis='+T10;

str(Tds:1:2,T10); Ts:=Ts+', Tds='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Param;

'2': Diffs;

'3': Our('Krs',Krs);

'4': Our('Tis',Tis);

'5': Our('Tds',Tds);

'6': OptSt;

end;

until j1='0';

end;

Тут після спрацювання опції „6–OptSt‟ стартові Krs, Tis та Tds

набувають значень Kro, Tio та Tdo, так що отримані значення параметрів

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

рядку. Якщо користувач хоче повторити (або уточнити) пошук оптимуму з

новими значеннями Dk, Di, Dd – для зміни кроку застосовується

підпрограма Diffs.

Page 140: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

139

procedure Diffs;

var j2:char;

begin

repeat

PutA;

Ou('0-ex,1-Dk,2-Di,3-Dd,4-Ddk,5-Ddi,6-Ddd');

str(Dk:1:3,T10); Ts:='Dk='+T10;

str(Di:1:3,T10); Ts:=Ts+', Di='+T10;

str(Dd:1:3,T10); Ts:=Ts+', Dd='+T10;

str(Ddk,T10); Ts:=Ts+', Ddk='+T10;

str(Ddi,T10); Ts:=Ts+', Ddi='+T10;

str(Ddd,T10); Ts:=Ts+', Ddd='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('Dk',Dk);

'2': Our('Di',Di);

'3': Our('Dd',Dd);

'4': if Ddk=1 then Ddk:=0 else Ddk:=1;

'5': if Ddi=1 then Ddi:=0 else Ddi:=1;

'6': if Ddd=1 then Ddd:=0 else Ddd:=1;

end;

until j2='0';

end;

Знайдені оптимальні Kro, Tio та Tdo також записуються в глобальні

Kr, Ti, Td. Це дає змогу сформувати відповідний їм графік перехідної

характеристики системи в підпрограмі Nastr, викликаючи останню в

меню основної програми.

5.6. Оптимізація класичного ПІД-регулятора за

інтегральними показниками якості

У попередніх розділах (п.5.1 – п.5.5) розглянуто програмну

реалізацію алгоритму оптимізації класичного ПІД-регулятора за

інтегральним показником якості (5.10). Розглянуті вище процедури

оформлені в програмний модуль OptHtd, лістинг якого знаходиться у

Додатку 11. Програмний модуль OptHtd використано у програмі

DemOptHd для оптимізації САК. Приклад дослідження цифрової САК із

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

Лістинг програми наводиться у Додатку 12.

Математична модель ОК у вигляді перехідної характеристики ОК

формувалася інтегруванням диференційного рівняння у частинних

похідних із розділу 3 для теплоакумулюючої стінки (п.3.2). Перехідна

характеристика моделі ОК представлена на рис. 5.9. Значення параметрів

математичної моделі теплоакамулюючої стінки вибрано довільно.

Враховуючи, що розраховується САК із абстрактним ОК у подальшому усі

налаштування регулятора представлені у безрозмірній формі.

Page 141: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

140

Рис. 5.9. Перехідна характеристика ОК

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

фіксованих значеннях Nvr та R) бажано спочатку отримати уявлення про

характер поверхні показника І, скажімо, в просторі параметрів настройки

ПІ-регулятора (або ПІД-регулятора при фіксованому значенні Td).

Відповідний алгоритм реалізований у програмі (п.5.3). На рис. 5.10

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

(5.10) (R=1, Nvr=2) в координатах min, ir TKfI із цифровим ПІ-

регулятором (Td=0, Tkv=1).

Рельєфи поверхні при Nk=1, 3, 4 мають схожі зображення. Отже,

маємо справу із одноекстремальною функцією (екстремум – мінімум).

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

в області, де САК є стійкою. Для нестійкої САК показники (5.10) стають

рівними нескінченності, отже, втрачають сенс. В подібній ситуації процес

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

оптимуму з початкової точки, де САК, принаймні, стійка (уявлення про

допустиму область дає система ізоліній). У подальших дослідженнях

використано математичну модель ОК у вигляді перехідної характеристики

рис. 5.9.

Рис. 5.10. Рельєф поверхні в координатах Ir TKfI , за каналом

ss yз

Page 142: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

141

Розглянемо вплив періоду квантування Тkv в цифровому ПІД

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

Наприклад, при Nvr=2 (R=1) на рис. 5.11 представлені перехідні процеси у

цифровій САК за каналом ss yз . Крива 1 оптимальна перехідна

характеристика САК знайдена при таких настройках ЦР: Кr=4,36; ТІ=18,33;

ТD=2,78; Tkv=0,2. Повторимо пошук оптимальної настройки ПІД-

регулятора із збільшенням Tkv. Отримаємо оптимальний ЦР: Кr=3,06;

ТІ=14; ТD=2,89; Tkv=1 та криву 2 в якості оптимальної перехідної

характеристики САК. Якщо продовжити збільшення Tkv – отримаємо

перехідну характеристику (крива 3) та настройки ЦР: Кr=1,44; ТІ=9,11;

ТD=2,94; Tkv=5.

Рис. 5.11. Перехідні процеси у цифровій САК за каналом ss yз

Із графіків видно, що збільшення Tkv негативно впливає на якість

перехідних процесів САК, а сам вплив може бути суттєвим і це не підлягає

сумніву. Програма дозволяє варіювати Tkv шляхом зміни Nk та оцінювати

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

вихідного сигналу ys для цифрової САК існує у вузлах дискретизації, а між

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

Також представляє інтерес дослідження впливу інтегрального

критерію (Nvr) на якість розв‟язків. На рис. 5.12 показані оптимальні

перехідні характеристики САК, знайдені при Nvr=1..4, (R=1, Тkv=1)

(відповідні криві позначені тими ж цифрами). Як видно, при Nvr=2,4

(середньоквадратичний показник якості) САК має чітко виражену

схильність до коливань. Решта (Nvr=1,3) дають близькі результати.

Зрозуміло, що робити глобальні висновки із одиничного дослідження не

варто, але програма дає можливість оцінити вплив Nvr та R на результат

оптимізації у кожному конкретному випадку (для різних об‟єктів та при

різних значеннях дискретизації Тkv ЦР).

Page 143: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

142

Рис. 5.12 Оптимальні перехідні процеси у САК за каналом ss yз

Наступна серія кривих демонструє дослідження впливу параметра R

на якість розв‟язків. На рис. 5.13 показані оптимальні перехідні

характеристики САК за середньоквадратичним показником якості (Nvr=2).

Крива 1 отримана при R=1 із настройками ЦР: Кr=3,06; ТІ=14; ТD=2,89;

Tkv=1. Крива 2 забезпечується оптимальним ЦР: Кr=3; ТІ=9,22; ТD=3,17;

Tkv=1 при R=0,5. Крива 3 отримана із настройками ЦР: Кr=2,87; ТІ=17,22;

ТD=2,94; Tkv=1 при R=2. Як видно, множник R підсилює (при 0<R<1) або

приглушує (R 1) перерегулювання у перехідних процесах САК.

Рис. 5.13. Оптимальні перехідні процеси у САК за

середньоквадратичним показником якості при варіюванні R

(1 – R=1; 2 – R=0,5; 3 – R=2)

І, нарешті, для критерію якості (5.10) (Nvr=1, R=1) на рис. 5.14

показано перехідну характеристику САК (крива 1) за каналом ss y ЦР:

Кr=2,28; ТІ=13,11; ТD=2,72; Tkv=1. Звернемо увагу, що даний ЦР

оптимізований за каналом ss yз . Якщо САК оптимізувати за каналом

ss y , то в якості оптимальної отримаємо характеристику (крива 2), яка

явно краща від кривої 1. Для САК із кривою 2 має місце ЦР: Кr=2,89; ТІ=5;

ТD=3,5; Tkv=1.

Page 144: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

143

Отже, коли мова йде про оптимізацію САК, то потрібно чітко

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

критерієм. Інакше результати можуть значно відрізнятися.

Рис. 5.14. Оптимальні перехідні процеси у САК за каналом ss y

Запропонований алгоритм оптимізації цифрових САК відкриває

можливість синтезу ЦР без етапу апроксимації динамічних властивостей

ОК. Це не тільки дозволяє зменшити похибку моделювання САК за

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

суб‟єктивності при виборі структури апроксимуючої залежності.

Представлений алгоритм оптимізації САК можна використовувати на

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

налаштувань регуляторів із ПІД-законом керування. При цьому, важливу

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

технологічного процесу.

Слід зазначити, що САК, де застосовується квадратичний критерій

якості (Nvr=2), має підвищену схильність до коливань. З цих причин, на

думку авторів, використання модульних критеріїв (Nvr=1, 3) є більш

перспективним при синтезі цифрової САК.

5.7. Оптимізація налаштувань модифікованих ПІД-законів

керування із мінімізацією керуючого впливу

З появою дешевих мікропроцесорних засобів автоматизації зріс

інтерес до програмних реалізацій ПІД регулятора [78]. Серед регуляторів,

що застосовуються на виробництві, близько 90-95% використовують ПІД

закон регулювання та його часткові реалізації [73, 74]. За довгі роки

використання класичного ПІД регулятора виявлено ряд недоліків

функціонування. В ПІД регуляторі три параметри налаштування, що в

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

особливо для систем із великим транспортним запізненням, або

розподіленістю параметрів та для систем, де одночасно необхідно висока

якість ослаблення збурюючих факторів та слідкування за завданням. Як

Page 145: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

144

наслідок, почали з‟являтися модифікації ПІД закону регулювання [72, 74].

Серед таких модифікацій слід виділити ПІ-Д та І-ПД регулятори, які

широко використовують фірми ABB, Honeywell, Fisher-Rosemount,

Foxboro, SATT Instruments, Toshiba та інші [76]. ПІ-Д та І-ПД регулятори

розглядають як окремий тип реалізації закону керування [72, 75].

Використання мікропроцесорних засобів підвищило вимоги до якості

функціонування САК. На сьогоднішній день САК повинна забезпечувати

необхідну якість керування, а також мінімізувати витрати матеріальних та

енергетичних ресурсів для досягнення поставлених цілей. Огляд сучасних

SOFTLOGIC-систем [56, 63] показав, що програмне забезпечення

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

законів керування. З іншого боку, теорія оптимізації динамічних систем

базується на векторно-матричному представленні моделей САК [14, 22, 57].

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

промислових контролерах, математичний апарат векторно-матричного

аналізу не знайшов практичного застосування. Більшість SOFTLOGIC-

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

використання математичних методів векторно-матричного аналізу. З цих

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

є актуальним завданням.

У даному пункті розглядається одноконтурна САК, структурна схема

якої представлена рис. 5.15. Структурна схема САК подібна до схеми, що

розглядалася на рис. 5.1. На схемі прийнято аналогічні позначення

сигналів. Відмінність схеми полягає в наявності додаткового сигналу уs, що

надходить на ЦР. Така особливість викликана реалізацією модифікованих

ПІД законів керування, що буде показано нижче.

Рис. 5.15. Структура схема САК, зs – сигнал завдання, еs – сигнал

розузгодження, us – сигнал керування, s – сигнал

зовнішнього збурення, хs – вхідний та уs – вихідний

сигнали ОК

ОК

ЦР

ys

es зs

_

us

xs

ys

Page 146: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

145

Теорія оптимізації динамічних систем [9, 22, 57] для синтезу САК

пропонує використання інтегрально-квадратичної форми критерію якості,

оскільки така постановка задачі має загальний аналітичний розв‟язок:

f

f

t

TT

tf

T dtURUXQXXSXI02

1

2

1, (5.12)

тут, Sf, Q – вагові додатні напіввизначені матриці, R – вагова симетрична

додатна матриця, X – вектор стану ОК, U – вектор керування ОК, tf –

кінцевий момент часу. Термінальна складова критерію є квадратичною

нормою відхилення фактичного кінцевого стану ft

X від нульового

(заданого) із вагою Sf. Інтегральна складова критерію дозволяє оцінити

динамічну поведінку вектора стану X із вагою Q та вектора керування U із

вагою R.

Для одноконтурної цифрової САК, що зображена на рис. 5.15

дискретний аналог критерію якості (5.12) прийме вигляд:

1

0

22

2

1 Nt-

sss ureqTkvI , якщо 0

Ntsse , (5.13)

тут, q та r – вагові коефіцієнти, Nt – загальна кількість точок спостереження

перехідного процесу із кроком дискретизації dtNkTkv TkvNtt f ,

s – поточний індекс дискретного часу.

Проведемо аналіз критерію (5.13). Будемо розглядати ОК із

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

апаратів мають такі властивості. Припустимо, що САК стійка та настройки

ЦР при зміні завдання САК (або відпрацювання збурення) забезпечують

виконання умови 0Ntsse sss узe . Таким, чином сума із першим

доданком критерію (5.13) з плином часу набуде сталого значення, оскільки

0Ntsse за умовою. Для компенсації розузгодження у кінцевий момент

часу 0Ntsse ЦР повинен перевести сигнал керування із початкового

стану 00

ssu (нульові початкові умови) у кінцеве 0Ntssu . Якщо

Nt та 0r , тоді

1

0

2Nt-

ssru , а критерій якості (5.13) втрачає сенс.

Іншим недоліком критерію (5.13) є інтегрування величин еs та us у одне

числове значення, які різні по своїй фізичні суті. Навіть, якщо нормувати

сигнали еs та us до одиничного значення, враховуючи вагові коефіцієнти q

та r, вага одиниці сигналу еs та us буде різною.

Щоб усунути перелічені недоліки критерію (5.13) пропонується

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

Nt

ssss KxзreqTkvI

0

22. (5.14)

Page 147: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

146

Тут, K – коефіцієнт передачі ОК,

Ntss

s

x

yK

. У сумі із другим доданком

функціоналу (5.14) присутній сигнал керування хs, але цей сигнал

“масштабується до розмірності” сигналу еs. Для критерію (5.14), якщо

Nt та 0r сума із другим доданком

1

0

2Nt-

sss-Kxзr набуває сталого

значення, оскільки NtssNtss xKу

, а 0

NtsssNtss узe за умовою.

При цьому змінюється фізична суть доданку. Доданок 2sur критерію (5.13)

мінімізує значення сигналу керування із вагою r. Доданок

1

0

2Nt-

sss-Kxзr

критерію (5.14) мінімізує відхилення сигналу керування хs від технологічно

заданого значення із вагою доданку r.

Таким чином, для синтезу та дослідження динамічних характеристик

САК пропонується розглянути критерій якості:

Nt

ssss

Nt

ssss

.Nvr,KxзreqTkv

;Nvr,KxзreqTkv

I

0

22

0

2

1

(5.15)

Математичну модель ОК будемо визначати за методом, що

розглянутий в п.5.1.

Математична реалізація ПІ-Д та І-ПД закону керування дещо

відрізняється від ПІД. Відповідні рівняння для ПІ-Д, І-ПД та ПІД

регуляторів, що використовуються для промислових аналогових

регуляторів, в операторній формі мають вигляд [72, 75]:

py

pK

T

pTKpe

pTKpu

f

d

dr

i

r

1

11

, (5.16)

py

pK

T

pTKpe

pTKpu

f

d

dr

i

r

1

11

, (5.17)

pe

pK

T

pT

pTKpu

f

d

d

i

r

1

11 , (5.18)

де Kr, Ti, Td – параметри налагодження регулятора, (відповідно коефіцієнт

передачі, час інтегрування та час диференціювання); fK – коефіцієнт, що

Page 148: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

147

визначає граничну частоту фільтра Д–складової регулятора 202...K f

[74], f

d

K

T – стала часу фільтра; p – оператор Лапласа.

Отримаємо кінцево–різницеві рівняння ЦР для розглянутих законів

керування. Спочатку розглянемо інтегральний член для (5.16) – (5.18):

pepT

pIi

1 . (5.19)

Перейдемо від зображення (5.19) до оригіналу:

t

i

dtteT

tI0

1. (5.20)

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

(5.20):

1

0

s

jj

i

s eT

TI (5.21)

Розглянемо диференційний член для ПІД регулятора (5.18) із

аперіодичним фільтром першого порядку:

pe

pK

T

pTpu

f

d

dd

1

. (5.22)

Перейдемо від зображення (5.22) до оригіналу:

dt

tedTtu

dt

tu

K

Tdd

d

f

d . (5.23)

Замінюючи диференціали у (5.23) скінченними різницями, перейдемо до

ґратчастого рівняння. Після спрощення отримаємо рекурентне рівняння для

визначення впливу Д–складової ПІД регулятора:

11 ssdsd,ds,d eebuau , (5.24)

тут TkvKT

Ta

fd

dd

,

fdd Kab . Із урахуванням сигналу sy залежність

(5.24) справедлива для (5.16) та (5.17).

Враховуючи (5.21), (5.24) дискретні аналоги рівнянь (5.16) – (5.18)

для ЦР приймуть вигляд:

11

1

0

ssdsd,dr

s

jj

i

srs yybuaKeT

TeKu , (5.25)

11

1

0

ssds,ddsr

s

jj

i

rs yybuayKeT

TKu , (5.26)

Page 149: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

148

11

1

0ssdsd,d

s

jj

i

srs eebuaeT

TeKu . (5.27)

Як видно, на відміну від цифрового ПІД (5.27) закону керування, ПІ-

Д (5.25) та І-ПД (5.26) закони керування для формування керуючої дії крім

сигналу розузгодження еs використовують вихідний сигнал ОК уs, рис. 1.15.

Програмна реалізація розглянутих у даному пункті залежностей

аналогічна підходу, що описаний в п. 5.1. Масив перехідної характеристики

САК Hts:Coefl формується із кроком dt (як для аналогової САК), або з

кроком Tkv (для цифрової САК). Формування масиву перехідної

характеристики для аналогової САК реалізовано підпрограмою FormHtsA. procedure FormHtsA;

var z,s,Zd,La,L: integer;

x,y,yp,u,ud,udp,e,ep,sum,Ad,Bd: real;

Rs: CoefL;

begin

L:=round(Ht[-1]); dt:=Ht[L+1]; Tkv:=Nk*Dt; Rs:=Ht;

Ad:=Td/(Td+Kf*Tkv); Bd:=Ad*Kf;

Hts[-1]:=L; Hts[L+1]:=dt;

HtsX[-1]:=L; HtsX[L+1]:=dt;

for z:=Nk to L do Rs[z]:=Rs[z]-Ht[z-Nk];

if Tvs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

for s:=0 to L do Hts[s]:=0; HtsX[0]:=0;

z:=1; I:=0; e:=0; sum:=0; ud:=0;

repeat

if z mod Nk = 0 then

begin

y:=Hts[z]; yp:=Hts[z-Nk];

ep:=e; e:=Zd-y;

sum:=sum+e*Tkv; udp:=ud;

case Nzr of

1: begin {PID}

ud:=Ad*udp+Bd*(e-ep);

u:=Kr*(e+sum/Ti+ud);

end;

2: begin {PI-D}

ud:=Ad*udp+Bd*(y-yp);

u:=Kr*(e+sum/Ti)-Kr*ud;

end;

3: begin {I-PD}

ud:=Ad*udp+Bd*(y-yp);

u:=Kr*sum/Ti-Kr*(y+ud);

end;

end;

x:=u+La;

for s:=0 to L-z do

Page 150: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

149

Hts[z+s]:=Hts[z+s]+Rs[s]*x;

end;

HtsX[z]:=x;

if abs(e)>Ovr

then e:=Ovr

else

case Nvr of

1: I:=I+q*abs(e)+r*abs(Zd-K*x);

2: I:=I+q*sqr(e)+r*sqr(Zd-K*x);

3: I:=I+q*abs(e)+r*abs(x);

4: I:=I+q*sqr(e)+r*sqr(x);

end;

inc(z);

until (z>L) or (e=Ovr);

if e=Ovr

then

begin

for s:=z to L do

begin

Hts[s]:=0.5;

HtsX[s]:=0.5;

end;

Hts[601]:=Ovr;

end

else Hts[601]:=I*Dt;

end;

Варіант формування масиву перехідної характеристики для цифрової

САК (крок з часом dt*Nk:Tkv ) реалізовано процедурою FormHtsD. procedure FormHtsD;

var z,s,Zd,La,L: integer;

x,y,yp,u,ud,udp,e,ep,sum,Ad,Bd: real;

Rs: CoefL;

begin

L:=round(Ht[-1]); dt:=Ht[L+1]; Tkv:=Nk*Dt;

Nt:=L div Nk; Ad:=Td/(Td+Kf*Tkv); Bd:=Ad*Kf;

Hts[-1]:=Nt; Hts[Nt+1]:=Tkv;

HtsX[-1]:=Nt; HtsX[Nt+1]:=Tkv; Rs[0]:=Ht[0];

for z:=1 to Nt do Rs[z]:=Ht[z*Nk]-Ht[(z-1)*Nk];

for z:=0 to Nt do Hts[z]:=0;

if Tvs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

z:=1; I:=0; e:=0; sum:=0; ud:=0;

repeat

y:=Hts[z]; yp:=Hts[z-1];

ep:=e; e:=Zd-y;

sum:=sum+e*Tkv; udp:=ud;

case Nzr of

1: begin {PID}

Page 151: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

150

ud:=Ad*udp+Bd*(e-ep);

u:=Kr*(e+sum/Ti+ud);

end;

2: begin {PI-D}

ud:=Ad*udp+Bd*(y-yp);

u:=Kr*(e+sum/Ti)-Kr*ud;

end;

3: begin {I-PD}

ud:=Ad*udp+Bd*(y-yp);

u:=Kr*sum/Ti-Kr*(y+ud);

end;

end;

x:=u+La; HtsX[z]:=x;

for s:=0 to Nt-z do Hts[z+s]:=Hts[z+s]+Rs[s]*x;

if abs(e)>Ovr

then e:=Ovr

else

case Nvr of

1: I:=I+q*abs(e)+r*abs(Zd-K*x);

2: I:=I+q*sqr(e)+r*sqr(Zd-K*x);

3: I:=I+q*abs(e)+r*abs(x);

4: I:=I+q*sqr(e)+r*sqr(x);

end;

inc(z);

until (z>Nt) or (e=Ovr);

if e=Ovr

then

begin

for s:=z to L do

begin

Hts[s]:=0.5;

HtsX[s]:=0.5;

end;

Hts[601]:=Ovr;

end

else Hts[601]:=I*Tkv;

end;

Вибір того чи іншого варіанта формування масиву Hts реалізується

підпрограмою FormHts (див. п.5.1). Програмна реалізація підпрограм для

оптимізації САК залишилася незмінною та описана в п.5.2 – п.5.5. Лістинг

основної програми аналогічний п.5.6 (див. Додаток 12).

Приклад дослідження цифрової САК із використанням розробленої

програми продемонстровано нижче. Щоб підкреслити універсальність

методу оптимізації в якості математичної моделі ОК було взято перехідну

характеристику представлену на рис. 5.16, якій відповідає передатна

функція:

τpOK e

pTpT

KpW

11 21

. (5.28)

Page 152: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

151

Рис. 5.16. Перехідна характеристика ОК

Динамічні властивості ОК вибрано довільно без прив‟язки до конкретного

технологічного апарату: К=1,2; Т1=1; Т2=5; 3τ . З цих причин динамічні

властивості ОК та налаштування ЦР представляються без розмірностей.

На рис. 5.17. представлені результати моделювання рельєфу поверхні

для критерію (5.15) в координатах ir ,TKfI із цифровим ПІ

регулятором (Td=0, Tkv=1) за каналом ss yз . Рельєфи поверхні показника

якості І для САК із І-П регулятором мають схожі зображення.

Рис. 5.17. Рельєфи поверхні показника якості ir ,TKfI для ПІ

регулятора за каналом ss yз (Nvr=1, q=1, r=1)

Криві 1 - 4, що зображені на рис. 5.18, представляють залежності

оптимальних налагоджувань Kr та Ti від диференційної складової Td (Kf=5)

для модифікацій ПІД регулятора. Крива 1 характеризує САК із І-ПД

Page 153: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

152

регулятором за каналом ss yз , 2 – із ПІ-Д регулятором за каналом

ss yз , 3 – із ПІД регулятором за каналом ss yз , крива 4 характеризує

САК за каналом ss yλ для усіх розглянутих модифікацій ПІД регулятора.

Аналізуючи криву 4 (рис. 5.18), можна зробити висновок, що оптимальні

настройки ЦР для законів керування (5.25) – (5.27) за каналом ss yλ

мають однакове значення. Справді, якщо sss yзe , то при зs=0

залежності (5.25) – (5.27) стають тотожними.

a)

б)

Рис. 5.18. Показник якості І для модифікацій ПІД регулятора за

каналами ss yз та ss yλ : а – модульний критерій

якості (Nvr=1, q=1, r=1); б – квадратичний критерій

якості (Nvr=2, q=1, r=1)

Page 154: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

153

Оптимізація САК проводилося для різних співвідношень 21 TT та

max21,TTτ ОК. За результатами можна стверджувати, що маємо справу із

одноекстремальним функціоналом при оптимізації САК.

Основний алгоритм комп‟ютерної оптимізації САК реалізовано

відповідно до методу Хука-Дживса (див. п.5.5). Такий підхід потребує

значно менші ресурси на обчислення та скорочується час пошуку. Основою

для алгоритму оптимізації цифрової САК за методом Хука-Дживса є

залежності (5.15), (5.7), (5.25) – (5.27). Коротко прокоментуємо

запропонований алгоритм оптимізації САК.

1. Задається перехідна характеристика ОК h(t). Задаються: параметри

критерію (5.15); крок дискретизації Nk для вибору періоду дискретизації

Tkv цифрової САК; тип закону керування; початкові значення

параметрів ЦР Kr, Ti, Td та величина кроку їх зміни Dk, Di, Dd; Kf –

коефіцієнт диференційного фільтра; Ovr – максимальне значення

вихідного сигналу, що обмежує область пошуку параметрів ЦР в межах

стійкої САК.

2. Підпрограмою FormHtsD (або FormHtsА для аналогової САК)

використовуючи (5.7) та (5.25) – (5.27) (в залежності від вибраного

закону керування) чисельно розраховується перехідний процес у САК.

Для отриманої перехідної характеристика САК визначається значення

критерію якості І за залежністю (5.15). Не виключено, що під час

комп‟ютерної оптимізації САК може виявитись нестійкою. Умова

abs(Hts[z])>Ovr під час розрахунків дозволяє перевірити стійкість

системи керування із заданими параметрами регулятора. У випадку

нестійкої САК показник якості не обчислюється.

3. Змінюючи приріст параметрів налагодження ЦР Kr±Dk, Ti±Di, Td±Dd

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

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

пошуку, доки не буде отримано мінімальне значення І для даного

напрямку (процедура OptSt, див. п.5.5). Якщо за знайденим напрямком

критерій (5.15) мінімізований, переходять до пошуку нового напряму

уздовж якого функціонал цілі І зменшується найбільше.

4. У випадку, якщо пошук нового напрямку не дав позитивного результату

– робота завершується.

Представлений алгоритм є спрощеною модифікацією методу Хука-

Дживса. Тут кроки приросту параметрів налагодження ЦР Dk, Di, Dd

постійні. Вони визначають точність із якою оптимізуються параметри ЦР.

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

Page 155: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

154

Розглянемо вплив параметрів критерію (5.15) на результат

оптимізації цифрової САК. Для спрощення, в усіх подальших дослідженнях

використано математичну модель ОК, якій відповідає передатна функція

(5.28). Щоб інформаційно не перевантажувати дослідження, оптимальні

значення налаштувань ЦР представляти не будемо (зрозуміло, що вони

існують та вони – єдині) – для нас головне чисельні значення критерію та

вид перехідних характеристик, що забезпечує ЦР. Для усіх досліджень

період дискретизації САК Tkv=1, коефіцієнт диференційного фільтра ЦР

Kf=5.

На рис. 5.19 представлено результати моделювання оптимальної САК

за каналом ss yз для ПІД регулятора. Для запропонованого критерію (4)

вагові коефіцієнти r та q ефективно впливають на результат оптимізації.

Для граничних випадків мінімізується: 1) модуль (Nvr=1) або квадрат

(Nvr=2) сигналу розузгодження, якщо r=0; 2) модуль (Nvr=1) або квадрат

(Nvr=2) сигналу керування, якщо q=0. Оптимізація САК за

середньоквадратичним сигналом розузгодження (Nvr=2, r=0) забезпечує

підвищену схильність до коливань перехідного процесу у порівняні із

модульним критерієм (Nvr=1, r=0). Також не слід забувати, що критерій

(5.15) в залежності від вибраних вагових коефіцієнтів q та r мінімізує

співвідношення площ для кривих xs та ys перехідного про процесу САК. З

цих причин, скажімо, числові значення критерію якості (5.15) для кривих 2

та 3 (рис. 4, а) порівнювати між собою некоректно.

Page 156: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

155

a)

б)

Рис. 5.19. Оптимізація САК із ПІД регулятором за каналом ss yз :

а – модульний критерій (Nvr=1); б – квадратичний критерій (Nvr=2)

Page 157: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

156

Як було показано на рис. 5.19, крива 4 характеризує настройки ЦР

для розглянутих модифікацій ПІД закону керування за каналом ss yλ ,

оскільки залежності (5.25) – (5.27) стають тотожними, якщо зs=0

sss yзe . На рис. 5.20 представлено результати оптимізації САК за

каналом ss yλ (Nvr=1, q=1, r=1). Крива 1 забезпечила оптимальний

показник якості Іо=14,24 (настройки ЦР: Kr=0,92; Ti=4,77; Td=1,71; Kf=5;

Tkv=1). За каналом ss yз отримані настройки ЦР забезпечують перехідні

процеси у САК: крива 2 для ПІ-Д закону керування, крива 3 для І-ПД

закону керування, крива 4 для ПІД закону керування. Незважаючи на те,

що за каналом ss yз числові значення критерію якості для модифікацій

ПІД закону керування близькі, І-ПД закон керування забезпечує мінімальне

перерегулювання перехідного процесу. Отже, у випадку оптимізації САК за

каналом ss yλ І-ПД закон керування забезпечує найкращу динаміку

САК.

Рис. 5.20. Оптимізація САК за каналом ss yλ

Наступна серія перехідних процесів у системі керування

представлена на рис. 5.21. Тут САК оптимізується за каналом ss yз

(Nvr=1, q=1, r=1). Крива 1 відповідає за оптимальний перехідний процес із

ПІД регулятором (настройки: Kr=0,58; Ti=5,61; Td=0,94; Kf=5; Tkv=1). Крива

2 представляє перехідний процес за каналом ss yλ із даними

настройками ПІД регулятора. Крива 3 характеризує оптимальний

перехідний процес із ПІ-Д регулятором (настройки ЦР: Kr=0,62; Ti=6,01;

Td=1,04; Kf=5; Tkv=1). Крива 4 представляє перехідний процес за каналом

ss yλ із ПІ-Д регулятором. І відповідно, крива 5 представляє

оптимальний перехідний процес із І-ДП регулятором (настройки ЦР: Kr=1;

Ti=5,15; Td=1,53; Kf=5; Tkv=1), а крива 6 характеризує перехідний процес у

Page 158: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

157

системі керування за каналом ss yλ із І-ДП регулятором. Із

представлених графіків, видно, що ПІД та ПІ-Д регулятори забезпечують

найкращу динаміку САК за каналом ss yз , проте збурення компенсують

не так ефективно як І-ПД регулятор. Динаміка САК із ПІ-Д регулятором

близька до динаміки САК із ПІД регулятором. Найгірша динаміка за

каналом ss yз у САК із І-ПД регулятор, проте компенсація збурення

відпрацьовується найкраще.

Рис. 5.21. Оптимізація САК за каналом ss yз

Важливим параметром для практичного проектування цифрових САК

є неідеальність диференційної складової ЦР Kf. Якщо в аналогових

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

обмеженості, то для ЦР даний параметр навмисно програмується для

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

реалізації Д–складової в ПІД регуляторі на значення оптимальних

настройок та результат оптимізації. На рис. 5.22 представлені перехідні

процеси у САК за каналом ss yз для критерію якості (5.15). Крива 1

(рис. 5.22, а) – оптимальна перехідна характеристика САК, знайдена при

використанні ідеального ПІД регулятора (настройки ЦР: Kr=0,84; Ti=5,47;

Td=1,87; Kf=10000; Тkv=1). Якщо врахувати неідеальність ПІД регулятора, а

саме прийняти, що Kf=2, то при даних настройках регулятора матимемо

перехідну характеристику, показану кривою 2 (рис. 5.22, а). Криві 1 та 2

відрізняються своєю динамікою. В даному випадку неідеальність

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

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

Отримаємо оптимальний ЦР: Kr=0,76; Ti=5,61; Td=1,51; Kf=2; Тkv=1; та

криву 3 в як оптимальну перехідну характеристику САК. Крива 3

Page 159: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

158

відрізняється від кривої 1 але значно менше ніж крива 2. На рис. 5.22, б

представлені перехідні процеси для досліду, який аналогічний

попередньому із мінімізацією функціоналу (5.15) (Nvr=1, q=1, r=1). Криві 1

– 3 (рис. 5.22, б) суттєво не відрізняються. Очевидно, що при пошуку

оптимальної настройки ЦР необхідно звернути увагу на параметр Kf ЦР,

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

a)

б)

Рис. 5.22. Вплив Kf на оптимальні перехідні процеси у САК за каналом

ss yз : а – модульний критерій якості (Nvr=1, q=1, r=0);

б – модульний критерій якості (Nvr=1, q=1, r=1)

Наступна серія досліджень демонструє вплив критеріїв (5.13) та

(5.14) якість оптимізації САК із цифровим ПІ регулятором. Динамічні

властивості ОК (5.28) залишилися без зміни. На рис. 5.23 представлені

рельєфи поверхні показників якості (5.13) та (5.14) для ПІ регулятора та

відповідні перехідні процеси у САК за каналом ss yз . Як видно із

Page 160: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

159

графіків (рис. 5.23, в) оптимізація САК за критерієм (5.13) призводить до

синтезу ПІ регулятора, який наближається до П регулятора та намагається

знайти “золоту середину” між мінімізацією сигналу розузгодження еs та

сигналом керування us. При цьому, числове значення критерію Io=27,4

досить умовне враховуючи, що чисельне інтегрування критерію

проводилося до Nt=50. Із збільшенням часу спостереження перехідного

процесу САК – числове значення (5.13) зростатиме, що свідчить про його

некоректність. Система ізоліній (рис. 5.23, а) для

а)

б)

в)

г)

Рис. 5.23. Оптимізація САК із цифровим ПІ регулятором за каналом ss yз :

а – рельєф поверхні показника якості (5.13);

б – рельєф поверхні показника якості (5.14);

в – перехідний процес у САК для показника якості (5.13) q=1, r=1;

г – перехідний процес у САК для показника якості (5.14) q=1, r=1

критерію (5.13) показує, що оптимум знаходиться на межі заданої області

параметрів ПІ регулятора, тобто ПІ регулятор прямує до П закону

керування, якщо збільшити область дослідження. Для більшості САК

Page 161: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

160

синтез П регулятора неприйнятний. На відміну від критерію (5.13) у

показників якості (5.14) та (5.15) перелічені недоліки відсутні (див. рис.

5.23, б, г).

Запропонований показник якості (5.15) та алгоритм оптимізації

цифрових САК є ефективним для синтезу ПІ-Д, І-ДП та ПІД регуляторів із

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

Алгоритм оптимізації відкриває можливість синтезу ЦР без етапу

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

моделювання САК за рахунок виключення етапу апроксимації. Синтез

САК за критерієм якості (5.15) відноситься до одноекстремальних задач

оптимізації. Представлений алгоритм оптимізації САК можна

використовувати на верхньому рівні супервізорних систем керування в

якості порадника налаштувань ЦР із ПІД модифікаціями закону керування.

Важливу роль для синтезу оптимальної САК відіграє коректний вибір

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

показали дослідження, якщо система керування є стабілізуюча і її

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

використовувати І-ДП закон регулювання. У випадку коли САК

відпрацьовує програмну зміну завдання, ПІД закон регулювання забезпечує

кращі динамічні характеристики системи керування. ПІ-Д закон керування

за своїми динамічними властивостями у САК наближається до ПІД закону

керування. На випадок коли САК повинна компенсувати збурюючі фактори

та відпрацьовувати програмну зміну завдання, важко дати коректні

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

зміни завдання та збурення, що визначається технологічним процесом. З

цих причин зупинитись на якійсь конкретній модифікації ПІД закону

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

технологічного процесу.

5.8. Часткова компенсація збурення шляхом введення

інформації про нього на регулятор

Реалізації ідеї інваріантності САК відносно збурення s часто

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

інваріантності, зокрема умов фізичної реалізовності відносно пристрою

вводу (ПВ) [44, 69].

Оцінимо можливості такого способу покращення якості стабілізації

регульованої величини шляхом комп‟ютерної оптимізації САК, показаної

на рис. 5.24.

Page 162: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

161

Рис. 5.24. Структурна схема САК із введенням в регулятор

інформації про збурення s

Як видно із схеми рис. 5.24 – сигнал збурення s подається на

елемент порівняння регулятора через ПВ. Припустимо, що ПВ описується

передатною функцією у вигляді реальної диференціальної ланки

.

1

pK

T

pTpW

f

v

vПВ (5.29)

Тут Tv – час диференціювання ПВ, fK – конструкторський параметр, що

визначає граничну частоту фільтра Д – складової (див. п. 5.7), будемо

вважати його фіксованим, наприклад, 5fK .

Передатній функції (5.29) відповідає диференційне рівняння

dt

tdyTtu

dt

tdu

K

Tvv

v

f

v 1 . (5.30)

Замінюючи диференціали у (5.30) скінченними різницями, перейдемо до

ґратчастого рівняння. Після спрощення отримаємо рекурентне рівняння для

визначення впливу Д – складової ПВ:

1,1,11 ssvsv,vs,v yybuau , (5.31)

де TkvKT

Ta

fv

vv

,

fvv Kab .

Вибір залежності (5.29) для ПВ обумовлений наступними

міркуваннями. Вихід uv,s ПВ інформації про збурення s додається до

вихідного сигналу ОК y2,s . Отже, сигнал похибки регулятора

svsss uyзe , . В усталеному режимі за умови, що регулятор у своєму

законі має інтегральну складову матимемо 0* e (тут і далі індексом *

позначатимемо усталені значення змінних). Тим самим *y в усталеному

режимі змінюватиметься на *vu , що небажано. Використання аперіодичних

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

приймати стале значення вихідного сигналу constuv *

для статичного

OK еs

ЦР

ПВ

зs ys

-

uv,s

us

- W2(р)

W1(р)

Page 163: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

162

режиму, за рахунок чого у завдання САК буде вноситися статична

помилка. Усунути цей недолік можна шляхом диференціювання в ПВ

сигналу збурення s . Методи теорії інваріантності для таких випадків

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

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

W2(p). Проте, така компенсація навряд чи можлива для реальних ОК. По-

перше, виникає проблема фізичної реалізованості, якщо в каналі збурення

присутнє транспортне запізнення. По-друге, коректно математично описати

“швидкодіючі” змінні ОК досить складно, враховуючи їх фізичну суть та їх

мінливість в процесі роботи технологічного обладнання, а некоректна

математична модель нанівець зведе компенсаційні дії ПВ із диференційним

фільтром високого порядку. По-третє, в роботі реальних САК присутні

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

ПВ і вносити додаткові завади в роботу ЦР.

Приймемо, що математична модель ЦР реалізує модифікації ПІД

законів керування із реальною диференційною складовою, залежності

(5.25) – (5.27) див. п. 5.7:

;3,

;2,

;1,

11

1

0

11

1

0

11

1

0

NzryybuayKeT

TK

NzryybuaKeT

TeK

NzreebuaeT

TeK

u

ssds,ddsr

s

jj

i

r

ssdsd,dr

s

jj

i

sr

ssdsd,d

s

jj

i

sr

s

(5.32)

де Nzr=1 для ПІД регулятора, Nzr=2 для ПІ-Д регулятора та Nzr=3 для І-ПД

регулятора.

ОК представляється передатними функціями:

1

1

11

pe

pA

pBpW

(5.33)

для каналу регулювання та

2

2

22

pe

pA

pBpW

(5.34)

для каналу збурення. Для залежностей (5.33) – (5.34) існують перехідні

характеристики ОК h1(t) та h2(t), які будуть слугувати математичною

моделлю ОК для чисельного визначення реакції САК на сигнал керування

us та збурення s за алгоритмом, що описаний в п. 5.1. Передатні функції

ОК W1(p) та W2(p) використовуються у відлагоджувальній програмі

DemOptVs для чисельного визначення перехідних характеристик ОК h1(t)

та h2(t). За організацію масивів перехідних характеристик ОК Ht1:Coefl

та Ht2:Coefl відповідає процедура FormHt. Для її обслуговування

використовується підпрограма InpOb (див. Додаток 13).

Page 164: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

163

Формування масиву перехідної характеристики САК Hts:Coefl

реалізується підпрограмою FormHts, яка міститься у програмному модулі

OptCompV (Додаток 14). У своїй роботі FormHts використовує

процедуру FormHtsA для формування масиву перехідної характеристики

аналогової САК із кроком dt та процедуру FormHtsD для формування

масиву перехідної характеристики цифрової САК із кроком Tkv. У

підпрограмах FormHtsA та FormHtsD реалізовано рекурентні

співвідношення (5.31) та (5.32).

Автоматичний пошук оптимальної комбінації налагоджувальних

параметрів регулятора та ПВ за умови мінімізації критерію якості (5.15)

виконує процедура OptSt. Алгоритм оптимізації із стартової точки

описаний в п. 5.5. У даному випадку оптимізації підлягають чотири

параметри САК: Kr, Ti, Td, Tv. Величини кроків варіювання Dk (для Kr),

Di (для Ti), Dd (для Td та Tv), а також вибір параметрів варіювання Ddk

(для Kr), Ddi (для Ti), Ddd (для Td) та Dtv (для Tv) проводиться

процедурою Diffs. Задання координат стартової точки пошуку та, власне,

сам пошук оптимального налагодження САК виконується у процедурі

DemOpt.

Демонстрація графіків перехідних характеристик САК при різних

комбінаціях налагоджування параметрів регулятора та ПВ реалізовано

процедурою Nastr. В процедурі Nastr можна співставити графіки

перехідних характеристик при різних параметрах САК (при варіюванні

Nvr, Nzr, r, q, K, при пошуку із різних стартових точок, з різними

кроками пошуку і т.п.).

Приклад роботи програми DemOptVs продемонстровано нижче. Для

математичної моделі ОК було взято наступні передатні функції каналів

регулювання та збурення:

pepp

pW 5

21185

1

,

185

15.022

pppW (5.35, 5.36)

Динамічні властивості ОК вибрано довільно без прив‟язки до конкретного

технологічного апарату, тому надалі налаштування ЦР представляються

без розмірностей.

Оптимізація САК розглядалася за каналом ss y . Проводити

оптимізацію САК із ПВ за каналом ss yз немає сенсу, так як для даного

каналу 0s , відповідно ПВ не приймає участі в роботі системи

керування. Оптимізація проводилася за критерієм якості (5.15) (Nvr=1, q=1,

r=0) для цифрового ПІД регулятора, хоча це не принципово. У п. 5.7 було

показано, що за каналом збурення ss y ПІД, ПІ-Д та І-ПД закони

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

5.25. Як видно із графіків, використання ПІД регулятора та ПВ (графік 4)

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

висновки за даними результатами недоцільно. Доцільність використання

Page 165: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

164

ПВ із ПІД регулятором (а можливо і ПІ регулятором) визначається за

динамічними властивостями каналів збурення та регулювання ОК,

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

Розглянутий алгоритм оптимізації дозволяє дати коректні рекомендації для

конкретного ОК із відомими динамічними властивостями.

Програмне забезпечення, що представлено у Додатках 13 та 14, надає

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

комбінацій на якість оптимізації САК, а також дозволяє вибрати кращі

варіанти серед кращих.

Рис. 5.25. Оптимізація САК за каналом ss y (Tkv=1, Kf=5).

1 – ПІ регулятор: Kr=1,2; Ti=9,9;

2 – ПІД регулятор: Kr=1,3; Ti=6,7; Td=2,6;

3 – ПІ + ПВ: Kr=1,05; Ti=7; Tv=0,5;

4 – ПІД + ПВ: Kr=1; Ti=5,3; Td=1,3; Tv=0,5

5.9. Оптимізація систем керування із проміжними

імпульсними сигналами

В технологічних системах окремі елементи часто з‟єднуються

послідовно, так що збурення, яке діє на певний елемент схеми, може

доходити до точки контролю (регульованої величини) зі значним

транспортним та (або) ємкісним запізненням. Ця обставина може суттєво

ускладнити своєчасну та якісну компенсацію такого (як правило,

небажаного) збурюючого чинника (втрата темпу – як кажуть шахісти).

Одним із засобів боротьби з подібним ефектом є каскадна схема САК.

Другий підхід – використання упереджуючої інформації з точки схеми, яка

ближче до місця дії збурення, а, отже, і реагує на це збурення швидше ніж

регульована величина. Схематично це може виглядати, як зображено на

рис. 5.26, а.

Page 166: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

165

Рис. 5.26. Структурна схема САК із проміжним імпульсним сигналом

На схемі (рис. 26, а) показано, що ОК складається із двох

технологічних ланок: ОК1 та ОК2. Це може бути один технологічний

апарат, або технологічна система із двох апаратів, які з‟єднані послідовно.

ОК має два вихідних сигнали – проміжний y1,s та y2,s основний, що

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

про проміжну величину y1,s. Структурну схему рис. 5.26, а можна

представити, як показано на рис. 5.24, б. У цьому випадку “приведений”

ОК складається із двох каналів впливу W1 та W2. Інерційність каналу W1

містить динамічні властивості ОК1 а канал W2 включає в себе динамічні

характеристики ОК1 та ОК2. Зрозуміло, що інерційність каналу W1 повинна

бути меншою за інерційність каналу W2, інакше використання ПВ

недоцільне за рахунок “втрати цінності інформації” в сигналі y1,s.

Вихід uv,s ПВ проміжної величини y1,s додається до вихідного сигналу

ОК y2,s . Отже, сигнал похибки регулятора svsss uyзe ,,2 . В усталеному

режимі за умови, що регулятор у своєму законі має інтегральну складову

матимемо 0* e . Тим самим *2y в усталеному режимі змінюватиметься на

*vu , що небажано. Усунути цей недолік можна шляхом диференціювання в

ПВ проміжної величини y1,s. Приймемо, що ПВ – реальна диференціальна

ланка з передатною функцією

еs

OK1

ЦР

ПВ

OK2 зs y2,s y1,s

-

uv,s

us

a)

xs

-

еs OK

ЦР

ПВ

зs y2,s

y1,s -

uv,s

us

б)

xs

-

W2(р) W1(р)

Page 167: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

166

1

pK

T

pTpW

f

v

vПВ . (5.37)

Тут Tv – час диференціювання ПВ, fK – конструкторський параметр, що

визначає граничну частоту фільтра Д – складової (див. п. 5.7), будемо

вважати його фіксованим ( 5fK ).

Усталене значення *vu на виході ПВ з передатною функцією (5.37)

буде нульовим, отже, ПІД регулятор відпрацьовуватиме завдання зs без

похибки в усталеному режимі.

Передатній функції ПВ (5.37) відповідає рекурентне рівняння (п. 5.8):

1,1,11 ssvsv,vs,v yybuau . (5.38)

Приймемо, що математична модель ЦР реалізує модифікації ПІД

законів керування із реальною диференційною складовою залежність

(5.32).

ОК представляється передатними функціями:

1

1

11

pe

pA

pBpW

,

2

2

22

pe

pA

pBpW

(5.39, 5.40)

для основного каналу регулювання. Передатним функціям W1(p) та W2(p)

відповідають перехідні характеристики ОК h1(t) та h2(t), які

використовуються для чисельного визначення реакції САК на суму

сигналів керування us та збурення s sss ux . Алгоритмізація

програмного забезпечення для даної САК аналогічна підходу, що

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

DemOptVs (див. Додаток 13) залишилася незмінною. Програмний підхід до

визначення масивів перехідних характеристик ОК Ht1:Coefl та

Ht2:Coefl теж не змінився. Відмінність програмного забезпечення

полягає у реалізації формування масиву перехідної характеристики САК

Hts:Coefl відповідно до структурної схеми рис. 5.26, б. Підпрограмою

FormHtsА реалізується формування масиву перехідної характеристики

для аналогової САК із кроком dt а підпрограма FormHtsD

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

цифрової САК із кроком Tkv. Процедури FormHtsА та FormHtsD

включені до програмного модулю OptImpVs, який можна розглянути у

Додатку 15. Критерій оптимізації САК (5.15) та алгоритм оптимізації

увійшли до модулю OptImpVs без змін стосовно попереднього параграфу.

Приклад роботи програми DemOptVs для оптимізації САК із ПВ

відповідно до структурної схеми рис. 5.26, б продемонстровано нижче.

Математичну модель ОК представлено передатними функціями для

допоміжного та основного каналів регулювання:

Page 168: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

167

14

11

ppW , pe

pppW 5

221816

1

(5.41, 5.42)

Динамічні властивості ОК вибрано довільно без прив‟язки до конкретного

апарату, тому налаштування ЦР представляються без розмірностей.

Оптимізація САК проводилася для цифрового ПІД-регулятора за

каналами регулювання рис. 5.27 та збурення рис. 5.28. Як критерій

оптимізації використовувалася залежність (5.15) (Nvr=1, q=1, r=0). Як

видно із графіків рис. 5.27, використання ПВ за каналом ss yз суттєвого

покращення перехідних процесів (у порівнянні із класичною структурою

САК) не отримано. ПВ вніс додаткову високочастотну коливніть у

перехідні процеси. Проте за каналом збурення (рис. 5.28) – використання

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

рекомендації для використання ПВ. Як уже говорилося у п. 5.8 доцільність

використання ПВ із ПІД регулятором (а можливо і ПІ регулятором)

визначається динамічними властивостями каналів впливу ОК (основного та

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

здатності.

Програмне забезпечення, що представлено у Додатках 13 та 15, надає

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

комбінацій на якість оптимізації САК, а також дозволяє вибрати кращі

варіанти серед кращих.

Рис. 5.27. Оптимізація САК за каналом ss yз (Tkv=1, Kf=5).

1 – ПІ регулятор: Kr=0,65; Ti=8,9;

2 – ПІД регулятор: Kr=0,8; Ti=7,5; Td=3,2;

3 – ПІ + ПВ: Kr=1,5; Ti=11,2; Tv=4,6;

4 – ПІД + ПВ: Kr=0,95; Ti=8,1; Td=3,4; Tv=1,3

Page 169: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

168

Рис. 5.28. Оптимізація САК за каналом ss y (Tkv=1, Kf=5).

1 – ПІ регулятор: Kr=0,9; Ti=9,8;

2 – ПІД регулятор: Kr=1; Ti=6,8; Td=3,8;

3 – ПІ + ПВ: Kr=0,4; Ti=0,6; Tv=8,5;

4 – ПІД + ПВ: Kr=0,3; Ti=0,4; Td=1,2; Tv=10,1

5.10. Оптимізація каскадної системи автоматичного керування

Досі ми розглядали САК, де в процесі оптимізації варіюються 2, 3 або 4

параметри (Kr, Ti, Td, Tv). При збільшенні кількості таких параметрів час

пошуку оптимуму прогресивно збільшується, що може суттєво

ускладнювати процес оптимізації. Як один із способів прискорення

процесу пошуку можна йти до оптимуму варіюючи частину параметрів,

після чого добавляти нові параметри, але вже стартуючи із щойно

попередньо визначених позицій, які, хочеться сподіватись, значно ближчі

до шуканих, ніж ті, які задавались довільним чином (навмання). Такий

підхід є виправданим за умови існування єдиного оптимуму. Таке

припущення уявляється імовірним. На крайній випадок це припущення

можна перевірити, стартуючи з різних точок та порівнюючи отримані

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

розрахункова схема якої показана на рис. 5.29. Це варіант так званої

каскадної схеми. Два регулятори Р1 (стабілізуючий) та Р2 (коригуючий)

утворюють каскад, коли Р1 виконує функцію стабілізації проміжної

регульованої величини y1, тоді як Р2 коригує його роботу, задаючи йому в

якості завдання сигнал х2, який формується “в інтересах” стабілізації

основної регульованої величини y2.

Page 170: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

169

a)

б)

Рис. 5.29. Схема каскадної САК, при W1(p)=W3(p) та W2(p)=W4(p)

схема а перетворюється на б

Подібна схема має сенс тоді, коли стабілізація y1 покращує якість

підтримання на заданому рівні величини y2, у першу чергу, за рахунок

своєчасної компенсації (нехай навіть часткової) впливу зовнішнього

збурення . Це особливо ефективно, коли інерційність (щось на зразок

очікуваної тривалості перехідних процесів) в контурі стабілізації значно

менша, ніж інерційність контуру корекції. В ідеалі контур стабілізації мав

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

докотиться” до y2. На практиці ж усі елементи даної системи утворюють

єдине динамічне ціле і оптимізувати доводиться систему в цілому. А коли

регулятори Р1 і Р2 реалізують, наприклад, ПІД закони регулювання, то

оптимізувати систему доводиться варіюючи 6 параметрів: Kr1, Ti1, Td1 для

стабілізуючого та Kr2, Ti2, Td2 – для коригуючого.

Конкретизуємо ціль оптимізації. Частіше усього оптимізують

реакцію (перехідну характеристику) каналу “завдання регулятору – вихід

ОК”. По-перше – так простіше. Завдання регулятору задаємо ми самі, тоді

як збурення приходять самі (коли їм заманеться і які заманеться). Окрім

характеристик збурення треба знати канал, через який вони

“прориваються” на регульовану величину. На схемі рис. 5.24 а) –

проходить по двох каналах, де W3(р) – передатна функція каналу 1y та

W4(р) для 2y , тоді, як регулюючий вплив х1 іде відповідно через канал

ОК

Р1

y2

e1 х2

_

x1

Р2 e2 з

_

W3(p)

W1(p)

W4(p)

W2(p)

Р1

y2

e1 х2

_

x1

Р2 e2 з

_

W1(p)

W2(p)

Page 171: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

170

W1(р) на y1 то W2(р) – на y2. Треба враховувати, що усі чотири канали

належать одному і тому ж ОК. Отже, задавати їх незалежно один від одного

неправомірно, оскільки кожен з них несе інформацію спільну для ОК в

цілому (наприклад, у вигляді спільного знаменника передатної функції,

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

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

цю обставину. В ідеалі було б бажано оперувати з моделлю ОК у вигляді

системи диференціальних рівнянь, яку ми могли б в процесі розрахунку

перехідних процесів САК інтегрувати, наприклад, числовими методами.

Розраховувати на варіант дослідження такої САК аналітичними методами –

неконструктивно.

Для демонстраційно-відлагоджувальної програми (де

відлагоджується алгоритм оптимізації) приймемо, що канали ОК

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

z

z

n

z

pz

zpT

eKpW

1

, (5.43)

де 41 z .

Тоді початкова інформація про динамічні властивості ОК може бути

задана у формі масиву:

Pob s=1 2 3 4

j=1 K1 T1 n1 1

2 K2 T2 n2 2

3 K3 T3 n3 3

4 K4 T4 n4 4

У подальшому для кожного з каналів об‟єкта формується масив

ординат його перехідної характеристики (реакції на одиничний ступінчатий

сигнал t1 за нульових початкових умов). Сукупність таких масивів

утворює масив Mht=array[1..4] of Coefl, який має таку структуру:

Mht -1 0 1 2 … L L+1 … 601

Z=1 L h[1,0] h[1,1] h[1,2] … h[1,L] dt

2 L h[2,0] h[2,1] h[2,2] … h[2,L] dt

3 L h[3,0] h[3,1] h[3,2] … h[3,L] dt

4 L h[4,0] h[4,1] h[4,2] … h[4,L] dt

Розрахунок перехідних процесів в системі будемо виконувати з

використанням масиву Mht (через інтеграл згортки для кожного з каналів

зокрема [15, 17]). Масив Mht формується процедурою FormMht. Дана

процедура є демонстраційною і формує масив перехідних характеристик

Mht за передатною функцією ОК (5.43). У випадку, якщо динамічні

властивості ОК за кожним із каналів задані масивом ординат перехідної

характеристики – процедура FormMht не використовується. Лістинг

Page 172: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

171

програми KascOpt де використовуються підпрограми даного пункту

наведено у Додатку 16.

В якості регуляторів, як ми вже вище згадували, розглянемо

реалізацію ПІД законів керування.

Процедура FormHts – формує масив Hts:Coefl ординат

перехідної характеристики системи керування (вхід з або λ , вихід – y2).

Одночасно обчислюється значення якості показника І, яке повертається в

Hts[601]. Як критерій оптимізації САК використано інтегральний

показник (5.10).

“Ручний” пошук оптимуму, так би мовити, “пристрілку” можна

виконати у процедурі типу Nastr (див. п.5.2), що стосовно до нашої задачі

може мати меню: '0-ex,1–Param,2–Kr1,3–Ti1,4-Td1,5–Kr2,6–Ti2,7–Td2,8–Sc,9–

h(t)'

Отже, тут можна переглянути, скоригувати Nvr, R, Tvs та інші

параметри, зібрані в процедурі Param, задати і побачити в інформаційному

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

скоригувати їх при потребі, оцінити характер перехідної характеристики

САК та значення показника якості I.

При організації автоматичного пошуку оптимуму для варіювання 6

параметрів налагодження треба реалізувати 6 вкладених циклів – процес

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

черговому наближенні до оптимуму варіювались одночасно не всі

параметри, а деяка вибрана користувачем їх частина. Наприклад, для

початку можна спробувати обмежитись П-законом в стабілізуючому

регуляторі та ПІ-законом – в коригуючому. Потім можна буде добавити І-

або Д-складову в стабілізуючий регулятор і т.д.

Щоб реалізувати такий підхід, цикли типу for s:=-1 to l do ..

замінимо на цикли for s:=-Ds to Ds do .., де Ds може приймати

значення 1 (змінна s варіюється), або 0 (змінна s фіксована на нулі, отже,

відповідний їй параметр налагодження Ti:=Tic+S*D буде також

фіксованим на рівні Tic).

Алгоритм пошуку приймемо такий, як в п. 5.5, а саме, варіант методу

найшвидшого спуску, коли повторюються цикли “орієнтування” та руху у

вибраному напрямку. Можна очікувати, що на початковому етапі пошуку

темп наближення до оптимуму буде вищим, ніж на наступних. Тому

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

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

'0' ('0-exit'). Для спрощення дострокового виходу з циклу

“орієнтації” скористаємось циклам типу repeat. Алгоритм пошуку за 6

параметрами програмно реалізовано процедурою Opt6.

Page 173: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

172

Організаційна сторона обслуговування даної процедури виконується

за допомогою підпрограм Diffs та Dem6. Лістинг програми для

оптимізації каскадної САК представлено у Додатку 16.

Приклад роботи програми СascOpt для оптимізації каскадної САК

відповідно до структурної схеми рис. 5.29 продемонстровано нижче.

Математичну модель ОК представлено передатними функціями:

14

131

ppWpW ,

pe

ppWpW 5

24214

1

(5.44, 5.45)

Динамічні властивості ОК вибрано довільно без прив‟язки до конкретного

апарату, тому налаштування регуляторів представлено без розмірностей.

Оптимізація САК проводилася для ЦР за каналами регулювання рис.

5.30 та збурення рис. 5.31. Як критерій оптимізації використано залежність

(5.10) (Nvr=1, R=1).

Оптимізація цифрової САК за каналом 2yз проводилася у

декілька етапів. На першому етапі оптимізувалися ЦР (Tkv=1) із різних

стартових точок (графіки 1, 2). Як видно, значення критеріїв якості для

обох варіантів практично співпадають, також досить близькими є

оптимальні налаштування коригуючого регулятора Р2, значення параметрів

налаштування стабілізуючого регулятора Р1 відрізняються більше. Це

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

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

використовувався ПД закон регулювання для стабілізуючого регулятора.

Значення критерію якості зменшилося (графік 3), причому, при оптимізації

диференційна складова регулятора Р1 виявилася нульовою. Отже, на

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

закон регулювання. Серед розглянутих, саме цей перехідний процес можна

вважати найкращим за динамікою зміни завдання у САК.

Враховуючи попередні дослідження, при оптимізації САК за каналом

2y для стабілізуючого регулятора Р1 використовувався П закон

регулювання, перехідний процес зображено на рис. 5.31.

За одиничним дослідженням не варто робити рекомендації, але

складається враження, що у каскадних систем керування для

стабілізуючого регулятора Р1 слід використовувати П закон керування. Це

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

контурі каскадної САК при мінімальній кількості параметрів

налагодження. Для коригуючого контуру Р2 САК необхідно

використовувати ПІ, або ПІД закони керування. Інтегральна складова

дозволяє усунути статичну помилку а диференційна (при необхідності) –

форсувати швидкість перехідних процесів у САК.

Page 174: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

173

Рис. 5.30. Оптимізація каскадної САК за каналом 2yз .

1 – Kr1=2,75; Ti1=9,8; Td1=0,9; Kr2=1; Ti2=9,9; Td2=2,1;

2 – Kr1=1,85; Ti1=9,3; Td1=1,6; Kr2=1,2; Ti2=12,1; Td2=2,2;

3 – Kr1=7,75; Ti1=100000; Td1=0; Kr2=0,8; Ti2=6,2; Td2=2.

Рис. 5.31. Оптимізація САК за каналом 2y ; Kr1=7,75; Ti1=100000;

Td1=0; Kr2=0,8; Ti2=6,2; Td2=2; Tkv=1.

Page 175: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

174

ЛІТЕРАТУРА

1. Ажогин, В.В. Автоматизированное проектирование математического

обеспечения АСУ ТП [Текст] / В.В. Ажогин, М.З. Згуровский. – К.: Вища

школа, 1986. – 335с.

2. Ажогин, В.В. Машинное проектирование оптимальных систем

управления пространственно-распределенными динамическими

объектами [Текст] / В.В. Ажогин, М.З. Згуровский. – К.: Вища школа,

1985. – 170 с.

3. Анго, А. Математика для электро- и радиоинженеров [Текст] / Андре

Анго. –М.: Наука, 1964. -772с.

4. Андриянов, П.А. Влияние распределенности параметров на динамические

свойства теплообменников [Текст] / П.А. Андриянов, И.М. Масленников

// Химическая промышленность. – 1963. – № 12. – С. 50 – 52.

5. Бахвалов, Н.С. Численные методы [Текст] / Н.С. Бахвалов. – М.: Наука,

1975. – 631с.

6. Белова, Д.А. Применение ЭВМ для анализа и синтеза автоматических

систем управления [Текст] / Д.А. Белова, Р.Е. Кузин. – М.: Энергия,

1979. – 264с.

7. Бесекерский, В.А. Теория систем автоматического регулирования [Текст]

/ В.А. Бесекерский, Е.П. Попов. – М.: Наука, 1972. – 768 с.

8. Бидерман, В.Л. Прикладная теория механических колебаний [Текст] /

В.Л. Бидерман. – М.: Высшая школа, 1972. – 416с.

9. Брайсон, А. Прикладная теория оптимального управления [Текст]: пер. с

англ. / А. Брайсон, Хо Ю-ши. – М.: Мир, 1972. – 544 с.

10. Бутковский, А.Г. Характеристики систем с распределенными

параметрами [Текст] / А.Г. Бутковский. – М.: Наука, 1979. – 224 с.

11. Грищенко, А.З. Комп‟ютерне визначення коефіцієнтів передаточної

функції дискретної моделі теплоакумулюючої стінки [Текст] / А.З.

Грищенко, Н.А. Кубрак // Автоматизація виробничих процесів. – 2001.

– №1(12). – С. 28 – 35.

12. Голінко, І.М. Динамічна модель теплового режиму калорифера [Текст] /

І.М. Голінко, А.П. Ладанюк, Л.Д. Кошелєва // Інформацiйнi технології

та комп'ютерна інженерія. – 2009. – №3, – С. 59 – 63.

13. Голінко, І.М. Моделювання температурного режиму теплообмінника

[Текст] / І.М. Голінко, А.І. Кубрак, А.С. Кравченко // Східно-

європейский журнал передових технологій. – 2010. – №2. – С. 24 – 27.

14. Голінко І.М. Динамічна оптимізація при управлінні тепловим процесом

[Текст] / Голінко І.М. // –Укр. Деп.. у ДНТБ України 22.04.96,

№1012-Ук 96, –10 с.

15. Голінко, І.М. Комп‟ютерна оптимізація системи керування за

інтегральними показниками якості [Текст] / І.М. Голінко, А.І. Кубрак //

Комп‟ютерні системи та інформаційні технології. – 2011. – №2(50).

– С. 55 – 59.

Page 176: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

175

16. Голінко, І.М. Синтез цифрової системи керування за інтегральними

показниками якості [Текст] / І.М. Голінко, А.І. Кубрак, В.Г. Трегуб //

Наукові вісті Національного технічного університету України

“Київський політехнічний інститут”. – 2011. – №6. – С. 54 – 60.

17. Голінко, І.М. Аналіз гібридної системи керування за імпульсною

характеристикою об‟єкта [Текст] / І.М. Голінко, Ю.М. Ковриго //

Наукові вісті Національного технічного університету України

“Київський політехнічний інститут”. – 2010. – № 2. – С. 30 – 33.

18. Грищенко, А.З. Динамика обогрева теплоаккумулирующих стенок

нагревателями сопротивления [Текст] / А.З. Грищенко, А.И. Кубрак,

В.П. Баско. // Сб. Научные и методические задачи создания систем и

средств автоматизации в химическом производстве. – 1980. – С. 45 – 52.

19. Двайт, Г.Б. Таблицы интегралов и другие математические формулы

[Текст] / Г.Б. Двайт. – М.: Наука, 1977.

20. Девятов, Б.Н. Теория переходных процессов в технологических

аппаратах с точки зрения задач управления [Текст] / Б.Н. Девятов. – СО

АН СССР, 1964. – 323 с.

21. Дoрф, Р. Современные системы управления [Текст]: пер. с англ. / Р.

Дoрф, Р. Бишоп. –М.: Лаборатория Базовых Знаний, 2002. – 832 с: ил.

22. Жученко А.І. Динамічна оптимізація з використанням MATLAB та

SIMULINK [Текст]: навч. посібник / А.І. Жученко, Л.Р. Ладієва, Р.М.

Дубік. –К.: СПД Моляр, 2010. –210 с.

23. Жученко, А.І. Математичне моделювання динамічних режимів

змійовикових теплообмінних апаратів [Текст] / А.І. Жученко, Н.А.

Кубрак // Автоматизація виробничих процесів. – 2003. – №1(16).

– С.43 – 47.

24. Жученко, А.І. Математичне моделювання динамічних режимів

теплообмінних апаратів типу „труба в трубі” [Текст] / А.І. Жученко,

Н.А. Кубрак // Наукові вісті НТУУ „КПІ”. – 2003. – №1. – С. 21 – 26.

25. Жученко, А.И. Динамика объектов с распределенными параметрами

[Текст]: учебн. пособие / А.И. Жученко, Н.А. Кубрак, И.М. Голинко. –

Киев: «ЭКМО», 2005. – 121с.

26. Жученко, А.И. Динамика объектов с сосредоточенными параметрами

[Текст]: учебн. пособие / А.И. Жученко, Н.А. Кубрак, И.М. Голинко. –

Київ: НТУУ “КПІ” ВПІ ВПК “Політехніка”, 2006. –152с.

27. Жученко, А.И. Базовые алгоритмы численного анализа [Текст]: учебн.

пособие / А.И. Жученко, Н.А. Кубрак, И.М. Голинко. –К.: НТУУ “КПІ”,

2006. – 236 с.

28. Калиткин, Н.Н. Численные методы [Текст] / Н.Н. Калиткин. – М.:

Наука, 1978. – 512с.

29. Карачун, В.В. Дротяні елементи приладів в акустичному середовищі

[Текст] / В.В. Карачун, Н.А. Кубрак. – К.: ФОП Корнійчук, 2001. – 160с.

30. Карачун, В.В. Комп‟ютерне визначення передаточних функцій

дискретної моделі струнного підвісу приладів [Текст] / В.В. Карачун,

Page 177: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

176

Н.А. Кубрак // Вісник Житомирського інженерно–технологічного

інституту. – 2000. – №12. – С. 158 – 163.

31. Карачун, В.В. Влияние акустического излучения на динамику подвесов.

[Текст] / В.В. Карачун, Н.А. Кубрак, Е.Р. Потапова, Н.В. Гнатейко //

Космічна наука і технологія. – 1999. – Т. 5, №2/3. – С. 75 – 77.

32. Кваско, М.З. Числові методи комп‟ютерного моделювання

автоматичних систем. Алгоритми і програми [Текст]: навч. посібник /

М.З. Кваско, А.І. Кубрак, А.І. Жученко. – К.: Політехніка”.

– 2003. – 360 с.

33. Коновалов, М.А. Проблемы автоматизации инерционных тепло-

энергетических объектов [Текст] / М.А. Коновалов. – К.: Феникс.

– 2009. – 310 с.

34. Кремнев, О.А. Тепло- и массообмен в горном массиве и подземных

сооружениях [Текст] / О.А. Кремнев, В.Я. Журавленко. – К.: Наукова

думка. – 1980. – 382 с.

35. Кубрак, А.И. Инженерный метод расчета динамических характеристик

двухтрубных теплообменников [Текст] / А.И. Кубрак // Химическое

машиностроение. – 1972. – вып. 15. – С. 131 – 139.

36. Кубрак, А.И. О выборе типа математической модели

теплоаккумулирующей стенки [Текст] / А.И. Кубрак // Сб. Динамика

тепловых процессов. – 1972. – С. 12 – 20.

37. Кубрак, А.И. О разложении в ряд Маклорена передаточных функций

теплообменников типа „труба в трубе” [Текст] / А.И. Кубрак //

Химическое машиностроение. – 1975, – вып. 21, – С. 136 – 141.

38. Кубрак, А.И. Об учете влияния толстых стенок на динамические

свойства объектов регулирования температуры [Текст] / А.И. Кубрак,

М.З. Кваско // Химическое машиностроение. – 1970. – вып. 12,

– С. 148 – 157.

39. Кубрак, А.И. О разложении в ряд передаточной функции

теплоаккумулирующей стенки [Текст] / А.И. Кубрак, Б.Е. Шевченко //

Химическое машиностроение. – 1978. – вып. 18, – С. 95 – 97.

40. Кубрак, А.И. Численный анализ и программирование [Текст]: учебн.

пособие / А.И. Кубрак, И.М. Голинко, А.В. Ситников. –Кам.–Под.:

Калиграф, 2009. – 256 с.

41. Кубрак, Н.А. Хвильові процеси в гнучких ланках автоматичних систем

[Текст]: навч. посібник / Н.А. Кубрак. – К.: НМЦ ВО, 2000. – 160 с.

42. Кубрак А.І. Комп‟ютерний аналіз АСР за імпульсною характеристикою

об‟єкта [Текст] / А.І. Кубрак, І.М. Голінко, Ю.М. Ковриго // Нові

рішення в сучасних технологіях: зб. наук. пр. НТУ “ХПІ” –Вип. 57. –

Х., – 2010. – С. 128–132.

43. Куо, Б. Теория и проектирование цифровых систем управления [Текст]:

пер. с англ. / Б. Куо. –М.: Машиностроение, 1986. – 448 с.

44. Кухтенко, А.И. Проблемы инвариантности в автоматике [Текст] / А.И.

Кухтенко. –Киев: Гостехиздат УССР, 1963. – 328 с.

Page 178: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

177

45. Ладиев, Р.Я. О частотных характеристиках змеевиковых

теплообменников [Текст] / Р.Я. Ладиев, А.И. Кубрак // Химическое

машиностроение. – 1971. – вып. 14. –С. 97 – 103.

46. Ладиев, Р.Я. О частотных характеристиках парожидкостных

теплообменников и трубопроводов [Текст] / Р.Я. Ладиев, А.И. Кубрак //

Химическое машиностроение. – 1970. – вып. 11. –С. 122 – 130.

47. Ладиев, Р.Я. Математическое описание объектов с распределенными

параметрами [Текст]: учеб. пособие / Р.Я. Ладиев, Ю.А. Остапенко,

А.И. Кубрак, М.З. Кваско. – К.: КПИ, 1974. – 149 с.

48. Ладієва, Л.Р. Оптимізація технологічних процесів [Текст] / Л.Р.

Ладієва. –К.: ІВЦ Видавництво “Політехніка”, 2004. – 192 с.

49. Лыков, А.В. Теория теплопроводности [Текст] / А.В. Лыков. – М.:

Высшая школа, 1967. – 570 с.

50. Маковский, В.А. Динамика металлургических объектов с

распределенными параметрами [Текст] / В.А. Маковский. – М.:

Металлургия, 1971.

51. Мосолов, В.Е. Определение передаточной функции гибкой

нерастяжимой нити при пространственном обтекании потоком [Текст] /

В.Е. Мосолов, В.С. Тихонов // Автоматика. – 1979. – №4. – С. 24 – 30.

52. Носова, Л.Н. Таблицы функций Томсона и их первых производных

[Текст]: справочник / Л.Н. Носова. – М.: Издательство АН СССР, 1960.

– 422 с.

53. Пановко, Я.Г. Введение в теорию механических колебаний [Текст] /

Я.Г. Пановко – М.: Наука, 1991. – 255с.

54. Пат. 44799 Україна, Регулюючий мікропроцесорний контролер /

Ковриго Ю.М., Коновалов М.А., Голінко І.М., Бунке О.С.; Заявник та

власник Національний технічний університет України “КПІ”. – № u

2009 05450; заявл. 29.05.2009; опубл. 12.10.2009, Бюл. № 19. – 8 с.: іл.

55. Пат. 54042 Україна, Універсальний мікропроцесорний контролер /

Ковриго Ю.М., Коновалов М.А., Голінко І.М., Бунке О.С.; Заявник та

власник Національний технічний університет України “КПІ”. – № u

2010 04874; заявл. 23.04.2010; опубл. 25.10.2010, Бюл. № 20. – 8 с.: іл.

56. Патрахин, В.А. Средства программирования РС-совместимых

контроллеров [Текст] / В.А. Патрахин // Информатизация и системы

управления в промышленности. – 2004. – №3. – С. 3 – 8.

57. Рей, У. Методы управления технологическими процессами [Текст]: пер.

с англ. / У. Рей. – М.: Мир, 1983. – 368 с.

58. Ротач, В.Я. Расчет настройки промышленных систем регулирования

[Текст] / В.Я. Ротач. – М.: Госэнергоиздат, 1961. – 214с.

59. Ротач, В.Я. Автоматизация настройки систем управления [Текст] /

В.Я. Ротач, В.Ф. Кузишин, А.С. Клюев и др. – М.: Энергоатомиздат,

1984. – 272 с.

60. Ротач, В.Я. Теория автоматического управления теплоэнергетическими

процессами [Текст] / В.Я. Ротач. – М.: Энергоатомиздат, 1985. – 296 с.

Page 179: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

178

61. Самарский, А.А. Разностные методы для эллиптических уравнений

[Текст] / А.А. Самарский, В.Б. Андреев. – М.: Наука, 1976. – 350 с.

62. Светлицкий, В.А. Механика гибких стержней и нитей [Текст] /

В.А. Светлицкий. – М.: Машиностроение, 1978. – 222 с.

63. Слободюк, М.В. Огляд сучасних засобів програмування PC-BASED

контроллерів [Текст] / М.В. Слободюк, І.М. Голінко // Тези доповідей

IХ міжнародної науково-практичної конференції "Сучасні проблеми

наукового забезпечення енергетики" (Київ, 18-22 квітня 2011 р.) – К.:

НТУУ “КПІ”, 2011. –с.304.

64. Тимошенко, С.П. Колебания в инженерном деле [Текст] / С.П.

Тимошенко, Д.Н. Янг, У. Уивер. – М.: Машиностроение, 1985. – 472 с.

65. Тихонов, А.Н. Уравнения математической физики [Текст] / А.Н.

Тихонов, А.А. Самарский. – М.: Наука, 1977. – 736 с.

66. Фарлоу, С. Уравнения с частными производными для научных

работников и инженеров [Текст] / С. Фарлоу. – М.: Мир, 1985. – 384 с.

67. Фаронов, В.В. Турбо Паскаль 7.0. Начальный курс [Текст]: учеб.

пособие / В.В. Фаронов. – М.: Нолидж, 1997. – 616 с.

68. Чермак, И. Динамика регулируемых систем в теплоэнергетике и химии

[Текст] / И. Чермак, В. Петерка, И. Заворка – М.: Мир, 1972. – 623 с.

69. Чинаев, П.И. Самонастраивающиеся системы [Текст]: справочник /

П.И. Чинаев. – Киев: Наук. думка, 1969. – 528 с.

70. Шевяков, А.А. Инженерные методы расчета динамики теплообменных

аппаратов [Текст] / А.А. Шевяков, Р.В. Яковлева. – М.:

Машиностроение, 1968. – 317 с.

71. Щедров, В.С. Основы механики гибкой нити [Текст] / В.С. Щедров. –

М.: Машгиз, 1961. – 171 с.

72. Aidan, O'Dwyer Handbook of PI and PID Controller Tuning Rules [Text] /

O'Dwyer Aidan. – Dublin Institute of Technology, 2006. – 545 p.

73. Ang, K.H. PID control system analysis, design, and technology [Text] /

K.H. Ang, G. Chong // IEEE Transactions on Control Systems Technology.

– 2005.– Vol. 13, № 4. – P. 559–576.

74. Äström, K.J. Advanced PID control [Text] / K.J. Äström, T. Hägglund. –

ISA, 2006. – 460 p.

75. Johnson, A. PID Control. New Identification and Design Methods [Text] /

Michael A. Johnson, Mohammad H. Moradi. – Springer, 2005. – 543 p.

76. McMillan, G.K. Tuning and control loop performance - a practitioner's guide

[Text] / G.K. McMillan. – Instrumentation Systems &, 1994. – 453 p.

77. Michael A. Johnson PID Control. New Identification and Design Methods

[Text] / Michael A. Johnson, Mohammad H.Moradi. Springer, 2005. –543 p.

78. Quevedo, J. Digital Control 2000: Past, Present and Future of PID Control

[Text] / J. Quevedo, T. Escobet // Proceedings of the IFAC Workshop, Eds.,

Terrassa, Spain, 5–7 Apr. 2000. – 618 p.

Page 180: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

179

ДОДАТКИ

Додаток 1. Програмний модуль GodoGt

unit GodoGt;

interface

uses Crt, Graph, Serv, Groms;

const

Wn:real=0.01; Wk:real=3;

Nsc:integer=50; D:real=20;

Min:integer=5; Max:integer=15;

Kw:real=1.5; Ks:integer=1;

Tg:char='P'; {alt 'L'}

var w,dw,dt:real; Gt:CoefL;

function IntGt(t: real): real;

procedure UrGod;

procedure Scan;

procedure SZ;

procedure PointGod;

procedure LineGod;

procedure Godo;

procedure IndW;

procedure DemGodo;

Implementation

function IntGt(t: real): real;

var s: integer; r: real;

begin

r:=t/Gt[L+1];{dt;}

s:=trunc(r);

t:=frac(r);

IntGt:=Gt[s]+t*(Gt[s+1]-Gt[s]);

end;

procedure UrGod;

var wt,dtw,g:real; s,Lw:integer;

begin

x:=0; y:=0; dt:=Gt[L+1];

if w<Pi/(10*dt)

then

begin

for s:=1 to L-1 do

begin

wt:=w*s*dt; g:=Gt[s];

x:=x+g*cos(wt); y:=y-g*sin(wt);

end;

x:=x*dt; y:=y*dt;

end

else

begin

Page 181: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

180

dtw:=Pi/(10*w); Lw:=round(d/dtw); dtw:=d/Lw;

for s:=1 to Lw-1 do

begin

wt:=w*s*dtw; g:=IntGt(s*dtw);

x:=x+g*cos(wt); y:=y-g*sin(wt);

end;

x:=x*dtw; y:=y*dtw;

end;

end;

procedure SZ;

begin

UrGod;

if Dx<>0 then s:=x0+round(x/Dx)

else s:=x0;

if Dy<>0 then z:=y0-round(y/Dy)

else z:=y0

end;

procedure PointGod;

const Kw=1.2;

var Mdx,Mdy,Md,Sp,Zp:integer; Wp:real;

begin

Sp:=s; Zp:=z; Wp:=w;

repeat

W:=Wp+Dw; SZ; Mdx:=abs(S-Sp); Mdy:=abs(Z-Zp);

if Mdx>Mdy then Md:=Mdx

else Md:=Mdy;

if Md<>1 then

if Md<1 then Dw:=Dw*Kw

else Dw:=Dw/Md;

until (Md=1) or (W>Wk);

if Md=1 then PutPixel(S,Z,c)

end;

procedure LineGod;

var Mdx,Mdy,Md,Sp,Zp:integer; Wp,r:real;

begin

Sp:=s; Zp:=z; Wp:=w; r:=(Min+Max)/2;

repeat

W:=Wp+Dw; SZ; Mdx:=abs(S-Sp); Mdy:=abs(Z-Zp);

if Mdx>Mdy then Md:=Mdx

else Md:=Mdy;

if (Md>Max) or (Md<Min) then

if Md<Min then Dw:=Dw*Kw

else Dw:=Dw*r/Md;

until ((Md<=Max) and (Md>=Min)) or (W>Wk);

if (Md<=Max) and (Md>=Min) then Line(Sp,Zp,S,Z);

end;

procedure Scan;

var s:integer;

begin

Page 182: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

181

Dw:=(Wk-Wn)/Nsc;

Xmin:=0; Xmax:=0; Ymin:=0; Ymax:=0;

for s:=0 to Nsc do

begin

W:=Wn+S*Dw; UrGod;

if X<Xmin then Xmin:=X; if X>Xmax then Xmax:=X;

if Y<Ymin then Ymin:=Y; if Y>Ymax then Ymax:=Y

end;

X0Y0(true); ClearDevice; SystCoor

end;

procedure Godo;

var J3:char; T20:string[20];

begin

PutA;Ou('0-Exit'); J3:='1';

dt:=d/L; Dw:=(Wk-Wn)/Nsc; W:=Wn; Sz;

PutPixel(S,Z,C); SetColor(C);

repeat

case Tg of

'P': PointGod;

'L': LineGod;

end;

Str(W,T20);

Clear(450,0,GetMaxX-1,10); OutTextXY(450,0,'W='+T20);

if KeyPressed then J3:=ReadKey

until (W>Wk) or (J3='0');

SetColor(15)

end;

procedure IndW;

var j2:char;

begin

repeat

PutA;

Ou('0-Ex, 1-W, 2-C, 3-Point, 4-Inscr');

Str(w:1:3,T10); Ts:='w='+T10;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('w',w);

'2': Oui('C',C);

'3': begin

SetColor(C); SZ; Circle(s,z,3);

SetColor(15);

end;

'4': Inscr;

end;

until j2='0';

end;

procedure DemGodo;

var j1:char; T20:string[20];

begin

Page 183: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

182

repeat

PutA;

Ou('0-Ex,1-Wn,2-Wk,3-Nsc,4-Tg,5-C,6-Sc,7-Godo,

8-IndW,9-Groms');

Str(Wn:1:6,T20); Ts:='Wn='+T20;

Str(Wk:1:6,T20); Ts:=Ts+', Wk='+T20;

Str(Nsc,T10); Ts:=Ts+', Nsc='+T10;

Ts:=Ts+', Tg='+Tg;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Our('Wn',Wn);

'2': Our('Wk',Wk);

'3': Oui('Nsc',Nsc);

'4': if Tg='P' then Tg:='L' else Tg:='P';

'5': Oui('C',C);

'6': Scan;

'7': Godo;

'8': IndW;

'9': Service;

end;

until j1='0';

end;

end.

Додаток 2. Програма DemSt

program DemSt;

uses Graph, Crt, Serv, GodoGt, Groms;

const

Ro:real=7800; Delta:real=0.05;

R0:real=0.05; R1:real=0.1;

Cst:real=456; Lam:real=50.2;

m:integer=20; K:integer=0; {Alt 1,2}

Ngl:integer=1; Ngr:integer=2;

Ninp:integer=0; Xout:real=0.045;

A0:real=1000; A1:real=250;

Tl:integer=1;{alt 0} Tr:integer=0;

Ql:integer=1; Qr:integer=0;

Tsl:integer=1; Tsr:integer=0;

Tc:char='H'; {alt G}

var q,q1,B0,B1,B2,B3,A,Hx,Tau:real;

Nout,Ks:integer; Ht,Mt:CoefL; Teta:CoefR;

procedure Step;

var s:integer; Tet:Coefr; Rs:real;

begin

for s:=1 to m-1 do

begin

Rs:=K/(R0/Hx+S)/2;

Tet[s]:=q1*Teta[s]+q*((1-Rs)*Teta[s-1]+(1+Rs)*Teta[s+1]);

Page 184: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

183

end;

case Ngl of

0: Tet[0]:=Teta[0]+2*(1+K)*Q*(Teta[1]-Teta[0]);

1: Tet[0]:=TL;

2: Tet[0]:=Tet[1]+Hx/Lam*QL;

3: Tet[0]:=B0*Tet[1]+B1*TsL;

end;

case Ngr of

1: Tet[m]:=Tr;

2: Tet[m]:=Tet[m-1]-Hx/Lam*Qr;

3: Tet[m]:=B2*Tet[m-1]+B3*Tsr;

end;

Tet[-1]:=m; Teta:=Tet;

end;

procedure FormHtGt;

var s:integer;

begin

Gt[-1]:=L; Ht[-1]:=L; Dt:=D/L;

Gt[0]:=0; Gt[L]:=0; Gt[L+1]:=Dt;

Ht[-1]:=L; Ht[0]:=0; Ht[L+1]:=Dt;

if K in [1,2] then Delta:=R1-R0;

if (K in [1,2]) and (R0=0) then NgL:=0;

Hx:=Delta/m;

A:=Lam/(Ro*Cst); Tau:=sqr(Hx)/(6*A);

Ks:=round(Dt/Tau);

if Ks=0 then Ks:=1;

Tau:= Dt/Ks; Q:=A*Tau/sqr(Hx); q1:=1-2*q;

B0:=Lam/(Lam+Hx*A0); B1:=1-B0;

B2:=Lam/(Lam+Hx*A1); B3:=1-B2;

Teta[-1]:=m;

for s:=0 to m do Teta[s]:=0;

TL:=0; QL:=0; TsL:=0;

Nout:=round(Xout/Hx);

Tr:=0; Qr:=0; Tsr:=0;

case Ninp of

0: begin

TL:=1; QL:=1; TsL:=1;

end;

1: begin

Tr:=1; Qr:=1; Tsr:=1;

end;

end;

for s:=1 to L do

begin

for z:=1 to Ks do Step;

Ht[s]:=Teta[Nout];

end;

for s:=0 to L-1 do Gt[s]:=(Ht[s+1]-Ht[s])/Dt;

end;

procedure GrHtGt;

var j1:char; y:real; s:integer;

Page 185: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

184

begin

repeat

PutA;

Ou('0-ex,1-m,2-Ninp,3-Xout,4-D,5-Tc,6-Sc,7-C,8-Gr');

Str(m,T10); Ts:='m='+T10;

Str(Ninp,T10); Ts:=Ts+', Ninp='+T10;

Str(Xout:1:3,T10); Ts:=Ts+', Xout='+T10;

Str(D:1:1,T10); Ts:=Ts+', D='+T10;

Ts:=Ts+', Tc='+Tc;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Oui('m',m);

'2': Oui('Ninp',Ninp);

'3': Our('Xout',Xout);

'4': Our('D',D);

'5': if Tc='H' then Tc:='G' else Tc:='H';

'6': begin

FormHtGt; Xmin:=0; Xmax:=D;

Ymin:=0; Ymax:=0;

for s:=0 to L do

begin

if TC='H' then Y:=Ht[s]

else Y:=Gt[s];

if Y<Ymin then Ymin:=Y;

if Y>Ymax then Ymax:=Y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

'7': Oui('C',C);

'8': begin

{FormHtGt;}

if Tc='G' then Graphic(Gt,C)

else Graphic(Ht,C);

end;

end

until J1='0'

end;

procedure TFC;

var j1: char;

begin

repeat

PutA; Ou('0-ex, 1-Lam, 2-Ro, 3-Cst, 4-A0, 5-A1');

Str(Lam:1:1,T10); Ts:='Lam='+T10;

Str(Ro:1:3,T10); Ts:=Ts+', Ro='+T10;

Str(Cst:1:1,T10); Ts:=Ts+', Cst='+T10;

Str(A0:1:1,T10); Ts:=Ts+', A0='+T10;

Str(A1:1:1,T10); Ts:=Ts+', A1='+T10;

Info; J1:=ReadKey;

case J1 of

Page 186: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

185

'1': Our('Lam',Lam);

'2': Our('Ro',Ro);

'3': Our('Cst',Cst);

'4': Our('A0',A0);

'5': Our('A1',A1);

end;

until J1='0';

end;

procedure Geom;

var j1: char;

begin

repeat

PutA; Ou('0-ex, 1-Delta, 2-K, 3-R0, 4-R1, 5-NgL, 6-Ngr');

Str(Delta:1:3,T10); Ts:='Delta='+T10;

Str(K,T10); Ts:=Ts+', K='+T10;

Str(R0:1:3,T10); Ts:=Ts+', R0='+T10;

Str(R1:1:3,T10); Ts:=Ts+', R1='+T10;

Str(NgL,T10); Ts:=Ts+', NgL='+T10;

Str(Ngr,T10); Ts:=Ts+', Ngr='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Our('Delta',Delta);

'2': Oui('K',K);

'3': Our('R0',R0);

'4': Our('R1',R1);

'5': Oui('NgL',NgL);

'6': Oui('Ngr',Ngr);

end

until J1='0';

end;

procedure GraphK;

var s0,s: integer;

begin

SetColor(C); s0:=round(Mt[L+1]);

MoveTo(x0+s0,y0-round(Mt[s0]/dy));

for s:=s0+1 to L do

LineTo(x0+s,y0-round(Mt[s]/dy));

SetColor(15);

end;

procedure DemStat;

const

TL:real=40; TR:real=100;

QL:real=5000; QR:real=5000;

TsL:real=20; TsR:real=80;

Tmin:real=0; Tmax:real=100;

var j1:char; Tx:string;

procedure Stat;

var e,f:real; s,s0:integer; ff:boolean;

begin

Page 187: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

186

Mt[-1]:=L; Xmin:=0; ff:=true;

if k=0 then Xmax:=Delta

else Xmax:=R1;

Ymin:=Tmin; Ymax:=Tmax;

X0Y0(false); ClearDevice; SystCoor;

case k of

0: begin

case NgL of

1: case Ngr of

1: begin e:=TL; f:=(TR-e)/Delta; end;

2: begin e:=TL; f:=-QR/Lam; end;

3: begin

e:=TL; f:=(TsR-e)/(Delta+Lam/A1);

end;

end;

2: case Ngr of

1: begin f:=-QL/Lam; e:=TR-f*Delta; end;

2: ff:=false;

3: begin

f:=-QL/Lam; e:=TsR-(Lam/A1+Delta)*f;

end;

end;

3: case Ngr of

1: begin

f:=(TR-TsL)/(Delta+Lam/A0);

e:=TR-Delta*f;

end;

2: begin f:=-QR/Lam; e:=TsL+Lam/A0*f; end;

3: begin

f:=(TsR-TsL)/(Delta+Lam/A1+Lam/A0);

e:=TsL+Lam/A0*f;

end;

end;

end;

if ff then for s:=0 to L do Mt[s]:=e+f*s*dx;

end;

1: begin

case NgL of

0: case Ngr of

1: e:=TR;

2: ff:=false;

3: e:=TsR;

end;

1: case Ngr of

1: begin

f:=(TR-TL)/Ln(R1/R0); e:=TL-f*Ln(R0);

end;

2: begin f:=-R1/Lam*QR; e:=TL-f*Ln(R0); end;

3: begin

f:=(TsR-TL)/(Lam/(A1*R1)+ln(R1/R0));

e:=TL-f*ln(R0);

end;

end;

Page 188: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

187

2: case Ngr of

1: begin f:=-R0/Lam*QL; e:=TR-f*ln(R1); end;

2: ff:=false;

3: begin

f:=-R0/Lam*QL;

e:=TsR-(Lam/(A1*R1)+ln(R1))*f;

end;

end;

3: case Ngr of

1: begin

f:=(TR-TsL)/(ln(R1/R0)+Lam/(A0*R0));

e:=TR-f*ln(R1);

end;

2: begin

f:=-R1/Lam*QR;

e:=TsL+(Lam/(A0*R0)-ln(R0))*f;

end;

3: begin

f:=(TsR-TsL)/

(ln(R1/R0)+Lam/(A1*R1)+Lam/(A0*R0));

e:=TsR-f*(ln(R1)+Lam/(A1*R1));

end;

end;

end;

if ff then

if NgL=0 then for s:=0 to L do Mt[s]:=e

else

begin

s0:=round(R0/dx); Mt[L+1]:=s0;

for s:=s0 to L do

Mt[s]:=e+f*ln(R0+(s-s0)*dx);

end;

end;

2: begin

case NgL of

0: case Ngr of

1: e:=TR;

2: ff:=false;

3: e:=TsR;

end;

1: case Ngr of

1: begin

f:=(TR-TL)/(1/R1-1/R0); e:=TL-f/R0;

end;

2: begin f:=sqr(R1)/Lam*QR; e:=TL-f/R0; end;

3: begin

f:=(TsR-TL)/(1/R1-Lam/(A1*R1*R1)-1/R0);

e:=TL-f/R0;

end;

end;

2: case Ngr of

1: begin f:=sqr(R0)/Lam*QL; e:=TR-f/R1; end;

2: ff:=false;

Page 189: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

188

3: begin

f:=sqr(R0)/Lam*QL;

e:=TsR+(Lam/(A1*R1*R1)-1/R1)*f;

end;

end;

3: case Ngr of

1: begin

f:=(TsL-TR)/(1/R0+Lam/(A0*R0*R0)-1/R1);

e:=TR-f/R1;

end;

2: begin

f:=sqr(R1)/Lam*QR;

e:=TsL-(1/R0+Lam/(A0*R0*R0))*f;

end;

3: begin

f:=(TsL-TsR)/(1/R0+Lam/(A0*R0*R0)+

Lam/(A1*R1*R1)-1/R1);

e:=TsL-f*(1/R0+Lam/(A0*R0*R0));

end;

end;

end;

if ff then

if NgL=0 then for s:=0 to L do Mt[s]:=e

else

begin

s0:=round(R0/dx); Mt[L+1]:=s0;

for s:=s0 to L do

Mt[s]:=e+f/(R0+(s-s0)*dx);

end;

end;

end;

if ff then if (k=0) or (NgL=0) then Graphic(Mt,C)

else GraphK

else OutTextXY(250,150,'Kina ne bude');

end;

begin

repeat

Tx:='0-Ex, 1-k, 2-NgL, 3-NgR, ';

case NgL of

1: Tx:=Tx+'4-TL, ';

2: Tx:=Tx+'4-QL, ';

3: Tx:=Tx+'4-TsL, ';

end;

case NgR of

1: Tx:=Tx+'5-TR, ';

2: Tx:=Tx+'5-QR, ';

3: Tx:=Tx+'5-TsR, ';

end;

PutA; Ou(Tx+'6-Tmin, 7-Tmax, 8-Gr, 9-Service');

Str(k,T10); Ts:='k='+T10;

Str(NgL,T10); Ts:=Ts+', NgL='+T10;

Str(NgR,T10); Ts:=Ts+', NgR='+T10;

Page 190: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

189

case NgL of

1: begin Str(TL:1:1,T10); Ts:=Ts+', TL='+T10 end;

2: begin Str(QL:1:1,T10); Ts:=Ts+', QL='+T10 end;

3: begin Str(TsL:1:1,T10); Ts:=Ts+', TsL='+T10 end;

end;

case NgR of

1: begin Str(TR:1:1,T10); Ts:=Ts+', TR='+T10 end;

2: begin Str(QR:1:1,T10); Ts:=Ts+', QR='+T10 end;

3: begin Str(TsR:1:1,T10); Ts:=Ts+', TsR='+T10 end;

end;

Str(Tmin:1:1,T10); Ts:=Ts+', Tmin='+T10;

Str(Tmax:1:1,T10); Ts:=Ts+', Tmax='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Oui('k',k);

'2': Oui('NgL',NgL);

'3': Oui('NgR',NgR);

'4': case NgL of

1: Our('TL',TL);

2: Our('QL',QL);

3: Our('TsL',TsL);

end;

'5': case NgR of

1: Our('TR',TR);

2: Our('QR',QR);

3: Our('TsR',TsR);

end;

'6': Our('Tmin',Tmin);

'7': Our('Tmax',Tmax);

'8': Stat;

'9': Service;

end;

until j1='0';

end;

begin

C:=15; D:=400; H:=H-50;

repeat

PutA;

Ou('Esc-ex,1-TFC,2-Geom,3-Stat,4-GrHtGt,5-DemGodo,6-

Service');

J:=ReadKey;

case J of

'1': TFC;

'2': Geom;

'3': DemStat;

'4': GrHtGt;

'5': DemGodo;

'6': Service;

end

until J=#27;

CloseGraph

end.

Page 191: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

190

Додаток 3. Програма DemStr

program DemStr;

uses Graph, Crt, Serv, GodoGt, Groms;

const

Ro:real=7800; D0:real=0.02;

Lng:real=0.3; Cst:real=456;

Lam:real=50.2; m:integer=100;

Xout:real=0.2; A0:real=500;

Tc:char='H'; {alt G} Tos:integer=1;

var q,q1,B0,B1,A,B,Hx,Tau:real;

Ks,Nout:integer; Ht:CoefL; Teta:CoefR;

procedure Step;

var s: integer;

Tet: Coefr;

begin

m:=round(Teta[-1]);

for s:=1 to m-1 do

Tet[s]:=Teta[s]+q*(Teta[s-1]-2*Teta[s]+

Teta[s+1])-B*Tau*(Teta[s]-Tos);

Tet[0]:=B0*Tet[1]+B1*Tos;

Tet[m]:=Tet[m-1]; Tet[-1]:=m;

Tet[-1]:=m; Teta:=Tet;

end;

procedure FormHtGt;

var s:integer;

begin

Gt[-1]:=L; Ht[-1]:=L; Dt:=D/L;

Gt[0]:=0; Gt[L]:=0; Gt[L+1]:=Dt;

Ht[-1]:=L; Ht[0]:=0; Ht[L+1]:=Dt;

Hx:=Lng/m; A:=Lam/(Ro*Cst); Tau:=sqr(Hx)/(6*A);

B:=4*A0/(Ro*Cst*D0); Ks:=round(Dt/Tau);

if Ks=0 then Ks:=1;

Tau:= Dt/Ks; q:=A*Tau/sqr(Hx);

q1:=1-2*q;

B0:=Lam/(Lam+Hx*A0); B1:=1-B0;

Teta[-1]:=m;

for s:=0 to m do Teta[s]:=0;

Nout:=round(Xout/Hx); Tos:=1;

for s:=1 to L do

begin

for z:=1 to Ks do Step;

Ht[s]:=Teta[Nout];

end;

for s:=0 to L-1 do Gt[s]:=(Ht[s+1]-Ht[s])/Dt;

end;

procedure GrHtGt;

var j1:char; y:real; s:integer;

Page 192: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

191

begin

repeat

PutA;

Ou('0-ex,1-m,2-Xout,3-D,4-Tc,5-Sc,6-C,7-Gr');

Str(m,T10); Ts:='m='+T10;

Str(Xout:1:3,T10); Ts:=Ts+', Xout='+T10;

Str(D:1:1,T10); Ts:=Ts+', D='+T10;

Ts:=Ts+', Tc='+Tc;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Oui('m',m);

'2': Our('Xout',Xout);

'3': Our('D',D);

'4': if Tc='H' then Tc:='G' else Tc:='H';

'5': begin

FormHtGt; Xmin:=0; Xmax:=D;

Ymin:=0; Ymax:=0;

for s:=0 to L do

begin

if TC='H' then Y:=Ht[s]

else Y:=Gt[s];

if Y<Ymin then Ymin:=Y;

if Y>Ymax then Ymax:=Y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

'6': Oui('C',C);

'7': begin

FormHtGt;

if Tc='G' then Graphic(Gt,C)

else Graphic(Ht,C);

end;

end

until J1='0'

end;

procedure Param;

var j1:char;

begin

repeat

PutA; Ou('0-ex, 1-Lng, 2-D0, 3-A0, 4-Lam, 5-Ro, 6-Cst');

Str(Lng:1:3,T10); Ts:='Lng='+T10;

Str(D0:1:3,T10); Ts:=Ts+', D0='+T10;

Str(A0:1:1,T10); Ts:=Ts+', A0='+T10;

Str(Lam:1:1,T10); Ts:=Ts+', Lam='+T10;

Str(Ro:1:1,T10); Ts:=Ts+', Ro='+T10;

Str(Cst:1:1,T10); Ts:=Ts+', Cst='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Our('Lng',Lng);

Page 193: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

192

'2': Our('D0',D0);

'3': Our('A0',A0);

'4': Our('Lam',Lam);

'5': Our('Ro',Ro);

'6': Our('Cst',Cst);

end;

until J1='0';

end;

begin

C:=15;

repeat

PutA;

Ou('Esc-ex,1-Param,2-GrHtGt,3-DemGodo,4-Service');

J:=ReadKey;

case J of

'1': Param;

'2': GrHtGt;

'3': DemGodo;

'4': Service;

end

until J=#27;

CloseGraph

end.

Додаток 4. Програма DemPrе

program DemPrе;

uses Graph,Crt,Serv,GodoGt,Groms;

const

Q0:real=20; C0:real=4193;

G0:real=200; C1:real=1424;

Ro0:real=1000; Ro1:real=1700;

F0:real=2; m:integer=20;

Del:real=0.15; Lam:real=0.75;

Ninp:integer=0; Nout:integer=0;

A0:real=3000; A1:real=50;

Ngl:integer=3; Ngr:integer=3;

T0inp:real=80; Tos:real=20;

Tmin:real=0; Tmax:real=100;

Xout:real=0.1; Tc:char='H';

var T0,T,Dt,q,q1,B0,B1,B2,B3,B4,A,Hx,Tau:real;

i,Teta0,F1,F2,F3,F4,F5,F6,F7,F8,pr:real;

Nx:integer; Ht,My:CoefL; Teta1:CoefR;

procedure Init;

var Zn:real; s:integer; U:Boolean;

begin

Zn:=q0*c0+A0*f0; T0:=g0*C0/Zn; B0:=Q0*C0/Zn;

B1:=1-B0; Hx:=Del/m; Nx:=round(Xout/Hx); A:=Lam/(Ro1*C1);

Ks:=1; dt:=D/L;

repeat

Page 194: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

193

Tau:=Dt/Ks; F1:=Tau/T0; F2:=1-F1; F3:=B0*F1; F4:=B1*F1;

Q:=A*Tau/sqr(Hx); Q1:=1-2*Q;

F5:=Lam/(Lam+A0*Hx); F6:=1-F5; F7:=Lam/(Lam+A1*Hx);

F8:=1-F7;

U:=(F1<=0.1) and (Q<=1/6);

if not(U) then inc(Ks)

until U;

for s:=0 to m do Teta1[s]:=0;

T:=0; Teta0:=0; T0inp:=0; Tos:=0;

case Ninp of

0: T0inp:=1;

2: Tos:=1

end

end;

procedure Step;

var s:integer; Tet1:Coefr; Tet0:real;

begin

Tet0:=F2*Teta0+F3*T0inp+F4*Teta1[0];

for s:=1 to m-1 do

Tet1[s]:=Q1*Teta1[s]+Q*(Teta1[s-1]+Teta1[S+1]);

Tet1[0]:=F5*Tet1[1]+F6*Teta0;Tet1[M]:=F7*Tet1[M-1]+F8*Tos;

Tet1[-1]:=m; Teta1:=Tet1;Teta0:=Tet0

end;

procedure FormMas;

var Yp:real;

begin

Init; Gt[-1]:=L; Ht[-1]:=L; dt:=D/L;

Gt[0]:=0; Gt[L+1]:=dt; Ht[0]:=0; Ht[L+1]:=dt;

Xu:=(GetMaxX-L) div 2; Y:=0;

PutA; Rectangle(Xu,0,Xu+L,5);

for z:=1 to L do

begin

Line(Xu+z,1,Xu+z,4); Yp:=Y;

for s:=1 to Ks do Step;

case Nout of

0: y:=Teta0;

1: y:=Teta1[Nx]

end;

Ht[z]:=Y; Gt[z]:=(y-yp)/dt;

end;

end;

procedure TFC;

begin

repeat

PutA; Ou('0-Esc,1-Ro0,2-C0,3-Ro1,4-C1,5-Lam,6-A0,7-A1');

Str(Ro0:1:1,T10); Ts:='Ro0='+T10;

Str(C0:1:1,T10); Ts:=Ts+', C0='+T10;

Str(Ro1:1:1,T10); Ts:=Ts+', Ro1='+T10;

Str(C1:1:1,T10); Ts:=Ts+', C1='+T10;

Str(Lam:1:3,T10); Ts:=Ts+', Lam='+T10;

Page 195: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

194

Str(A0:1:1,T10); Ts:=Ts+', A0='+T10;

Str(A1:1:1,T10); Ts:=Ts+', A1='+T10;

Info; J1:=ReadKey;

case J1 of

'1':Our('Ro0',Ro0);

'2':Our('C0',C0);

'3':Our('Ro1',Ro1);

'4':Our('C1',C1);

'5':Our('Lam',Lam);

'6':Our('A0',A0);

'7':Our('A1',A1);

end

until J1='0';

end;

procedure Geom;

begin

repeat

PutA; Ou('0-Esc,1-Q0,2-G0,3-F0,4-Del');

Str(Q0:1:2,T10); Ts:='Q0='+T10;

Str(G0:1:2,T10); Ts:=Ts+', G0='+T10;

Str(F0:1:2,T10); Ts:=Ts+', F0='+T10;

Str(Del:1:3,T10); Ts:=Ts+', Del='+T10;

Info;J1:=ReadKey;

case J1 of

'1':Our('Q0',Q0);

'2':Our('G0',G0);

'3':Our('F0',F0);

'4':Our('Del',Del);

end

until J1='0';

end;

procedure Stat;

var j1:char; s:integer; f,e0,e1:real;

begin

repeat

PutA;

Ou('0-Ex,1-T0inp,2-Tos,3-m,4-Tmin,5-Tmax,6-Sc,7-Nout,

8-C,9-Gr');

str(T0inp:1:1,T10); Ts:='T0inp='+T10;

str(Tos:1:1,T10); Ts:=Ts+', Tos='+T10;

str(m,T10); Ts:=Ts+', m='+T10;

str(Tmin:1:1,T10); Ts:=Ts+', Tmin='+T10;

str(Tmax:1:1,T10); Ts:=Ts+', Tmax='+T10;

str(Nout,T10); Ts:=Ts+', Nout='+T10+'(0..2)';

str(C,T10); Ts:=Ts+', C='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Our('T0inp',T0inp);

'2': Our('Tos',Tos);

'3': Oui('m',m);

'4': Our('Tmin',Tmin);

Page 196: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

195

'5': Our('Tmax',Tmax);

'6': begin

Xmin:=0; Xmax:=Del; Ymin:=Tmin; Ymax:=Tmax;

X0Y0(false); ClearDevice; SystCoor;

end;

'7': Oui('Nout',Nout);

'8': Oui('C',C);

'9': begin

b0:=Q0*c0/(Q0*c0+A0*F0); b1:=1-b0;

f:=Lam*(1/(A0*b0)+Del/Lam+1/A1);

e0:=((Lam/A1+Del)*T0inp+Lam/(A0*b0)*Tos)/f;

e1:=(Tos-T0inp)/f; Hx:=Del/m;

for s:=0 to m do Teta1[s]:=e0+e1*s*Hx;

Teta0:=b0*T0inp+b1*e0;

SetColor(C);

case Nout of

0: begin

SetColor(C);

OutTextXY(x0+L+5,y0-round(Teta0/dy)-4,'0');

Line(x0,y0-round(Teta0/dy),

x0+L,y0-round(Teta0/dy));

Setcolor(15);

end;

1: begin

SetColor(C);

OutTextXY(x0+L+5,y0-round(Teta1[m]/dy)-4,'1');

Moveto(x0,y0-round(Teta1[0]/dy));

for s:=1 to m do

Lineto(x0+round(s*L/m),

y0-round(Teta1[s]/dy));

Setcolor(15);

end;

2: begin

SetColor(C);

OutTextXY(x0+L+5,y0-round(Tos/dy)-4,'2');

Line(x0,y0-round(Tos/dy),

x0+L,y0-round(Tos/dy));

Setcolor(15);

end;

end;

SetColor(15);

end;

end;

until j1='0';

end;

procedure GrHtGt;

var j1:char;

begin

repeat

PutA;

Ou('0-Ex,1-m,2-Ninp,3-Nout,4-Xout,5-D,6-Tc,7-Sc,8-C,9-Gr');

str(m,T10); Ts:='m='+T10;

Page 197: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

196

str(Ninp,T10); Ts:=Ts+', Ninp='+T10;

str(Nout,T10); Ts:=Ts+', Nout='+T10;

str(Xout:1:1,T10); Ts:=Ts+', Xout='+T10;

str(D:1:1,T10); Ts:=Ts+', D='+T10;

Init;

str(Ks,T10); Ts:=Ts+'(Ks='+T10+')';

Ts:=Ts+', Tc='+Tc;

str(C,T10); Ts:=Ts+', C='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Oui('m',m);

'2': repeat

Oui('Ninp',Ninp)

until Ninp in [0,2];

'3': repeat

Oui('Nout',Nout)

until Nout in [0,1];

'4': repeat

Our('Xout',Xout)

until Xout <= Del;

'5': Our('D',D);

'6': if Tc='H' then Tc:='G' else Tc:='H';

'7': begin

Xmin:=0; Xmax:=D; Ymin:=0; Ymax:=0;

FormMas;

for s:=0 to L do

begin

if Tc='H' then Y:=Ht[s]

else Y:=Gt[s];

if Y<Ymin then Ymin:=Y;

if Y>Ymax then Ymax:=Y;

end;

X0Y0(false); ClearDevice; SystCoor;

end;

'8': Oui('C',C);

'9': begin

FormMas;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

end;

until j1='0';

end;

begin

InGraph;

repeat

PutA;

Ou('Esc-ex,1-TFC,2-Geom,3-Stat,4-GrHtGt,5-DemGodo,6-Service');

Str(Ninp,T10); Ts:='Ninp='+T10;

Str(Nout,T10); Ts:=Ts+', Nout='+T10;

Str(Xout:1:3,T10); Ts:=Ts+', Xout='+T10;

Str(Del:1:3,T10); Ts:=Ts+', Del='+T10;

Page 198: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

197

Info; J:=ReadKey;

case J of

'1': TFC;

'2': Geom;

'3': Stat;

'4': GrHtGt;

'5': DemGodo;

'6': Service;

end

until J=#27;

CloseGraph

end.

Додаток 5. Програма DemTr

program DemTr;

uses Crt, Graph, Serv, GodoGt, Groms;

const

Lng:real=200;

D0:real=0.1; D1:real=0.12;

c0:real=4187; c1:real=440;

Ro0:real=900; Ro1:real=7800;

w0:real=2; tau:real=0.05;

m:integer=20; Ks:integer=1;

Ninp:integer=0; Nout:integer=0;

A0:real=500; A1:real=100;

Tos:integer=0; Teta0inp:integer=0;

Xout:real=5; Tc:char='H';

var e0,e1,e2,e3,e4,e5,e6,e7,

t0,t1,t2,t3,b0,b1,Hx,pr,T,dt:real;

Teta1,Teta0:CoefR; Ht:CoefL;

Nx:integer; Ti:string[80];

procedure Init;

var s0,s1,p0,p1,Zn:real; U:boolean;

begin

s0:=Pi*sqr(d0)/4; p0:=Pi*d0;

s1:=Pi*sqr(d1)/4-s0; p1:=Pi*d1;

T0:=s0*Ro0*c0/(A0*p0); Zn:=A0*p0+A1*p1;

T1:=s1*Ro1*c1/Zn; b0:=A0*p0/Zn;

b1:=1-b0;

Hx:=Lng/m; Nx:=round(Xout/Hx);

Ks:=1; dt:=D/L;

repeat

tau:=dt/Ks; e1:=tau/t0; e2:=tau*w0/Hx;

e3:=1-e1-e2; e4:=tau/t1; e5:=1-e4;

e6:=b0*e4; e7:=b1*e4;

U:=(e1<0.1) and (e2<0.1) and (e4<0.1);

if not(U) then inc(ks)

until U;

for s:=0 to m do

begin

Page 199: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

198

Teta0[s]:=0; Teta1[s]:=0;

end;

Teta0[-1]:=m; teta1[-1]:=m;

end;

procedure Step;

var s:integer; Tet0,Tet1:CoefR;

begin

for s:=0 to m do

begin

Tet0[s]:=e3*Teta0[s]+e2*Teta0[s-1]+e1*Teta1[s];

Tet1[s]:=e5*Teta1[s]+e6*Teta0[s]+e7*Tos;

end;

Tet0[0]:=Teta0inp; Tet0[-1]:=m;

Tet1[-1]:=m; Teta0:=Tet0; Teta1:=Tet1;

end;

procedure FormHtGt;

var z,s:integer; p,y,yg,yp,k:real; c:string;

begin

Init; Tos:=0; Teta0inp:=0;

case Ninp of

0: Teta0inp:=1;

2: Tos:=1;

end;

dt:=D/L;

Gt[0]:=0; Gt[L]:=0; Ht[0]:=0;

Gt[-1]:=L; Ht[-1]:=L; Gt[L+1]:=dt; Ht[L+1]:=dt;

Nx:=round(Xout/Hx);

for z:=1 to L do

begin

for s:=1 to Ks do Step;

case Nout of

0: y:=Teta0[Nx];

1: y:=Teta1[Nx];

end;

Ht[z]:=y;

end;

for z:=0 to L-1 do Gt[z]:=(Ht[z+1]-Ht[z])/dt;

end;

procedure GrHtGt;

var j1:char; y:real; s:integer;

begin

repeat

PutA;

Ou('0-ex,1-m,2-Ninp,3-Nout,4-Xout,5-D,6-Tc,7-Sc,8-C,9-Gr');

str(m,T10); Ts:='m='+T10;

str(Ninp,T10); Ts:=Ts+', Ninp='+T10;

str(Nout,T10); Ts:=Ts+', Nout='+T10;

str(Xout:1:2,T10); Ts:=Ts+', Xout='+T10;

str(D:1:1,T10); Ts:=Ts+', D='+T10;

Ts:=Ts+', Tc='+Tc;

Page 200: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

199

str(C,T10); Ts:=Ts+', C='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Oui('m',m);

'2': if Ninp=0 then Ninp:=2 else Ninp:=0;

'3': if Nout=0 then Nout:=1 else Nout:=0;

'4': Our('Xout',Xout);

'5': Our('D',D);

'6': if Tc='H' then Tc:='G' else Tc:='H';

'7': begin

FormHtGt;

Xmin:=0; Xmax:=D; Ymin:=0; Ymax:=0;

for s:=0 to L do

begin

if Tc='H' then Y:=Ht[s]

else Y:=Gt[s];

if Y<Ymin then Ymin:=Y;

if Y>Ymax then Ymax:=Y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

'8': Oui('C',C);

'9': begin

FormHtGt;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

end;

until J1='0';

end;

procedure Geom;

var j1:char;

begin

repeat

PutA;

Ou('0-ex,1-Lng,2-D0,3-D1,4-W0');

str(Lng:1:1,T10); Ts:='Lng='+T10;

str(D0:1:3,T10); Ts:=Ts+', D0='+T10;

str(D1:1:3,T10); Ts:=Ts+', D1='+T10;

str(W0:1:2,T10); Ts:=Ts+', W0='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Our('Lng',Lng);

'2': Our('D0',D0);

'3': Our('D1',D1);

'4': Our('W0',W0);

end;

until j1='0';

end;

Page 201: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

200

procedure TFC;

var j1:char;

begin

repeat

PutA;

Ou('0-ex,1-Ro0,2-Ro1,3-C0,4-C1,5-A0,6-A1');

str(Ro0:1:1,T10); Ts:='Ro0='+T10;

str(Ro1:1:1,T10); Ts:=Ts+', Ro1='+T10;

str(C0:1:1,T10); Ts:=Ts+', C0='+T10;

str(C1:1:1,T10); Ts:=Ts+', C1='+T10;

str(A0:1:1,T10); Ts:=Ts+', A0='+T10;

str(A1:1:1,T10); Ts:=Ts+', A1='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Our('Ro0',Ro0);

'2': Our('Ro1',Ro1);

'3': Our('C0',C0);

'4': Our('C1',C1);

'5': Our('A0',A0);

'6': Our('A1',A1);

end;

until j1='0';

end;

procedure StCar;

const

Tos:real=20; T0inp:real=80;

Tmin:real=0; Tmax:real=100;

Nout:integer=0;

var

S0,S1,P0,P1,T0,b0,b1,f0:real;

s:integer; j1:char; Teta0,Teta1:CoefL;

begin

repeat

PutA;

Ou('0-Ex,1-Tos,2-T0inp,3-Tmin,4-Tmax,5-Sc,6-Nout,7-C,

8-Gr,9-Service');

Str(Tos:1:2,T10); Ts:='Tos='+T10;

Str(T0inp:1:2,T10); Ts:=Ts+', T0inp='+T10;

Str(Tmin:1:2,T10); Ts:=Ts+', Tmin='+T10;

Str(Tmax:1:2,T10); Ts:=Ts+', Tmax='+T10;

Str(Nout,T10); Ts:=Ts+', Nout='+T10+'(0..2)';

Str(C,T10); Ts:=Ts+', C='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Our('Tos',Tos);

'2': Our('T0inp',T0inp);

'3': Our('Tmin',Tmin);

'4': Our('Tmax',Tmax);

'5': begin

Xmin:=0; Xmax:=Lng; Ymin:=Tmin; Ymax:=Tmax;

X0Y0(false); ClearDevice; SystCoor;

end;

Page 202: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

201

'6': Oui('Nout',Nout);

'7': Oui('C',C);

'8': begin

S0:=pi*sqr(d0)/4; P0:=pi*d0;

S1:=pi*sqr(d1)/4-S0; P1:=pi*d1;

b0:=A0*P0/(A0*P0+A1*P1); b1:=1-b0;

T0:=S0*Ro0*C0/(A0*P0);

f0:=T0*w0/b1; Teta0[-1]:=L; Teta1[-1]:=L;

for s:=0 to L do

begin

Teta0[s]:=Tos+(T0inp-Tos)*exp(-s*dx/f0);

Teta1[s]:=Tos+b0*(T0inp-Tos)*exp(-s*dx/f0);

end;

case Nout of

0: begin

Graphic(Teta0,C); Setcolor(C);

OutTextXY(x0+L+5,

y0-round(Teta0[L]/dy)-5,'0');

Setcolor(15);

end;

1: begin

Graphic(Teta1,C); Setcolor(C);

OutTextXY(x0+L+5,

y0-round(Teta1[L]/dy)-5,'1');

Setcolor(15);

end;

2: begin

Setcolor(C);

Line(x0,y0-round(Tos/dy),

x0+L,y0-round(Tos/dy));

OutTextXY(x0+L+5,y0-round(Tos/dy)-5,'2');

SetColor(15);

end;

end;

end;

'9': Service;

end;

until j1='0';

end;

begin

C:=15;

repeat

PutA;

Ou('Esc-ex,1-Geom,2-TFC,3-GrHtGt,4-DemGodo,5-Stat,6-Service');

J:=ReadKey;

case J of

'1': Geom;

'2': TFC;

'3': GrHtGt;

'4': DemGodo;

'5': StCar;

'6': Service;

Page 203: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

202

end

until J=#27;

CloseGraph;

end.

Додаток 6. Програма DemZt

Program DemZt;

uses Crt, Graph, Serv, GodoGt, Groms;

const

D0:real=0.016; D1:real=0.03;

C0:real=4187; Ro0:real=900;

C1:real=440; Ro1:real=7800;

C2:real=4187; Ro2:real=900;

C3:real=440; Ro3:real=7800;

w0:real=2; A0:real=700;

Q2:real=10; A1:real=500;

G2:real=100; A2:real=500;

G3:real=15; A3:real=100;

F:real=0.1; Tc:char='H';

F2:real=2; F3:real=2.2;

N:integer=10; m:integer=50;

T0inp:real=40; dT0inp:real=0;

T2inp:real=60; dT2inp:real=0;

Tos:real=20; dTos:real=0;

Tmin:real=0; Tmax:real=100;

D:real=40; Nc:integer=10;

Lng:real=10; Xout:real=10; {Xout<=Lng, Nout=0}

Ninp:integer=0; {0,2,4}

Nout:integer=0; {0..3}

var Dt,t,Tau,Hx,Af,P0,P1,S0,S1,F1,T0,T1,T2,T3,

e0,e1,e2,e3,e4,b0,b1,b2,b3,b4,b5,b6,b7,b8,

Teta2,Teta3,Tet2,Tet3:real;

Teta0,Teta1:CoefR; Ht,Tet0,Tet1:Coefl; Nx,ks:integer;

procedure Geom;

var J1:char;

begin

repeat

PutA;Ou('0-Ex,1-Lng,2-D0,3-D1,4-N,5-G2,6-G3,7-F2,8-F3');

Str(Lng:1:1,T10); Ts:='Lng='+T10;

Str(D0:1:3,T10); Ts:=Ts+', D0='+T10;

Str(D1:1:3,T10); Ts:=Ts+', D1='+T10;

Str(N,T10); Ts:=Ts+', N='+T10;

Str(G2:1:1,T10); Ts:=Ts+', G2='+T10;

Str(G3:1:1,T10); Ts:=Ts+', G3='+T10;

Str(F2:1:1,T10); Ts:=Ts+', F2='+T10;

Str(F3:1:1,T10); Ts:=Ts+', F3='+T10;

Info;

J1:=readkey;

case J1 of

'1': Our('Lng',Lng);

Page 204: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

203

'2': Our('D0',D0);

'3': Our('D1',D1);

'4': Oui('N',N);

'5': Our('G2',G2);

'6': Our('G3',G3);

'7': Our('F2',F2);

'8': Our('F3',F3);

end;

until J1='0';

end;

procedure TfPar;

var j1,j2:char;

begin

repeat

PutA;Ou('0-Ex,1-C0,2-C1,3-C2,4-C3,5-Ro0,6-Ro1,7-As');

Str(C0:1:1,T10); Ts:='C0='+T10;

Str(C1:1:1,T10); Ts:=Ts+',C1='+T10;

Str(C2:1:1,T10); Ts:=Ts+',C2='+T10;

Str(C3:1:1,T10); Ts:=Ts+',C3='+T10;

Str(Ro0:1:1,T10); Ts:=Ts+',Ro0='+T10;

Str(Ro1:1:1,T10); Ts:=Ts+',Ro1='+T10;

Info;

J1:=readkey;

case J1 of

'1': Our('C0',C0);

'2': Our('C1',C1);

'3': Our('C2',C2);

'4': Our('C3',C3);

'5': Our('Ro0',Ro0);

'6': Our('Ro1',Ro1);

'7': repeat

PutA; Ou('0-Ex, 1-A0, 2-A1, 3-A2, 4-A3');

str(A0:1:1,T10); Ts:='A0='+T10;

str(A1:1:1,T10); Ts:=Ts+', A1='+T10;

str(A2:1:1,T10); Ts:=Ts+', A2='+T10;

str(A3:1:1,T10); Ts:=Ts+', A3='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('A0',A0);

'2': Our('A1',A1);

'3': Our('A2',A2);

'4': Our('A3',A3);

end;

until j2='0';

end;

until j1='0';

end;

procedure Inp;

var J1:char;

begin

repeat

Page 205: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

204

PutA;Ou('0-Ex,1-w0,2-T0inp,3-Q2,4-T2inp,5-Tos,6-m,7-f');

Str(w0:1:2,T10); Ts:='w0='+T10;

Str(T0inp:1:1,T10); Ts:=Ts+', T0inp='+T10;

Str(Q2:1:2,T10); Ts:=Ts+', Q2='+T10;

Str(T2inp:1:1,T10); Ts:=Ts+', T2inp='+T10;

Str(Tos:1:1,T10); Ts:=Ts+', Tos='+T10;

Str(m,T10); Ts:=Ts+', m='+T10;

Str(f:1:2,T10); Ts:=Ts+', f='+T10;

Info;

J1:=readkey;

case J1 of

'1': Our('w0',w0);

'2': Our('T0inp',T0inp);

'3': Our('Q2',Q2);

'4': Our('T2inp',T2inp);

'5': Our('Tos',Tos);

'6': Oui('m',m);

'7': Our('f',f);

end;

until J1='0';

end;

procedure CoefS;

var u:boolean; Zn:real;

begin

P0:=Pi*D0; S0:=Pi*sqr(D0)/4;

P1:=Pi*D1; S1:=Pi*sqr(D1)/4-S0;

T0:=S0*Ro0*c0/(A0*P0); Zn:=A0*P0+A1*P1;

T1:=S1*Ro1*c1/Zn; b0:=A0*P0/Zn; b1:=1-b0;

f1:=P1*Lng*N; Zn:=Q2*c2+A1*f1+A2*f2;

T2:=G2*c2/Zn;

b2:=A1*f1/Zn; b3:=A2*f2/Zn;

b4:=1-b2-b3; Zn:=A2*f2+A3*f3;

T3:=G3*c3/Zn; b5:=A2*f2/Zn; b6:=1-b5;

dt:=D/L; Hx:=Lng/m; ks:=1;

repeat

Tau:=dt/Ks;

e0:=Tau/T0; e1:=Tau/T1; e2:=Tau/T2;

e3:=Tau/T3; e4:=T0*w0/Hx;

u:=(e0<f)and(e1<f)and(e2<f)and(e3<f)and(e4*e2<1);

if not (u) then inc(ks);

until u;

end;

procedure Stat;

var s:integer; r0,r1,r2,r3,g,gL,dx:real;

begin

CoefS;

g:=b1/(T0*w0); gL:=g*Lng; dx:=Lng/L;

r0:=1-b2+b0*b2/gL*(1-exp(-gL))-b3*b5;

r1:=b0*b2/(gL*r0)*(1-exp(-gL));

r2:=b4/r0; r3:=b3*b6/r0;

Tet2:=r1*T0inp+r2*T2inp+r3*Tos;

Page 206: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

205

Tet3:=b5*Tet2+b6*Tos;

Tet0[-1]:=L; Tet1[-1]:=L;

for s:=0 to L do

begin

Tet0[s]:=Tet2+(T0inp-Tet2)*exp(-g*s*dx);

Tet1[s]:=b0*Tet0[s]+b1*Tet2;

end;

end;

procedure DemStat;

var j1:char;

begin

repeat

PutA;

Ou('0-Ex,1-T0i,2-T2i,3-Tos,4-Tmin,5-Tmax,6-Sc,7-Nout,8-C,9-

Gr');

str(T0inp:1:1,T10); Ts:='T0i='+T10;

str(T2inp:1:1,T10); Ts:=Ts+', T2i='+T10;

str(Tos:1:1,T10); Ts:=Ts+', Tos='+T10;

str(Tmin:1:1,T10); Ts:=Ts+', Tmin='+T10;

str(Tmax:1:1,T10); Ts:=Ts+', Tmax='+T10;

str(Nout,T10); Ts:=Ts+', Nout='+T10+'(0..4)';

str(C,T10); Ts:=Ts+', C='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Our('T0i',T0inp);

'2': Our('T2i',T2inp);

'3': Our('Tos',Tos);

'4': Our('Tmin',Tmin);

'5': Our('Tmax',Tmax);

'6': begin

Xmin:=0; Xmax:=Lng; Ymin:=Tmin; Ymax:=Tmax;

X0Y0(false); ClearDevice; SystCoor; Stat;

end;

'7': Oui('Nout',Nout);

'8': Oui('C',C);

'9': case Nout of

0: begin

Graphic(Tet0,C); Setcolor(C);

OutTextXY(x0+L+5,

y0-round(Tet0[L]/dy)-4,'0');

Setcolor(15);

end;

1: begin

Graphic(Tet1,C); Setcolor(C);

OutTextXY(x0+L+5,

y0-round(Tet1[L]/dy)-4,'1');

Setcolor(15);

end;

2: begin

Setcolor(C);

Line(x0,y0-round(Tet2/dy),

x0+L,y0-round(Tet2/dy));

Page 207: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

206

OutTextXY(x0+L+5,y0-round(Tet2/dy)-4,'2');

Setcolor(15);

end;

3: begin

Setcolor(C);

Line(x0,y0-round(Tet3/dy),

x0+L,y0-round(Tet3/dy));

OutTextXY(x0+L+5,y0-round(Tet3/dy)-4,'3');

Setcolor(15);

end;

4: begin

Setcolor(C);

Line(x0,y0-round(Tos/dy),

x0+L,y0-round(Tos/dy));

OutTextXY(x0+L+5,y0-round(Tos/dy)-4,'4');

Setcolor(15);

end;

end;

end;

until j1='0';

end;

procedure Step;

var s:integer; Sum,Tet2,Tet3:real;

Tet0,Tet1:coefr;

begin

CoefS;

Tet0[-1]:=m; Tet1[-1]:=m;

Tet0[0]:=dT0inp;

for s:=0 to m do

begin

if s>0 then

Tet0[s]:=Teta0[s]+e0*(Teta1[s]-e4*(Teta0[s]-

Teta0[s-1])-Teta0[s]);

Tet1[s]:=Teta1[s]+e1*(b0*Teta0[s]+b1*Teta2-Teta1[s]);

end;

Sum:=(Teta1[0]+Teta1[m])/2;

for s:=1 to m-1 do Sum:=Sum+Teta1[s];

Tet2:=Teta2+e2*(b2*Sum/m+b3*Teta3+b4*dT2inp-Teta2);

Tet3:=Teta3+e3*(b5*Teta2+b6*dTos-Teta3);

Teta0:=Tet0; Teta1:=Tet1; Teta2:=Tet2; Teta3:=Tet3;

end;

procedure FormHtGt;

var s,z:integer;

begin

CoefS;

Teta0[-1]:=m; Teta1[-1]:=m;

for s:=0 to m do

begin

Teta0[s]:=0; Teta1[s]:=0;

end;

Teta2:=0; Teta3:=0;

Page 208: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

207

dT0inp:=0; dT2inp:=0; dTos:=0;

case Ninp of

0: dT0inp:=1;

2: dT2inp:=1;

4: dTos:=1;

end;

Ht[-1]:=L; Ht[0]:=0; dt:=D/L; Ht[L+1]:=dt; Hx:=Lng/m;

Gt[-1]:=L; Gt[0]:=0; Gt[L+1]:=dt; Nx:=round(Xout/Hx);

for z:=1 to L do

begin

for s:=1 to ks do Step;

case Nout of

0: Ht[z]:=Teta0[Nx];

1: Ht[z]:=Teta1[Nx];

2: Ht[z]:=Teta2;

3: Ht[z]:=Teta3;

end;

Gt[z]:=(Ht[z]-Ht[z-1])/dt;

end;

end;

procedure GrHtGt;

var j1:char; y:real; s:integer;

begin

repeat

CoefS;

PutA;

Ou('0-Ex,1-m,2-Ninp,3-Nout,4-Xout,5-D,6-Tc,7-Sc,8-C,9-Gr');

Str(m,T10); Ts:='m='+T10;

Str(Ninp,T10); Ts:=Ts+', Ninp='+T10;

Str(Nout,T10); Ts:=Ts+', Nout='+T10;

Str(Xout:1:2,T10); Ts:=Ts+', Xout='+T10;

Str(D:1:1,T10); Ts:=Ts+', D='+T10;

Str(Ks,T10); Ts:=Ts+', (Ks='+T10+')';

Ts:=Ts+', Tc='+Tc;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; j1:=readkey;

case J1 of

'1': Oui('m',m);

'2': Oui('Ninp',Ninp);

'3': Oui('Nout',Nout);

'4': Our('Xout',Xout);

'5': Our('D',D);

'6': if Tc='H' then Tc:='G' else Tc:='H';

'7': begin

Xmin:=0; Xmax:=D; Ymin:=0; Ymax:=0;

FormHtGt;

for s:=0 to L do

begin

if Tc='H' then y:=Ht[s]

else y:=Gt[s];

if y<Ymin then Ymin:=y;

if y>Ymax then Ymax:=y;

Page 209: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

208

end;

X0Y0(false); ClearDevice; SystCoor;

end;

'8': Oui('C',C);

'9': begin

FormHtGt;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

end;

until j1='0';

end;

begin

C:=15; Hx:=Lng/m;

repeat

PutA;

Ou('Esc-exit,1-Geom,2-TfPar,3-Stat,4-GrHtGt,5-DemGodo,

6-Service');

J:=readkey;

case J of

'1': Geom;

'2': TfPar;

'3': DemStat;

'4': GrHtGt;

'5': DemGodo;

'6': Service;

end;

until J=#27;

CloseGraph

end.

Додаток 7. Програма DemTrTr program DemTrTr;

uses Crt, Graph, Serv, GodoGt, Groms;

const

D0:real=0.03; D1:real=0.034;

D2:real=0.044; D3:real=0.05;

c0:real=4187; c1:real=440;

c2:real=3500; c3:real=440;

Ro0:real=1000; Ro1:real=7800;

Ro2:real=900; Ro3:real=7800;

A0:real=5000; A1:real=3000;

A2:real=3000; A3:real=100;

w0:real=2; w2:real=1.5;

T0inp:real=80; dT0inp:real=0;

T2inp:real=50; dT2inp:real=0;

Tos:real=20; dTos:real=0;

Tmin:real=0; Tmax:real=100;

m:integer=100; Nr:integer=1;

Xout:real=5; Lng:real=10;

Page 210: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

209

Ninp:integer=2; Nout:integer=2;

Tc:char='H';

var f0,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,

T0,T1,T2,T3,b0,b1,b2,b3,b4,b5,Hx,tau:real;

Teta0,Teta1,Teta2,Teta3:CoefR;

Tet0,Tet1,Tet2,Tet3,Ht:CoefL;

Nx:integer;

procedure Step;

var s: integer;

Tet0, Tet1, Tet2, Tet3: CoefR;

begin

for s:=0 to m do

begin

Tet0[s]:=f0*Teta1[s]+f2*Teta0[s]+f1*Teta0[s-1];

Tet1[s]:=f4*Teta1[s]+f5*Teta0[s]+f6*Teta2[s];

if Nr=1 then Tet2[s]:=f9*Teta2[s]+f8*Teta2[s-1]+

f10*Teta1[s]+f11*Teta3[s]

else Tet2[s]:=f9*Teta2[s]+f8*Teta2[s+1]+

f10*Teta1[s]+f11*Teta3[s];

Tet3[s]:=f13*Teta3[s]+f14*Teta2[s]+f15*dTos;

end;

Tet0[0]:=dT0inp;

if Nr =1 then Tet2[0]:=dT2inp

else Tet2[m]:=dT2inp;

Tet0[-1]:=m; Tet1[-1]:=m; Tet2[-1]:=m; Tet3[-1]:=m;

Teta0:=Tet0; Teta1:=Tet1; Teta2:=Tet2; Teta3:=Tet3

end;

procedure Stat;

var s:integer;

x,b,zn,f0,f2,f3,f4,b6,b7,b8,

e1,e2,r1,r2,s0,p0,s1,p1,s2,p2,s3,p3:real;

begin

s0:=Pi*sqr(D0)/4; p0:=Pi*D0;

s1:=Pi*sqr(D1)/4-s0; p1:=Pi*D1;

s2:=Pi*sqr(D2)/4-s1; p2:=Pi*D2;

s3:=Pi*sqr(D3)/4-s2; p3:=Pi*D3;

T0:=s0*Ro0*c0/(A0*p0); Zn:=A0*p0+A1*p1;

T1:=s1*Ro1*c1/Zn;

b0:=A0*p0/Zn; b1:=1-b0; Zn:=A1*p1+A2*p2;

T2:=s2*Ro2*c2/Zn; b2:=A1*p1/Zn; b3:=1-b2;

Zn:=A2*p2+A3*p3; b4:=A2*p2/Zn; b5:=1-b4;

f0:=T0*w0/b1; b:=1-b1*b2-b3*b4; f2:=T2*w2/b;

b6:=b0*b2/b; b7:=b3*b5/b; b8:=b7/(1-b6);

b:=sqrt(sqr(f0+Nr*f2)-Nr*4*f0*f2*(1-b6));

if Nr=1

then

begin

r1:=(-(f0+f2)+b)/(2*f0*f2);

r2:=(-(f0+f2)-b)/(2*f0*f2);

f4:=(T2inp-T0inp)/f0;

end

Page 211: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

210

else

begin

r1:=(f0-f2-b)/(2*f0*f2);

r2:=(f0-f2+b)/(2*f0*f2);

f4:=T2inp-b8*Tos;

end;

f3:=T0inp-b8*Tos;

f5:=(1+f0*r1)*exp(r1*Lng);

f6:=(1+f0*r2)*exp(r2*Lng);

if Nr=1

then

begin

e1:=(f3*r2-f4)/(r2-r1);

e2:=(f4-f3*r1)/(r2-r1);

end

else

begin

e1:=(f3*f6-f4)/(f6-f5);

e2:=(f4-f3*f5)/(f6-f5);

end;

Tet0[-1]:=L; Tet1[-1]:=L; Tet2[-1]:=L; Tet3[-1]:=L;

Tet0[0]:=T0inp; Tet2[0]:=T2inp; dx:=Lng/L;

for s:=0 to L do

begin

x:=s*dx;

Tet0[s]:=b8*Tos+e1*exp(r1*x)+e2*exp(r2*x);

Tet1[s]:=Tet0[s]+w0*T0*(e1*r1*exp(r1*x)+e2*r2*exp(r2*x));

Tet2[s]:=(Tet1[s]-b0*Tet0[s])/b1;

Tet3[s]:=b4*Tet2[s]+b5*Tos;

end;

end;

procedure DemStat;

var j1:char;

begin

repeat

PutA;

Ou('0-Ex,1-T0i,2-T2i,3-Tos,4-Tmin,5-Tmax,6-Sc,7-Nout,8-C,

9-Gr');

str(T0inp:1:1,T10); Ts:='T0i='+T10;

str(T2inp:1:1,T10); Ts:=Ts+', T2i='+T10;

str(Tos:1:1,T10); Ts:=Ts+', Tos='+T10;

str(Tmin:1:1,T10); Ts:=Ts+', Tmin='+T10;

str(Tmax:1:1,T10); Ts:=Ts+', Tmax='+T10;

str(Nout,T10); Ts:=Ts+', Nout='+T10+'(0..4)';

str(C,T10); Ts:=Ts+', C='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Our('T0i',T0inp);

'2': Our('T2i',T2inp);

'3': Our('Tos',Tos);

'4': Our('Tmin',Tmin);

Page 212: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

211

'5': Our('Tmax',Tmax);

'6': begin

Xmin:=0; Xmax:=Lng; Ymin:=Tmin; Ymax:=Tmax;

X0Y0(false); ClearDevice; SystCoor; Stat;

end;

'7': Oui('Nout',Nout);

'8': Oui('C',C);

'9': case Nout of

0: begin

Graphic(Tet0,C); SetColor(C);

OutTextXY(X0+L+5,Y0-round(Tet0[L]/dy)-4,'0');

SetColor(15);

end;

1: begin

Graphic(Tet1,C); SetColor(C);

OutTextXY(X0+L+5,Y0-round(Tet1[L]/dy)-4,'1');

SetColor(15);

end;

2: begin

Graphic(Tet2,C); SetColor(C);

OutTextXY(X0+L+5,Y0-round(Tet2[L]/dy)-4,'2');

SetColor(15);

end;

3: begin

Graphic(Tet3,C); SetColor(C);

OutTextXY(X0+L+5,Y0-round(Tet3[L]/dy)-4,'3');

SetColor(15);

end;

4: begin

SetColor(C);

Line(x0,y0-round(Tos/dy),

x0+L,y0-round(Tos/dy));

OutTextXY(X0+L+5,Y0-round(Tos/dy)-4,'4');

SetColor(15);

end;

end;

end;

until j1='0';

end;

procedure FormHtGt;

var s: integer; U:boolean;

s0,s1,s2,s3,p0,p1,p2,p3,Zn:real;

begin

s0:=Pi*sqr(D0)/4; p0:=Pi*D0;

s1:=Pi*sqr(D1)/4-s0; p1:=Pi*D1;

s2:=Pi*sqr(D2)/4-s1; p2:=Pi*D2;

s3:=Pi*sqr(D3)/4-s2; p3:=Pi*D3;

T0:=s0*Ro0*c0/(A0*p0); Zn:=A0*p0+A1*p1;

T1:=s1*Ro1*c1/Zn;

b0:=A0*p0/Zn; b1:=1-b0; Zn:=A1*p1+A2*p2;

T2:=s2*Ro2*c2/Zn; b2:=A1*p1/Zn; b3:=1-b2; Zn:=A2*p2+A3*p3;

T3:=s3*Ro3*c3/Zn; b4:=A2*p2/Zn; b5:=1-b4;

Page 213: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

212

Hx:=Lng/m; Nx:=round(Xout/Hx);

dt:=D/L; Ks:=1;

repeat

tau:=dt/Ks; f0:=tau/T0; f1:=tau*w0/Hx;

f2:=1-f0-f1; f3:=tau/T1; f4:=1-f3;

f5:=b0*f3; f6:=b1*f3; f7:=tau/T2;

f8:=w2*tau/Hx; f9:=1-f7-f8;

f10:=b2*f7; f11:=b3*f7;

f12:=tau/T3; f13:=1-f12; f14:=b4*f12; f15:=b5*f12;

U:=(f0<0.1)and(f1<0.1)and(f3<0.1)and(f7<0.1)and

(f8<0.1)and(f12<0.1);

if not(U) then inc(Ks)

until U;

Teta0[-1]:=m; Teta1[-1]:=m; Teta2[-1]:=m; Teta3[-1]:=m;

for s:=0 to m do

begin

Teta0[s]:=0; Teta1[s]:=0;

Teta2[s]:=0; Teta3[s]:=0

end;

Ht[-1]:=L; Ht[0]:=0; Ht[L+1]:=Dt;

Gt[-1]:=L; Gt[0]:=0; Gt[L]:=0; Gt[L+1]:=Dt;

dT0inp:=0; dT2inp:=0; dTos:=0;

case Ninp of

0: dT0inp:=1;

2: dT2inp:=1;

4: dTos:=1;

end;

for z:=1 to L do

begin

for s:=1 to ks do Step;

case Nout of

0: Ht[z]:=Teta0[nx];

1: Ht[z]:=Teta1[Nx];

2: Ht[z]:=Teta2[Nx];

3: Ht[z]:=Teta3[Nx]

end;

Gt[z]:=(Ht[z]-Ht[z-1])/dt

end

end;

procedure GrHtGt;

var j1:char; y:real; s:integer;

begin

repeat

PutA;

Ou('0-ex,1-m,2-Ninp,3-Nout,4-Xout,5-D,6-Tc,7-Sc,8-C,9-Gr');

Str(m,T10); Ts:='m='+T10;

Str(Ninp,T10); Ts:=Ts+', Ninp='+T10;

Str(Nout,T10); Ts:=Ts+', Nout='+T10;

Str(Xout:1:3,T10); Ts:=Ts+', Xout='+T10;

Str(D:1:1,T10); Ts:=Ts+', D='+T10;

Ts:=Ts+', Tc='+Tc;

Str(C,T10); Ts:=Ts+', C='+T10;

Page 214: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

213

Info; j1:=ReadKey;

case j1 of

'1': Oui('m',m);

'2': Oui('Ninp',Ninp);

'3': Oui('Nout',Nout);

'4': Our('Xout',Xout);

'5': Our('D',D);

'6': if Tc='H' then Tc:='G' else Tc:='H';

'7': begin

FormHtGt;

Xmin:=0; Xmax:=D; Ymin:=0; Ymax:=0;

for s:=0 to L do

begin

case Tc of

'H': y:=Ht[s];

'G': y:=Gt[s];

end;

if y<Ymin then Ymin:=y;

if y>Ymax then Ymax:=y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

'8': Oui('C',C);

'9': begin

FormHtGt;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

end;

until j1='0';

end;

procedure Geom;

var j2:char;

begin

repeat

PutA;

Ou('0-ex,1-Lng,2-D0,3-D1,4-D2,5-D3');

Str(Lng:1:1,T10); Ts:='Lng='+T10;

Str(D0:1:3,T10); Ts:=Ts+', D0='+T10;

Str(D1:1:3,T10); Ts:=Ts+', D1='+T10;

Str(D2:1:3,T10); Ts:=Ts+', D2='+T10;

Str(D3:1:3,T10); Ts:=Ts+', D3='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('Lng',Lng);

'2': Our('D0',D0);

'3': Our('D1',D1);

'4': Our('D2',D2);

'5': Our('D3',D3);

end;

Page 215: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

214

until j2='0';

end;

procedure Ro;

var j2:char;

begin

repeat

PutA;

Ou('0-ex,1-Ro0,2-Ro1,3-Ro2,4-Ro3');

Str(Ro0:1:1,T10); Ts:='Ro0='+T10;

Str(Ro1:1:1,T10); Ts:=Ts+', Ro1='+T10;

Str(Ro2:1:1,T10); Ts:=Ts+', Ro2='+T10;

Str(Ro3:1:1,T10); Ts:=Ts+', Ro3='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('Ro0',Ro0);

'2': Our('Ro1',Ro1);

'3': Our('Ro2',Ro2);

'4': Our('Ro3',Ro3);

end;

until j2='0';

end;

procedure Cs;

var j2:char;

begin

repeat

PutA;

Ou('0-ex,1-c0,2-c1,3-c2,4-c3');

Str(c0:1:1,T10); Ts:='c0='+T10;

Str(c1:1:1,T10); Ts:=Ts+', c1='+T10;

Str(c2:1:1,T10); Ts:=Ts+', c2='+T10;

Str(c3:1:1,T10); Ts:=Ts+', c3='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('c0',c0);

'2': Our('c1',c1);

'3': Our('c2',c2);

'4': Our('c3',c3);

end;

until j2='0';

end;

procedure As;

var j2:char;

begin

repeat

PutA;

Ou('0-ex,1-w0,2-w2,3-A0,4-A1,5-A2,6-A3');

Str(w0:1:2,T10); Ts:='w0='+T10;

Str(w2:1:2,T10); Ts:=Ts+', w2='+T10;

Str(A0:1:1,T10); Ts:=Ts+', A0='+T10;

Str(A1:1:1,T10); Ts:=Ts+', A1='+T10;

Page 216: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

215

Str(A2:1:1,T10); Ts:=Ts+', A2='+T10;

Str(A3:1:1,T10); Ts:=Ts+', A3='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('w0',w0);

'2': Our('w2',w2);

'3': Our('A0',A0);

'4': Our('A1',A1);

'5': Our('A2',A2);

'6': Our('A3',A3);

end;

until j2='0';

end;

procedure Param;

var j1:char;

begin

repeat

PutA;

Ou('0-ex,1-Geom,2-Ro,3-Cs,4-As');

j1:=ReadKey;

case j1 of

'1': Geom;

'2': Ro;

'3': Cs;

'4': As;

end;

until j1='0';

end;

begin

C:=15;

repeat

PutA;

Ou('Esc-ex,1-Nr,2-Param,3-Stat,4-GrHtGt,5-DemGodo,6-Service');

Str(Nr,T10); Ts:='Nr='+T10;

Info; j:=ReadKey;

case j of

'1': if Nr=1 then Nr:=-1 else Nr:=1;

'2': Param;

'3': DemStat;

'4': GrHtGt;

'5': DemGodo;

'6': Service;

end;

until j=#27;

Closegraph;

end.

Page 217: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

216

Додаток 8. Програма DemStrn

program DemStrn;

uses Graph, Crt, Serv, GodoGt, Groms;

const

Lng:real=0.5; Tst:real=2;

Ms:real=0.05; K:real=0.5;

m:integer=100; Xout:real=0.2;

Mpz:integer=0; {alt 1,2}

Tc:char='H'; {alt G}

F:integer=0; {alt 1}

YL:integer=1; {alt 0}

YR:integer=0; {alt 1}

var q,e0,e2,Hx,Tau:real;

Nout:integer; Ht:CoefL; My,Myp:CoefR;

procedure Step;

var s: integer;

Myn: Coefr;

begin

Myn[-1]:=m; Myn[0]:=YL; Myn[m]:=Yr; Myn[m+1]:=Hx;

for s:=1 to m-1 do

Myn[s]:=2*My[s]-Myp[s]-e0*(My[s]-Myp[s])+

e2*(My[s-1]-2*My[s]+My[s+1]);

Myp:=My; My:=Myn;

end;

procedure FormHtGt;

var s,z:integer; e,Cst:real; Myn:CoefR;

begin

e:=K/Ms; Cst:=sqrt(Tst/Ms);

Hx:=Lng/m; Ks:=1; dt:=d/L;

repeat

Tau:=dt/Ks; q:=Cst*Tau/Hx;

if q>0.05 then inc(Ks);

until q<=0.05;

e0:=e*Tau; e2:=sqr(q); Myn[m+1]:=Hx;

YL:=0; Yr:=0; F:=0;

case Mpz of

0: YL:=1;

1: Yr:=1;

2: F:=1;

end;

for s:= 0 to m do

begin

My[s]:=0; Myp[s]:=0;

end;

Nout:=round(Xout/Hx);

Ht[-1]:=L; Ht[0]:=0; Ht[L+1]:=dt;

Gt[-1]:=L; Gt[L]:=0; Gt[L+1]:=dt;

for s:=1 to L do

begin

Page 218: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

217

for z:=1 to Ks do Step;

Ht[s]:=My[Nout];

end;

for s:=1 to L do Gt[s]:=(Ht[s]-Ht[s-1])/dt;

end;

procedure GrHtGt;

var j1:char; y:real; s:integer;

begin

repeat

PutA;

Ou('0-ex,1-m,2-Xout,3-Mpz,4-D,5-Tc,6-Sc,7-C,8-Gr');

Str(m,T10); Ts:='m='+T10;

Str(Xout:1:3,T10); Ts:=Ts+', Xout='+T10;

Str(Mpz,T10); Ts:=Ts+', Mpz='+T10;

Str(D:1:1,T10); Ts:=Ts+', D='+T10;

Ts:=Ts+', Tc='+Tc;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Oui('m',m);

'2': Our('Xout',Xout);

'3': Oui('Mpz [0..2]',Mpz);

'4': Our('D',D);

'5': if Tc='H' then Tc:='G' else Tc:='H';

'6': begin

FormHtGt; Xmin:=0; Xmax:=D;

Ymin:=0; Ymax:=0;

for s:=0 to L do

begin

if TC='H' then Y:=Ht[s]

else Y:=Gt[s];

if Y<Ymin then Ymin:=Y;

if Y>Ymax then Ymax:=Y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

'7': Oui('C',C);

'8': begin

FormHtGt;

if Tc='G' then Graphic(Gt,C)

else Graphic(Ht,C);

end;

end

until J1='0'

end;

procedure Param;

var j1: char;

begin

repeat

Page 219: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

218

PutA; Ou('0-ex, 1-Lng, 2-Ms, 3-Tst, 4-K');

Str(Lng:1:3,T10); Ts:='Lng='+T10;

Str(Ms:1:3,T10); Ts:=Ts+', Ms='+T10;

Str(Tst:1:3,T10); Ts:=Ts+', Tst='+T10;

Str(K:1:3,T10); Ts:=Ts+', K='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Our('Lng',Lng);

'2': Our('Ms',Ms);

'3': Our('Tst',Tst);

'4': Our('K',K);

end;

until J1='0';

end;

begin

C:=15; Kw:=1.1;

repeat

PutA;

Ou('Esc-ex,1-Param,2-GrHtGt,3-DemGodo,4-Service');

J:=ReadKey;

case J of

'1': Param;

'2': GrHtGt;

'3': DemGodo;

'4': Service;

end

until J=#27;

CloseGraph

end.

Додаток 9. Програма DemNit

program DemNit;

uses Graph,Crt,Serv,GodoGt,Groms;

const

Lng:real=0.5; M1:real=0.3;

Mn:real=0.05; K:real=0.05;

K1:real=0.1; m:integer=50;

Xout:real=0.2; g:real=9.8;

Mpz:integer=0; {alt 1,2}

Tc:char='H'; {alt G}

F:integer=0; {alt 1}

Yv:integer=1; {alt 0}

F1:integer=0; {alt 1}

var q,e0,e1,e2,e3,e4,e5,Hx,Tau:real;

Nout:integer; Ht:CoefL; My,Myp:CoefR;

procedure Step;

var s:integer; Myn:Coefr;

begin

Myn[-1]:=m; Myn[0]:=Yv;

Page 220: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

219

Myn[m]:=2*My[m]-Myp[m]-e3*(My[m]-Myp[m])-

e4*(My[m]-My[m-1])+e5*f1;

Myn[m+1]:=Hx;

for s:=1 to m-1 do

Myn[s]:=2*My[s]-Myp[s]-e0*(My[s]-Myp[s])+e1*((e2-s*Hx)*

(My[s-1]-2*My[s]+My[s+1])-Hx*(My[s+1]-My[s]));

Myp:=My; My:=Myn;

end;

procedure FormHtGt;

var s,z:integer; Myn:CoefR;

begin

Hx:=Lng/m;

dt:=D/L; Tau:=dt/Ks;

e0:=K*Tau/Mn; e1:=g*sqr(Tau/Hx);

e2:=M1/Mn+Lng; e3:=K1*Tau/M1;

e4:=g*sqr(Tau)/Hx; e5:=sqr(Tau)/Mn;

Myn[m+1]:=Hx;

Yv:=0; F1:=0; F:=0;

case Mpz of

0: Yv:=1;

1: F1:=1;

2: F:=1;

end;

for s:= 0 to m do

begin

My[s]:=0; Myp[s]:=0;

end;

Nout:=round(Xout/Hx);

Ht[-1]:=L; Ht[0]:=0; Ht[L+1]:=dt;

Gt[-1]:=L; Gt[L]:=0; Gt[L+1]:=dt;

for s:=1 to L do

begin

for z:=1 to Ks do Step;

Ht[s]:=My[Nout];

end;

for s:=1 to L do Gt[s]:=(Ht[s]-Ht[s-1])/dt;

end;

procedure GrHtGt;

var j1:char; y:real; s:integer;

begin

repeat

PutA;

Ou('0-ex,1-m,2-Xout,3-Mpz,4-D,5-Ks,6-Tc,7-Sc,8-C,9-Gr');

Str(m,T10); Ts:='m='+T10;

Str(Xout:1:3,T10); Ts:=Ts+', Xout='+T10;

Str(Mpz,T10); Ts:=Ts+', Mpz='+T10;

Str(D:1:1,T10); Ts:=Ts+', D='+T10;

Str(Ks,T10); Ts:=Ts+', Ks='+T10;

Ts:=Ts+', Tc='+Tc;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; J1:=ReadKey;

Page 221: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

220

case J1 of

'1': Oui('m',m);

'2': Our('Xout',Xout);

'3': Oui('Mpz',Mpz);

'4': Our('D',D);

'5': Oui('Ks',Ks);

'6': if Tc='H' then Tc:='G' else Tc:='H';

'7': begin

FormHtGt; Xmin:=0; Xmax:=D;

Ymin:=0; Ymax:=0;

for s:=0 to L do

begin

if TC='H' then Y:=Ht[s]

else Y:=Gt[s];

if Y<Ymin then Ymin:=Y;

if Y>Ymax then Ymax:=Y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

'8': Oui('C',C);

'9': begin

FormHtGt;

if Tc='G' then Graphic(Gt,C)

else Graphic(Ht,C);

end;

end

until J1='0'

end;

procedure Param;

var j1: char;

begin

repeat

PutA; Ou('0-ex, 1-Lng, 2-Mn, 3-M1,4-g,5-K,6-K1');

Str(Lng:1:3,T10); Ts:='Lng='+T10;

Str(Mn:1:3,T10); Ts:=Ts+', Mn='+T10;

Str(M1:1:3,T10); Ts:=Ts+', M1='+T10;

Str(g:1:3,T10); Ts:=Ts+', g='+T10;

Str(K:1:3,T10); Ts:=Ts+', K='+T10;

Str(K1:1:3,T10); Ts:=Ts+', K1='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Our('Lng',Lng);

'2': Our('Mn',Mn);

'3': Our('M1',M1);

'4': Our('g',g);

'5': Our('K',K);

'6': Our('K1',K1);

end;

until J1='0';

end;

Page 222: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

221

begin

C:=15;

repeat

PutA;

Ou('Esc-ex,1-Param,2-GrHtGt,3-DemGodo,4-Service');

J:=ReadKey;

case J of

'1': Param;

'2': GrHtGt;

'3': DemGodo;

'4': Service;

end

until J=#27;

CloseGraph

end.

Додаток 10. Програма DemPdTr program DemPdTr;

uses Graph, Crt, Serv, GodoGt, Groms;

const

Lng: real=1; n: integer=1;

W0: real=0.5; Tc: char='H'; {alt G}

var Ht:CoefL; Tau:real;

procedure FormHtGt;

var g:real; s,Nt:integer;

begin

Gt[-1]:=L; Ht[-1]:=L; Dt:=D/L;

Gt[0]:=0; Gt[L]:=0; Gt[L+1]:=Dt;

Ht[-1]:=L; Ht[0]:=0; Ht[L+1]:=Dt;

Tau:=Lng/W0; Nt:=round(Tau/dt);

g:=1/Tau;

for s:=0 to Nt do

if n=1

then

begin

Ht[s]:=s*dt/Tau; Gt[s]:=g;

end

else

begin

Ht[s]:=sqr(s*dt/Tau)/2;

Gt[s]:=s*dt/sqr(Tau);

end;

if n=1

then

for s:=Nt+1 to L do

begin

Ht[s]:=1; Gt[s]:=0;

end

else

Page 223: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

222

begin

for s:=Nt+1 to 2*Nt do

begin

Ht[s]:=-sqr(s*dt/Tau)/2+2*s*dt/Tau-1;

Gt[s]:=2/Tau-s*dt/sqr(Tau);

end;

for s:=2*Nt+1 to L do

begin

Ht[s]:=1; Gt[s]:=0;

end;

end;

end;

procedure GrHtGt;

var j1:char; y,D1:real; s:integer;

begin

repeat

PutA;

Ou('0-ex,1-Lng,2-W0,3-N,4-D,5-Tc,6-Sc,7-C,8-Gr');

Str(Lng:1:3,T10); Ts:='Lng='+T10;

Str(W0:1:3,T10); Ts:=Ts+', W0='+T10;

Str(N,T10); Ts:=Ts+', N='+T10;

Str(D:1:3,T10); Ts:=Ts+', D='+T10;

Ts:=Ts+', Tc='+Tc;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Our('Lng',Lng);

'2': Our('W0',W0);

'3': if n=1 then n:=2 else n:=1;

'4': begin

if n=1 then D1:=1.2*Lng/W0

else D1:=2.4*Lng/W0;

repeat

Str(D1:1:3,T10);

Our('D (D>='+T10+')',D);

until D>=D1;

end;

'5': if Tc='H' then Tc:='G' else Tc:='H';

'6': begin

FormHtGt; Xmin:=0; Xmax:=D;

Ymin:=0; Ymax:=0;

for s:=0 to L do

begin

if TC='H' then Y:=Ht[s]

else Y:=Gt[s];

if Y<Ymin then Ymin:=Y;

if Y>Ymax then Ymax:=Y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Tc='H' then Graphic(Ht,C)

else Graphic(Gt,C);

end;

Page 224: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

223

'7': Oui('C',C);

'8': begin

FormHtGt;

if Tc='G' then Graphic(Gt,C)

else Graphic(Ht,C);

end;

end

until J1='0'

end;

begin

C:=15; D:=5;

repeat

PutA;

Ou('Esc-ex,1-GrHtGt,2-DemGodo,3-Service');

J:=ReadKey;

case J of

'1': GrHtGt;

'2': DemGodo;

'3': Service;

end

until J=#27;

CloseGraph

end.

Додаток 11. Програмний модуль OptHtd

unit OptHtd;

interface

uses Crt,Graph,Serv,GromS;

const

D: real=50; Ks: integer=1;

Kr: real=1; Krk: real=5;

Ti: real=10; Tik: real=30;

Td: real=0; Tdk: real=5;

Krs: real=1; Ddk: integer=1;

Tis: real=10; Ddi: integer=1;

Tds: real=0; Ddd: integer=0;

Nvr: integer=1; R: real=1;

k: integer=3; Nk: integer=10;

Hiz: real=10; Mi: integer=50;

Io: real=500; Ek: real=0.01;

L2: integer=250; H2: integer=150;

Tmo: char='D'; {'D'} Tvs: char='Z'; {'L'}

Dk: real=0.05; Di: real=0.1;

Dd: real=0.1;

var I,Tkv,Dt:real; Nt:integer;

Ht,Hts: CoefL;

procedure Sc;

procedure Grad(Hts:CoefL; c:integer);

procedure Param;

Page 225: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

224

procedure FormHtsA;

procedure FormHtsD;

procedure FormHts;

procedure Nastr;

procedure Izo;

procedure DemIzo;

procedure OptSc2;

procedure DemSc2;

procedure OptSc3;

procedure DemSc3;

procedure OptSt;

procedure DemSt;

procedure Opt;

Implementation

procedure Sc;

begin

Xmin:=0; Xmax:=D; Ymin:=0;

Ymax:=1.5; X0Y0(false);

ClearDevice; SystCoor;

Line(x0,y0-round(1/dy),x0+L,y0-round(1/dy));

end;

procedure Grad(Hts:CoefL; c:integer);

var z,L: integer;

begin

L:=round(Ht[-1]);

Nt:=L div Nk; Setcolor(c);

MoveTo(X0,Y0-round(Hts[0]/dy));

for z:=1 to Nt do

LineTo(x0+z*Nk,y0-round(Hts[z]/dy));

SetColor(15);

end;

procedure Param;

var J2:char;

begin

repeat

PutA; Ou('0-Ex,1-Nk,2-Nvr,3-R,4-k,5-Ek,6-Tvs,7-Tmo');

str(Nk,T10); Ts:='Nk='+T10;

L:=round(Ht[-1]); Dt:=Ht[L+1]; Tkv:=Nk*dt;

str(Tkv:1:3,T10); Ts:=Ts+' (Tkv='+T10+')';

str(Nvr,T10); Ts:=Ts+', Nvr='+T10;

str(R:1:3,T10); Ts:=Ts+', R='+T10;

str(k,T10); Ts:=Ts+', k='+T10;

str(Ek:1:3,T10); Ts:=Ts+', Ek='+T10;

Ts:=Ts+', Tvs='+Tvs;

Ts:=Ts+', Tmo='+Tmo;

Info; J2:=ReadKey;

case J2 of

'1': Oui('Nk',Nk);

Page 226: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

225

'2': Oui('Nvr',Nvr);

'3': Our('R',R);

'4': Oui('k',k);

'5': Our('Ek',Ek);

'6': if Tvs='Z' then Tvs:='L' else Tvs:='Z';

'7': if Tmo='A' then Tmo:='D' else Tmo:='A';

end

until J2='0'

end;

procedure FormHtsA;

var z,s,Zd,La,L:integer; Rs: CoefL;

x,Eps,Epsp,Epsf,Integr,f:real;

begin

L:=round(Ht[-1]); dt:=Ht[L+1]; Tkv:=Nk*Dt;

Rs:=Ht; Hts[-1]:=L;

for z:=Nk to L do Rs[z]:=Rs[z]-Ht[z-Nk];

if Tvs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

Eps:=Zd; x:=Kr*eps; Integr:=0;

for s:=0 to L do Hts[s]:=Rs[s]*(x+La);

if Nvr in [1,2] then I:=Zd else I:=0;

z:=1;

repeat

Epsf:=Zd-Hts[z];

if z mod Nk = 0 then

begin

Epsp:=Eps; Eps:=Zd-Hts[z];

Integr:=Integr+Eps*Tkv;

x:=Kr*(Eps+Integr/Ti+Td*(Eps-Epsp)/Tkv);

for s:=0 to L-z do

Hts[z+s]:=Hts[z+s]+Rs[s]*(x+La);

end;

if abs(Hts[z])>2

then I:=500

else

begin

if Tvs='Z'

then if Epsf>0 then f:=Epsf else f:=R*Epsf

else if Epsf>0 then f:=R*Epsf else f:=Epsf;

case Nvr of

1: I:=I+abs(f);

2: I:=I+sqr(f);

3: I:=I+z/L*abs(f);

4: I:=I+z/L*sqr(f);

end;

end;

inc(z);

until (z>L) or (I>=500);

Hts[601]:=I*dt;

if I>=500 then

for s:=z to L do Hts[s]:=0.5;

end;

Page 227: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

226

procedure FormHtsD;

var z,s,Zd,La,L:integer; Rs:CoefL;

x,Eps,Epsp,Epsf,Integr,f: real;

begin

L:=round(Ht[-1]); dt:=Ht[L+1]; Tkv:=Nk*Dt;

Nt:=L div Nk; Rs[-1]:=Nt; Rs[Nt+1]:=Tkv; Rs[0]:=Ht[0];

for z:=1 to Nt do Rs[z]:=Ht[z*Nk]-Ht[(z-1)*Nk];

if Tvs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

Eps:=Zd; x:=Kr*eps; Integr:=0;

for z:=0 to Nt do Hts[z]:=Rs[z]*(x+La);

if Nvr in [1,2] then I:=Zd else I:=0;

z:=1;

repeat

Epsp:=Eps; Eps:=Zd-Hts[z]; Integr:=Integr+Eps*Tkv;

x:=Kr*(Eps+Integr/Ti+Td*(Eps-Epsp)/Tkv);

for s:=0 to Nt-z do

Hts[z+s]:=Hts[z+s]+Rs[s]*(x+La);

if abs(Hts[z])>2

then I:=500

else

begin

if Tvs='Z'

then if Eps>0 then f:=Eps else f:=R*Eps

else if Eps>0 then f:=R*Eps else f:=Eps;

case Nvr of

1: I:=I+abs(f);

2: I:=I+sqr(f);

3: I:=I+z/Nt*abs(f);

4: I:=I+z/Nt*sqr(f);

end;

end;

inc(z);

until (z>Nt) or (I>=500);

Hts[601]:=I*Tkv;

if I>=500 then

for s:=z to Nt do Hts[s]:=0.5;

end;

procedure FormHts;

begin

case Tmo of

'A': FormHtsA;

'D': FormHtsD;

end;

end;

procedure Nastr;

var J1:char;

begin

repeat

PutA;

Page 228: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

227

Ou('0-Ex,1-Param,2-Kr,3-Ti,4-Td,5-Sc,6-C,7-h(t),8-Service');

Str(Kr:1:3,T10); Ts:='Kr='+T10;

Str(Ti:1:3,T10); Ts:=Ts+', Ti='+T10;

Str(Td:1:3,T10); Ts:=Ts+', Td='+T10;

Str(C,T10); Ts:=Ts+', C='+T10;

Str(I:1:3,T10); Ts:=Ts+' (I='+T10+')';

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Our('Kr',Kr);

'3': Our('Ti',Ti);

'4': Our('Td',Td);

'5': begin

Xmin:=0; Xmax:=Ht[-1]*Ht[L+1];

Ymax:=1.5;

if Tvs='Z' then Ymin:=0

else Ymin:=-1.5;

X0Y0(false); ClearDevice; SystCoor;

if Tvs='Z' then

Line(x0,y0-round(1/dy),x0+L,y0-round(1/dy));

FormHts;

if Tmo='A' then Graphic(Hts,C)

else Grad(Hts,c);

I:=Hts[601];

end;

'6': Oui('C',C);

'7': begin

FormHts;

if Tmo='A' then Graphic(Hts,C)

else Grad(Hts,C);

I:=Hts[601];

end;

'8': Service;

end;

until J1='0';

end;

procedure Izo;

var Nr,Z,S,Zn,Sn,So,Zo,C1:integer;

Krn,Tin,Nrr:real; F:boolean; J2:char;

Mnr:array[-1..600] of integer;

begin

L:=L2; H:=H2;

Krn:=0.1*Krk; Tin:=0.1*Tik;

Xmin:=0; Xmax:=Tik;

Ymin:=0; Ymax:=Krk;

X0Y0(false); ClearDevice; SystCoor;

Sn:=round(Tin/dx); Zn:=round(Krn/dy);

Ti:=Tin-dx; Io:=500; J2:='1';

PutA; Ou('0-exit');

for z:=Zn-1 to H do

begin

Kr:=z*Dy; FormHts; Nrr:=Hts[601]/Hiz;

Page 229: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

228

if Nrr>Mi then Mnr[z]:=Mi

else Mnr[z]:=trunc(Nrr);

end;

s:=Sn;

repeat

Ti:=S*dx; F:=true;

for z:=Zn-1 to H2 do

if F

then

begin

Kr:=Z*dy; FormHts; I:=Hts[601];

if I<Io then

begin

Io:=I; So:=S; Zo:=Z;

end;

if I>=500

then

begin

PutPixel(x0+s,y0-z,5);

F:=false;

end

else

begin

Nrr:=I/Hiz;

if Nrr>Mi then Nr:=Mi else Nr:=trunc(Nrr);

if (z>=Zn)and((Nr<>Mnr[z-1])or(Nr<>Mnr[z]))

then

begin

if Nr<Mnr[z-1] then C1:=10

else C1:=12;

PutPixel(x0+s,y0-z,C1);

end;

end;

Mnr[z]:=Nr;

end

else PutPixel(x0+s,y0-z,5);

if KeyPressed then J2:=ReadKey;

inc(s);

until (s>L) or (J2='0');

Kr:=Zo*dy; Ti:=So*dx; SetColor(10);

Circle(x0+So,y0-Zo,3); SetColor(15);

I:=Io;

L:=GetMaxX-139; H:=GetMaxY-100;

end;

procedure DemIzo;

var J1:char;

begin

repeat

PutA;

Ou('0-Ex,1-Param,2-L2,3-H2,4-Krk,5-Tik,6-Td,7-Hiz,

8-Mi,9-Izo,S-Service');

Str(L2,T10); Ts:='L2='+T10;

Page 230: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

229

Str(H2,T10); Ts:=Ts+', H2='+T10;

Str(Krk:1:3,T10); Ts:=Ts+', Krk='+T10;

Str(Tik:1:3,T10); Ts:=Ts+', Tik='+T10;

Str(Td:1:3,T10); Ts:=Ts+', Td='+T10;

Str(Hiz:1:2,T10); Ts:=Ts+', Hiz='+T10;

Str(Mi,T10); Ts:=Ts+', Mi='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Oui('L2',L2);

'3': Oui('H2',H2);

'4': Our('Krk',Krk);

'5': Our('Tik',Tik);

'6': Our('Td',Td);

'7': Our('Hiz',Hiz);

'8': Oui('Mi',Mi);

'9': Izo;

'S','s': Service;

end;

until J1='0';

end;

procedure OptSc2;

var z,s,w:integer; J2:char;

dk,di,Epsk,Krc,Tic,Kro,Tio,Krn,Tin:real;

begin

Krn:=0.1*Krk; Tin:=0.1*Tik;

Krc:=0.55*Krk; Tic:=0.55*Tik;

dk:=0.45*Krk; di:=0.45*Tik;

Epsk:=Ek*Krk; Io:=500; w:=0; J2:='1';

PutA; Ou('0-exit');

repeat

dk:=dk/k; di:=di/k;

for s:=-k to k do

begin

Ti:=Tic+s*di;

if Ti<Tin then Ti:=Tin;

if Ti>Tik then Ti:=Tik;

for z:=-k to k do

begin

Kr:=Krc+z*dk;

if Kr<Krn then Kr:=Krn;

if Kr>Krk then Kr:=Krk;

FormHts; I:=Hts[601]; inc(w);

str(w,T10); clear(450,60,550,70);

OutTextXY(450,60,'W='+T10);

if I<Io then

begin

Kro:=Kr; Tio:=Ti; Io:=I;

end;

end;

end;

Krc:=Kro; Tic:=Tio;

Page 231: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

230

if KeyPressed then J2:=ReadKey;

until (Dk<=Epsk) or (J2='0');

Kr:=Kro; Ti:=Tio; I:=Io;

Clear(450,60,550,70);

OutTextXY(450,60,'Ok');

end;

procedure DemSc2;

var J1: char;

begin

repeat

PutA; Ou('0-Ex,1-Param,2-Krk,3-Tik,4-Td,5-OptSc2');

Str(Krk:1:3,T10); Ts:='Krk='+T10;

Str(Tik:1:3,T10); Ts:=Ts+',Tik='+T10;

Str(Td:1:3,T10); Ts:=Ts+',Td='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Our('Krk',Krk);

'3': Our('Tik',Tik);

'4': Our('Td',Td);

'5': OptSc2;

end;

until J1='0'

end;

procedure OptSc3;

var z,s,v,w:integer; J2:char;

dk,di,dd,Krn,Tin,Tdn,Krc,Tic,Tdc,Kro,Tio,Tdo,Epsk:real;

begin

Krn:=0.1*Krk; Tin:=0.1*Tik; Tdn:=0.1*Tdk;

Krc:=0.55*Krk; Tic:=0.55*Tik; Tdc:=0.55*Tdk;

dk:=0.45*Krk; di:=0.45*Tik; dd:=0.45*Tdk;

Epsk:=Ek*Krk; Io:=500; w:=0; J2:='1';

PutA; Ou('0-exit');

repeat

dk:=dk/k; di:=di/k; dd:=dd/k;

for s:=-k to k do

begin

Ti:=Tic+s*di;

if Ti<Tin then Ti:=Tin;

if Ti>Tik then Ti:=Tik;

for z:=-k to k do

begin

Kr:=Krc+z*dk;

if Kr<Krn then Kr:=Krn;

if Kr>Krk then Kr:=Krk;

for v:=-k to k do

begin

Td:=Tdc+v*dd;

if Td<Tdn then Td:=Tdn;

if td>Tdk then Td:=Tdk;

FormHts; I:=Hts[601];

Page 232: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

231

inc(w); str(w,T10);

clear(450,60,550,70);

OutTextXY(450,60,'W='+T10);

if I<Io then

begin

Kro:=Kr; Tio:=Ti;

Tdo:=Td; Io:=I;

end;

end;

end;

end;

Krc:=Kro; Tic:=Tio; Tdc:=Tdo;

if KeyPressed then J2:=ReadKey;

until (Dk<=Epsk) or (J2='0');

Kr:=Kro; Ti:=Tio; Td:=Tdo; I:=Io;

Clear(450,60,550,70);

OutTextXY(450,60,'Ok');

end;

procedure DemSc3;

var J1: char;

begin

repeat

PutA; Ou('0-Ex,1-Param,2-Krk,3-Tik,4-Tdk,5-OptSc3');

Str(Krk:1:3,T10); Ts:='Krk='+T10;

Str(Tik:1:3,T10); Ts:=Ts+',Tik='+T10;

Str(Tdk:1:3,T10); Ts:=Ts+',Tdk='+T10;

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Our('Krk',Krk);

'3': Our('Tik',Tik);

'4': Our('Tdk',Tdk);

'5': OptSc3;

end;

until J1='0'

end;

procedure OptSt;

var z,s,q,w:integer; j3:char; f,out:boolean;

dkro,dtio,dtdo,Io,krc,tic,tdc,kro,tio,tdo:real;

begin

Kr:=krs; Ti:=tis; Td:=tds;

FormHts; w:=1; Io:=Hts[601];

kro:=Kr; tio:=Ti; tdo:=Td;

out:=false; j3:='1';

puta; Ou('0-ex'); Clear(500,45,630,55);

repeat

krc:=kro; tic:=tio; tdc:=tdo;

f:=false; z:=-Ddk;

repeat

Kr:=krc+z*Dk; s:=-Ddi;

repeat

Page 233: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

232

Ti:=tic+s*Di; q:=-Ddd;

repeat

Td:=tdc+q*Dd;

FormHts; I:=Hts[601];

inc(w); str(w,T10); Clear(550,30,630,40);

OutTextXY(550,30,'w='+T10);

if I<Io then

begin

Io:=I; f:=true;

kro:=Kr; tio:=Ti; tdo:=Td;

dkro:=z*Dk; dtio:=s*Di; dtdo:=q*Dd;

end;

if KeyPressed then j3:=Readkey;

if j3='0' then out:=true;

inc(q);

until (q>Ddd) or out;

inc(s);

until (s>Ddi) or out;

inc(z);

until (z>Ddk) or out;

Kr:=kro; Ti:=tio; Td:=tdo;

if f then

repeat

Kr:=Kr+dkro; Ti:=Ti+dtio; Td:=Td+dtdo;

FormHts; I:=Hts[601]; inc(w); str(w,T10);

Clear(550,30,630,40); OutTextXY(550,30,'w='+T10);

if I<Io then

begin

kro:=Kr; tio:=Ti; tdo:=Td; Io:=I;

end;

until I>Io;

until (f=false) or out;

Kr:=kro; Ti:=tio; Td:=tdo;

Krs:=Kr; Tis:=Ti; Tds:=Td;

Clear(500,45,630,55); OutTextXY(500,45,'Ok! Press Enter');

J3:=ReadKey;

end;

procedure Diffs;

var j2:char;

begin

repeat

PutA;

Ou('0-ex,1-Dk,2-Di,3-Dd,4-Ddk,5-Ddi,6-Ddd');

str(Dk:1:3,T10); Ts:='Dk='+T10;

str(Di:1:3,T10); Ts:=Ts+', Di='+T10;

str(Dd:1:3,T10); Ts:=Ts+', Dd='+T10;

str(Ddk,T10); Ts:=Ts+', Ddk='+T10;

str(Ddi,T10); Ts:=Ts+', Ddi='+T10;

str(Ddd,T10); Ts:=Ts+', Ddd='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Our('Dk',Dk);

Page 234: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

233

'2': Our('Di',Di);

'3': Our('Dd',Dd);

'4': if Ddk=1 then Ddk:=0 else Ddk:=1;

'5': if Ddi=1 then Ddi:=0 else Ddi:=1;

'6': if Ddd=1 then Ddd:=0 else Ddd:=1;

end;

until j2='0';

end;

procedure DemSt;

var j1:char;

begin

repeat

PutA;

Ou('0-ex,1-Param,2-Diffs,3-Krs,4-Tis,5-Tds,6-OptSt');

str(Krs:1:2,T10); Ts:='Krs='+T10;

str(Tis:1:2,T10); Ts:=Ts+', Tis='+T10;

str(Tds:1:2,T10); Ts:=Ts+', Tds='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Param;

'2': Diffs;

'3': Our('Krs',Krs);

'4': Our('Tis',Tis);

'5': Our('Tds',Tds);

'6': OptSt;

end;

until j1='0';

end;

procedure Opt;

var J2: char;

begin

repeat

PutA;

Ou('0-Ex,1-Nastr,2-DIzo,3-DSc2,4-DSc3,5-DemSt,5-Service');

J2:=ReadKey;

case J2 of

'1': Nastr;

'2': DemIzo;

'3': DemSc2;

'4': DemSc3;

'5': DemSt;

'6': Service;

end

until J2='0';

end;

end.

Page 235: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

234

Додаток 12. Програма DemOptHd program DemOptHd;

uses Crt,Graph,Groms,Serv,OptHtd;

const tau:real=2;

var B,A:Coef; dt:real;

procedure InpPol(Id:char; var A:Coef);

var S,n:integer;

begin

Oui('N-step.pol. '+Id,n); A[-1]:=n;

for S:=0 to n do

begin

Str(S,T10); Our(Id+'['+T10+']',A[S])

end

end;

procedure EilWpm(B,A:Coef; X0,X1,V0:real; var Y:Coef);

var z,s,n,m:integer;

begin

n:=round(A[-1]); m:= round(B[-1]);

for z:=m+1 to n do B[z]:=0;

y[n+1]:=0;

for z:= 1 to n do

Y[z]:=Y[z]+V0*(Y[z+1]+B[n-z]*X0-A[n-z]*Y[0]);

Y[0]:=(B[n]*X1+Y[1])/A[n]

end;

procedure FormHt;

var z,s,n,Zt:integer; V0:real; My:Coef;

begin

Ht[-1]:=L; Dt:=D/L; V0:=Dt/Ks; Ht[L+1]:=Dt;

Zt:=round(tau/dt); n:=round(A[-1]); My[-1]:=n;

for z:=0 to Zt do Ht[z]:=0;

for s:=0 to n do My[s]:=0;

for z:=Zt+1 to L do

begin

for s:=1 to ks do EilWpm(B,A,1,1,V0,My);

Ht[z]:=My[0];

end

end;

procedure ScOb;

var s:integer; y:real;

begin

L:=round(Ht[-1]); Xmin:=0; Xmax:=L*Ht[L+1];

Ymin:=0; Ymax:=0;

for s:=0 to L do

begin

y:=Ht[s];

if y<Ymin then Ymin:=y;

if y>Ymax then Ymax:=y;

Page 236: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

235

end;

X0Y0(false); ClearDevice; SystCoor;

Graphic(Ht,C);

end;

procedure InpOb;

var J1:char;

begin

repeat

PutA;

Ou('0-Ex,1-B(p),2-A(p),3-tau,4-D,5-Ks,6-SC,7-C,8-h(t),

9-Groms');

Str(tau:1:3,T10); Ts:='tau='+T10;

Str(D:1:2,T10); Ts:=Ts+', D='+T10;

Str(Ks,T10); Ts:=Ts+', Ks='+T10;

Str(C,T10); Ts:=Ts+', C='+T10;

Info; J1:=ReadKey;

case J1 of

'1': InpPol('B',B);

'2': InpPol('A',A);

'3': Our('tau',tau);

'4': Our('D',D);

'5': Oui('Ks',Ks);

'6': begin

FormHt;

ScOb;

end;

'7': Oui('C',C);

'8': begin

FormHt;

Graphic(Ht,C);

end;

'9': Service;

end;

until J1='0';

end;

procedure FormHta(Bd,Ad:Coef; Nt:integer; var Htd:CoefL);

var z,s,m,n:integer; Sum:real;

begin

m:=round(Bd[-1]); Htd[-1]:=Nt; n:=round(Ad[-1]);

for z:=0 to Nt do

begin

Sum:=0;

for s:=0 to m do if z-s>=0 then Sum:=Sum+Bd[s];

for s:=1 to n do if z-s>=0 then Sum:=Sum-Ad[s]*Htd[z-

s];

Htd[z]:=Sum;

end

end;

begin

B[-1]:=0; B[0]:=1; A[-1]:=2; A[0]:=1; A[1]:=10; A[2]:=25;

Page 237: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

236

repeat

PutA; Ou('Esc-Ex,1-InpOb,2-Opt');

J:=ReadKey;

case J of

'1': InpOb;

'2': Opt;

end

until J=#27;

CloseGraph;

end.

Додаток 13. Програма DemOptVs program DemOptVs;

uses Crt,Graph,Groms,Serv,OptCompV{,OptImpVs};

const

tau1:real=5; tau2:real=5;

var B1,A1,A2,B2:Coef; dt:real;

procedure InpPol(Id:string; var A:Coef);

var S,n:integer;

begin

oui('N-step.pol. '+Id,n); A[-1]:=n;

for S:=0 to n do

begin

str(S,T10); Our(Id+'['+T10+']',A[S])

end;

end;

procedure EilWpm(B,A:Coef; X0,X1,V0:real; var Y:Coef);

var z,s,n,m:integer;

begin

n:=round(A[-1]); m:= round(B[-1]);

for z:=m+1 to n do B[z]:=0;

y[n+1]:=0;

for z:= 1 to n do Y[z]:=Y[z]+V0*(Y[z+1]+B[n-z]*X0-A[n-

z]*Y[0]);

Y[0]:=(B[n]*X1+Y[1])/A[n]

end;

procedure FormHt(B,A:Coef;tau:real; var Ht:CoefL);

var z,s,n,Zt:integer;

V0:real;

My:Coef;

begin

Ht[-1]:=L; Dt:=D/L; V0:=Dt/Ks; Ht[L+1]:=Dt;

Zt:=round(tau/dt); n:=round(A[-1]); My[-1]:=n;

for z:=0 to Zt do Ht[z]:=0;

for s:=0 to n do My[s]:=0;

for z:=Zt+1 to L do

begin

for s:=1 to ks do EilWpm(B,A,1,1,V0,My);

Page 238: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

237

Ht[z]:=My[0];

end

end;

procedure InpOb;

var J1:char;

begin

repeat

PutA;

Ou('0-ex,1-B1,2-A1,3-tau1,4-B2,5-A2,6-tau2,D-D,7-Ks,C-C,

8-h1,9-h2,S-Serv');

str(tau1:1:2,T10); Ts:='tau1='+T10;

str(tau2:1:2,T10); Ts:=Ts+', tau2='+T10;

str(D:1:2,T10); Ts:=Ts+', D='+T10;

str(Ks,T10); Ts:=Ts+', Ks='+T10;

str(C,T10); Ts:=Ts+', C='+T10;

Info; J1:=ReadKey;

case J1 of

'1': InpPol('B1',B1);

'2': InpPol('A1',A1);

'3': Our('tau1',tau1);

'4': InpPol('B2',B2);

'5': InpPol('A2',A2);

'6': Our('tau2',tau2);

'D','d': Our('D',D);

'7': Oui('Ks',Ks);

'C','c': Oui('C',C);

'8': begin

FormHt(B1,A1,tau1,Ht1);

Sc(Ht1,false); Graphic(Ht1,C);

end;

'9': begin

FormHt(B2,A2,tau2,Ht2);

Sc(Ht2,false); Graphic(Ht2,C);

end;

'S','s': Service;

end;

until J1='0';

end;

begin

B1[-1]:=0;B1[0]:=1;A1[-1]:=2;A1[0]:=1;A1[1]:=8;A1[2]:=5;

B2[-1]:=0;B2[0]:=1;A2[-1]:=2;A2[0]:=1;A2[1]:=8;A2[2]:=5;

repeat

PutA; Ou('Esc-Ex,1-InpOb,2-Opt');

J:=ReadKey;

case J of

'1': InpOb;

'2': Opt;

end

until J=#27;

CloseGraph;

end.

Page 239: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

238

Додаток 14. Програмний модуль OptCompV

unit OptCompV;

interface

uses Crt,Graph,Serv,Groms;

const

D: real=50; Ks: integer=1;

Kr: real=1;

Ti: real=10; Kf: real=5;

Td: real=0; Tv: real=0;

Krs: real=1; Ddk: integer=1; Dk: real=0.05;

Tis: real=10; Ddi: integer=1; Di: real=0.1;

Tds: real=0; Ddd: integer=1; Dd: real=0.1;

Tvs: real=0; Dtv: integer=1;

Nzr: integer=1;{1..3} Nk: integer=5;

Nvr: integer=1; K: real=1;

q: real=1; r: real=0;

Tmo: char='D';{'A'} Vs: char='Z';{'L'}

Tc: char='Y'; {'X'} Ovr: real=1e+4;

var I,Tkv,Dt:real; Nt:integer;

Ht1,Ht2,Hts,HtsX: CoefL;

procedure Sc(Ht:CoefL; Zd: boolean);

procedure Grad(Ht:CoefL; C:integer);

procedure Param;

procedure FormHtsA;

procedure FormHtsD;

procedure FormHts;

procedure OptSt;

procedure DemOpt;

procedure Opt;

Implementation

procedure Sc(Ht:CoefL; Zd: boolean);

var s,n:integer; y:real;

begin

n:=round(Ht[-1]);

Xmin:=0; Xmax:=n*Ht[n+1]; Ymin:=0; Ymax:=0;

if Zd then Ymax:=1.5

else

for s:=0 to n do

begin

y:=Ht[s];

if y<Ymin then Ymin:=y;

if y>Ymax then Ymax:=y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Zd then Line(x0,y0-round(1/dy),x0+L,y0-round(1/dy));

end;

Page 240: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

239

procedure Grad(Ht:CoefL; C:integer);

var z,n: integer;

begin

n:=round(Ht[-1]); Setcolor(c);

MoveTo(X0,Y0-round(Ht[0]/dy));

for z:=1 to n do LineTo(x0+z*Nk,y0-round(Ht[z]/dy));

SetColor(15);

end;

procedure Param;

var J2:char;

begin

repeat

PutA; Ou('0-Ex,1-Nk,2-Nzr,3-Nvr,4-q,5-r,6-K,7-Tc,8-Vs,9-

Tmo');

str(Nk,T10); Ts:='Nk='+T10;

L:=round(Ht1[-1]); Dt:=Ht1[L+1]; Tkv:=Nk*dt;

str(Tkv:1:3,T10); Ts:=Ts+'(Tkv='+T10+')';

str(Nzr,T10); Ts:=Ts+',Nzr='+T10;

case Nzr of

1: Ts:=Ts+'(PID)';

2: Ts:=Ts+'(PI-D)';

3: Ts:=Ts+'(I-PD)';

end;

str(Nvr,T10); Ts:=Ts+',Nvr='+T10;

str(q:1:3,T10); Ts:=Ts+',q='+T10;

str(r:1:3,T10); Ts:=Ts+',r='+T10;

str(K:1:3,T10); Ts:=Ts+',K='+T10;

Ts:=Ts+',Tc='+Tc;

Ts:=Ts+',Vs='+Vs;

Ts:=Ts+',Tmo='+Tmo;

Info; J2:=ReadKey;

case J2 of

'1': Oui('Nk',Nk);

'2': Oui('Nzr',Nzr);

'3': Oui('Nvr',Nvr);

'4': Our('q',q);

'5': Our('r',r);

'6': Our('K',K);

'7': if Tc='Y' then Tc:='X' else Tc:='Y';

'8': if Vs='Z' then Vs:='L' else Vs:='Z';

'9': if Tmo='A' then Tmo:='D' else Tmo:='A';

end

until J2='0'

end;

procedure FormHtsA;

var z,s,Zd,La,Lap,L:integer; Rs1,Rs2,Hts1,Hts2:CoefL;

x,y,yp,u,ud,udp,uv,uvp,e,ep,ei,sum,Ad,Bd,Av,Bv:real;

begin

L:=round(Ht1[-1]); dt:=Ht1[L+1]; Tkv:=Nk*Dt;

Ad:=Td/(abs(Td)+Kf*Tkv); Bd:=Ad*Kf;

Av:=Tv/(abs(Tv)+Kf*Tkv); Bv:=Av*Kf;

Page 241: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

240

Hts[-1]:=L; Hts[L+1]:=dt; HtsX[-1]:=L; HtsX[L+1]:=dt;

Rs1:=Ht1; Rs2:=Ht2; HtsX[0]:=0;

for z:=Nk to L do

begin

Rs1[z]:=Rs1[z]-Ht1[z-Nk];

Rs2[z]:=Rs2[z]-Ht2[z-Nk];

end;

for s:=0 to L do

begin

Hts[s]:=0; Hts1[s]:=0; Hts2[s]:=0;

end;

if Vs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

z:=1; I:=0; e:=0; sum:=0; ud:=0; uv:=0; Lap:=0;

repeat

if z mod Nk = 0 then

begin

y:=Hts1[z]+Hts2[z]; yp:=Hts1[z-Nk]+Hts2[z-Nk];

ep:=e; e:=Zd-y-uv; ei:=Zd-y;

sum:=sum+e*Tkv; udp:=ud; uvp:=uv;

case Nzr of

1: begin {PID}

ud:=Ad*udp+Bd*(e-ep);

u:=Kr*(e+sum/Ti+ud);

end;

2: begin {PI-D}

ud:=Ad*udp+Bd*(y-yp);

u:=Kr*(e+sum/Ti)-Kr*ud;

end;

3: begin {I-PD}

ud:=Ad*udp+Bd*(y-yp);

u:=Kr*sum/Ti-Kr*(y+ud);

end;

end;

uv:=Av*uvp+Bv*(La-Lap); Lap:=La; x:=u;

for s:=0 to L-z do

begin

Hts1[z+s]:=Hts1[z+s]+Rs1[s]*x;

Hts2[z+s]:=Hts2[z+s]+Rs2[s]*La;

end;

end;

HtsX[z]:=x;

Hts[z]:=Hts1[z]+Hts2[z];

if abs(e)>Ovr

then e:=Ovr

else

case Nvr of

1: I:=I+q*abs(ei)+r*abs(Zd-K*x);

2: I:=I+q*sqr(ei)+r*sqr(Zd-K*x);

3: I:=I+q*abs(ei)+r*abs(x);

4: I:=I+q*sqr(ei)+r*sqr(x);

end;

inc(z);

Page 242: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

241

until (z>L) or (e=Ovr);

if e=Ovr

then

begin

for s:=z to L do

begin

Hts[s]:=0.5; HtsX[s]:=0.5;

end;

Hts[601]:=Ovr;

end

else Hts[601]:=I*Dt;

end;

procedure FormHtsD;

var z,s,Zd,La,Lap,L:integer; Rs1,Rs2,Hts1,Hts2:CoefL;

x,y,yp,u,ud,udp,uv,uvp,e,ep,ei,sum,Ad,Bd,Av,Bv:real;

begin

L:=round(Ht1[-1]); dt:=Ht1[L+1]; Tkv:=Nk*Dt; Nt:=L div Nk;

Ad:=Td/(abs(Td)+Kf*Tkv); Bd:=Ad*Kf; Av:=Tv/(abs(Tv)+Kf*Tkv);

Bv:=Av*Kf;

Hts[-1]:=Nt; Hts[Nt+1]:=Tkv; HtsX[-1]:=Nt; HtsX[Nt+1]:=Tkv;

Rs1[0]:=Ht1[0]; Rs2[0]:=Ht2[0]; HtsX[0]:=0;

for z:=1 to Nt do

begin

Rs1[z]:=Ht1[z*Nk]-Ht1[(z-1)*Nk];

Rs2[z]:=Ht2[z*Nk]-Ht2[(z-1)*Nk];

end;

for z:=0 to Nt do

begin

Hts[z]:=0; Hts1[z]:=0; Hts2[z]:=0;

end;

if Vs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

z:=1; I:=0; e:=0; sum:=0; ud:=0; uv:=0; Lap:=0;

repeat

y:=Hts1[z]+Hts2[z]; yp:=Hts1[z-1]+Hts2[z-1];

ep:=e; e:=Zd-y-uv; ei:=Zd-y;

sum:=sum+e*Tkv; udp:=ud; uvp:=uv;

case Nzr of

1: begin {PID}

ud:=Ad*udp+Bd*(e-ep);

u:=Kr*(e+sum/Ti+ud);

end;

2: begin {PI-D}

ud:=Ad*udp+Bd*(y-yp);

u:=Kr*(e+sum/Ti)-Kr*ud;

end;

3: begin {I-PD}

ud:=Ad*udp+Bd*(y-yp);

u:=Kr*sum/Ti-Kr*(y+ud);

end;

end;

uv:=Av*uvp+Bv*(La-Lap); Lap:=La; x:=u;

Page 243: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

242

for s:=0 to Nt-z do

begin

Hts1[z+s]:=Hts1[z+s]+Rs1[s]*x;

Hts2[z+s]:=Hts2[z+s]+Rs2[s]*La;

end;

HtsX[z]:=x;

Hts[z]:=Hts1[z]+Hts2[z];

if abs(e)>Ovr

then e:=Ovr

else

case Nvr of

1: I:=I+q*abs(ei)+r*abs(Zd-K*x);

2: I:=I+q*sqr(ei)+r*sqr(Zd-K*x);

3: I:=I+q*abs(ei)+r*abs(x);

4: I:=I+q*sqr(ei)+r*sqr(x);

end;

inc(z);

until (z>Nt) or (e=Ovr);

if e=Ovr

then

begin

for s:=z to L do

begin

Hts[s]:=0.5; HtsX[s]:=0.5;

end;

Hts[601]:=Ovr;

end

else Hts[601]:=I*Tkv;

end;

procedure FormHts;

begin

case Tmo of

'A': FormHtsA;

'D': FormHtsD;

end;

end;

procedure Nastr;

var J1:char;

begin

repeat

PutA;

Ou('0-Ex,1-Param,2-Kr,3-Ti,4-Td,5-Kf,6-Tv,7-Sc,8-C,

9-h(t),S-Service');

Str(Nzr,T10); Ts:='Nzr='+T10;

case Nzr of

1: Ts:=Ts+'(PID)';

2: Ts:=Ts+'(PI-D)';

3: Ts:=Ts+'(I-PD)';

end;

Str(Kr:1:2,T10); Ts:=Ts+', Kr='+T10;

Str(Ti:1:2,T10); Ts:=Ts+', Ti='+T10;

Page 244: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

243

Str(Td:1:2,T10); Ts:=Ts+', Td='+T10;

Str(Kf:1:2,T10); Ts:=Ts+', Kf='+T10;

Str(Tv:1:2,T10); Ts:=Ts+', Tv='+T10;

Str(C,T10); Ts:=Ts+', C='+T10;

Str(I:1:2,T10); Ts:=Ts+' (I='+T10+')';

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Our('Kr',Kr);

'3': Our('Ti',Ti);

'4': Our('Td',Td);

'5': Our('Kf',Kf);

'6': Our('Tv',Tv);

'7': begin

FormHts;

if Tc='Y' then Sc(Hts,Vs='Z')

else Sc(HtsX,false);

end;

'8': Oui('C',C);

'9': begin

FormHts;

if Tc='Y'

then if Tmo='A' then Graphic(Hts,C)

else Grad(Hts,C)

else if Tmo='A' then Graphic(HtsX,C)

else Grad(HtsX,C);

I:=Hts[601];

end;

'S','s': Service;

end;

until J1='0';

end;

procedure OptSt;

var z,s,q,zv,w:integer; j3:char; f,out:boolean;

dkro,dtio,dtdo,dtvo,Io,krc,tic,tdc,tvc,

kro,tio,tdo,tvo:real;

begin

Kr:=krs; Ti:=tis; Td:=tds; Tv:=tvs;

kro:=Kr; tio:=Ti; tdo:=Td; tvo:=Tv;

FormHts; w:=1; Io:=Hts[601];

out:=false; j3:='1';

puta; Ou('0-ex'); Clear(500,45,630,55);

repeat

krc:=kro; tic:=tio; tdc:=tdo; tvc:=tvo;

f:=false; z:=-Ddk;

repeat

Kr:=krc+z*Dk; s:=-Ddi;

repeat

Ti:=tic+s*Di; q:=-Ddd;

repeat

Td:=tdc+q*Dd; sv:=-Dtv;

repeat

Page 245: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

244

Tv:=tvc+sv*Dd;

{if Tv<=0 then Tv:=0;}

FormHts; I:=Hts[601];

inc(w); str(w,T10); Clear(550,30,630,40);

OutTextXY(550,30,'w='+T10);

if I<Io then

begin

Io:=I; f:=true;

kro:=Kr; tio:=Ti; tdo:=Td; tvo:=Tv;

dkro:=z*Dk; dtio:=s*Di;

dtdo:=q*Dd; dtvo:=sv*Dd;

end;

if KeyPressed then j3:=Readkey;

if j3='0' then out:=true;

inc(sv);

until (sv>Dtv) or out;

inc(q);

until (q>Ddd) or out;

inc(s);

until (s>Ddi) or out;

inc(z);

until (z>Ddk) or out;

Kr:=kro; Ti:=tio; Td:=tdo; Tv:=tvo;

if f then

repeat

Kr:=Kr+dkro; Ti:=Ti+dtio; Td:=Td+dtdo; Tv:=Tv+dtvo;

FormHts; I:=Hts[601]; inc(w); str(w,T10);

Clear(550,30,630,40); OutTextXY(550,30,'w='+T10);

if I<Io then

begin

kro:=Kr; tio:=Ti; tdo:=Td; tvo:=Tv; Io:=I;

end;

until I>Io;

until (f=false) or out;

Kr:=kro; Ti:=tio; Td:=tdo; Tv:=tvo;

Krs:=Kr; Tis:=Ti; Tds:=Td; Tvs:=Tv;

Clear(550,30,630,40); OutTextXY(550,30,'Ok!');

end;

procedure Diffs;

var j2:char;

begin

repeat

PutA; Ou('0-ex,1-Dk,2-Di,3-Dd,4-Ddk,5-Ddi,6-Ddd,7-Dtv');

str(Dk:1:3,T10); Ts:='Dk='+T10;

str(Di:1:3,T10); Ts:=Ts+', Di='+T10;

str(Dd:1:3,T10); Ts:=Ts+', Dd='+T10;

str(Ddk,T10); Ts:=Ts+', Ddk='+T10;

str(Ddi,T10); Ts:=Ts+', Ddi='+T10;

str(Ddd,T10); Ts:=Ts+', Ddd='+T10;

str(Dtv,T10); Ts:=Ts+', Dtv='+T10;

Info; j2:=ReadKey;

case j2 of

Page 246: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

245

'1': Our('Dk',Dk);

'2': Our('Di',Di);

'3': Our('Dd',Dd);

'4': if Ddk=1 then Ddk:=0 else Ddk:=1;

'5': if Ddi=1 then Ddi:=0 else Ddi:=1;

'6': if Ddd=1 then Ddd:=0 else Ddd:=1;

'7': if Dtv=1 then Dtv:=0 else Dtv:=1;

end;

until j2='0';

end;

procedure DemOpt;

var j1:char;

begin

repeat

PutA;

Ou('0-ex,1-Param,2-Diffs,3-Krs,4-Tis,5-Tds,6-Tvs,7-OptSt');

str(Krs:1:2,T10); Ts:='Krs='+T10;

str(Tis:1:2,T10); Ts:=Ts+', Tis='+T10;

str(Tds:1:2,T10); Ts:=Ts+', Tds='+T10;

str(Tvs:1:2,T10); Ts:=Ts+', Tvs='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Param;

'2': Diffs;

'3': Our('Krs',Krs);

'4': Our('Tis',Tis);

'5': Our('Tds',Tds);

'6': Our('Tvs',Tvs);

'7': OptSt;

end;

until j1='0';

end;

procedure Opt;

var J2: char;

begin

repeat

PutA;

Ou('0-Ex,1-Nastr,2-DemOpt,3-Service');

J2:=ReadKey;

case J2 of

'1': Nastr;

'2': DemOpt;

'3': Service;

end

until J2='0';

end;

end.

Page 247: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

246

Додаток 15. Програмний модуль OptImpVs unit OptImpVs;

interface

uses Crt,Graph,Serv,Groms;

const

D: real=50; Ks: integer=1;

Kr: real=1;

Ti: real=10; Kf: real=5;

Td: real=0; Tv: real=0;

Krs: real=1; Ddk: integer=1; Dk: real=0.05;

Tis: real=10; Ddi: integer=1; Di: real=0.1;

Tds: real=0; Ddd: integer=1; Dd: real=0.1;

Tvs: real=0; Dtv: integer=1;

Nzr: integer=1;{1..3} Nk: integer=5;

Nvr: integer=1; K: real=1;

q: real=1; r: real=0;

Tmo: char='D';{'A'} Vs: char='Z';{'L'}

Tc: char='Y'; {'X'} Ovr: real=1e+4;

var I,Tkv,Dt: real; Nt: integer;

Ht1,Ht2,Hts,HtsX,Ipid: CoefL;

procedure Sc(Ht:CoefL; Zd: boolean);

procedure Grad(Ht:CoefL; C:integer);

procedure Param;

procedure FormHtsA;

procedure FormHtsD;

procedure FormHts;

procedure OptSt;

procedure DemOpt;

procedure Opt;

Implementation

procedure Sc(Ht:CoefL; Zd: boolean);

var s,n:integer; y:real;

begin

n:=round(Ht[-1]);

Xmin:=0; Xmax:=n*Ht[n+1]; Ymin:=0; Ymax:=0;

if Zd then Ymax:=1.5

else

for s:=0 to n do

begin

y:=Ht[s];

if y<Ymin then Ymin:=y;

if y>Ymax then Ymax:=y;

end;

X0Y0(false); ClearDevice; SystCoor;

if Zd then Line(x0,y0-round(1/dy),x0+L,y0-round(1/dy));

end;

procedure Grad(Ht:CoefL; C:integer);

Page 248: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

247

var z,n: integer;

begin

n:=round(Ht[-1]); Setcolor(c);

MoveTo(X0,Y0-round(Ht[0]/dy));

for z:=1 to n do LineTo(x0+z*Nk,y0-round(Ht[z]/dy));

SetColor(15);

end;

procedure Param;

var J2:char;

begin

repeat

PutA; Ou('0-Ex,1-Nk,2-Nzr,3-Nvr,4-q,5-r,6-K,7-Tc,8-Vs,9-

Tmo');

str(Nk,T10); Ts:='Nk='+T10;

L:=round(Ht1[-1]); Dt:=Ht1[L+1]; Tkv:=Nk*dt;

str(Tkv:1:3,T10); Ts:=Ts+'(Tkv='+T10+')';

str(Nzr,T10); Ts:=Ts+',Nzr='+T10;

case Nzr of

1: Ts:=Ts+'(PID)';

2: Ts:=Ts+'(PI-D)';

3: Ts:=Ts+'(I-PD)';

end;

str(Nvr,T10); Ts:=Ts+',Nvr='+T10;

str(q:1:3,T10); Ts:=Ts+',q='+T10;

str(r:1:3,T10); Ts:=Ts+',r='+T10;

str(K:1:3,T10); Ts:=Ts+',K='+T10;

Ts:=Ts+',Tc='+Tc;

Ts:=Ts+',Vs='+Vs;

Ts:=Ts+',Tmo='+Tmo;

Info; J2:=ReadKey;

case J2 of

'1': Oui('Nk',Nk);

'2': Oui('Nzr',Nzr);

'3': Oui('Nvr',Nvr);

'4': Our('q',q);

'5': Our('r',r);

'6': Our('K',K);

'7': if Tc='Y' then Tc:='X' else Tc:='Y';

'8': if Vs='Z' then Vs:='L' else Vs:='Z';

'9': if Tmo='A' then Tmo:='D' else Tmo:='A';

end

until J2='0'

end;

procedure FormHtsA;

var z,s,Zd,La,L: integer; Rs1,Rs2,Hts1: CoefL;

x,y1,yp1,y2,yp2,u,ud,udp,uv,uvp,

e,ep,ei,sum,Ad,Bd,Av,Bv: real;

begin

L:=round(Ht2[-1]); dt:=Ht2[L+1]; Tkv:=Nk*Dt;

Ad:=Td/(abs(Td)+Kf*Tkv); Bd:=Ad*Kf;

Av:=Tv/(abs(Tv)+Kf*Tkv); Bv:=Av*Kf;

Page 249: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

248

Hts[-1]:=L; Hts[L+1]:=dt; HtsX[-1]:=L; HtsX[L+1]:=dt;

Rs1:=Ht1; Rs2:=Ht2; HtsX[0]:=0;

for z:=Nk to L do

begin

Rs1[z]:=Rs1[z]-Ht1[z-Nk];

Rs2[z]:=Rs2[z]-Ht2[z-Nk];

end;

for s:=0 to L do

begin

Hts1[s]:=0; Hts[s]:=0;

end;

if Vs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

z:=1; I:=0; e:=0; sum:=0; ud:=0; uv:=0;

repeat

if z mod Nk = 0 then

begin

y1:=Hts1[z]; yp1:=Hts1[z-Nk];

y2:=Hts[z]; yp2:=Hts[z-Nk];

ep:=e; e:=Zd-y2-uv; ei:=Zd-y2;

sum:=sum+e*Tkv; udp:=ud; uvp:=uv;

case Nzr of

1: begin {PID}

ud:=Ad*udp+Bd*(e-ep);

u:=Kr*(e+sum/Ti+ud);

end;

2: begin {PI-D}

ud:=Ad*udp+Bd*(y2-yp2);

u:=Kr*(e+sum/Ti)-Kr*ud;

end;

3: begin {I-PD}

ud:=Ad*udp+Bd*(y2-yp2);

u:=Kr*sum/Ti-Kr*(y2+ud);

end;

end;

uv:=Av*uvp+Bv*(y1-yp1); x:=u+La;

for s:=0 to L-z do

begin

Hts1[z+s]:=Hts1[z+s]+Rs1[s]*x;

Hts[z+s]:=Hts[z+s]+Rs2[s]*x;

end;

end;

HtsX[z]:=x;

if abs(e)>Ovr

then e:=Ovr

else

case Nvr of

1: I:=I+q*abs(ei)+r*abs(Zd-K*x);

2: I:=I+q*sqr(ei)+r*sqr(Zd-K*x);

3: I:=I+q*abs(ei)+r*abs(x);

4: I:=I+q*sqr(ei)+r*sqr(x);

end;

inc(z);

Page 250: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

249

until (z>L) or (e=Ovr);

if e=Ovr

then

begin

for s:=z to L do

begin

Hts[s]:=0.5; HtsX[s]:=0.5;

end;

Hts[601]:=Ovr;

end

else Hts[601]:=I*Dt;

end;

procedure FormHtsD;

var z,s,Zd,La,L: integer; Rs1,Rs2,Hts1: CoefL;

x,y1,yp1,y2,yp2,u,ud,udp,uv,uvp,

e,ep,ei,sum,Ad,Bd,Av,Bv: real;

begin

L:=round(Ht2[-1]); dt:=Ht2[L+1]; Tkv:=Nk*Dt; Nt:=L div Nk;

Ad:=Td/(abs(Td)+Kf*Tkv); Bd:=Ad*Kf;

Av:=Tv/(abs(Tv)+Kf*Tkv); Bv:=Av*Kf;

Hts[-1]:=Nt; Hts[Nt+1]:=Tkv; HtsX[-1]:=Nt; HtsX[Nt+1]:=Tkv;

Rs1[0]:=Ht1[0]; Rs2[0]:=Ht2[0]; HtsX[0]:=0;

for z:=1 to Nt do

begin

Rs1[z]:=Ht1[z*Nk]-Ht1[(z-1)*Nk];

Rs2[z]:=Ht2[z*Nk]-Ht2[(z-1)*Nk];

end;

for z:=0 to Nt do

begin

Hts1[z]:=0; Hts[z]:=0;

end;

if Vs='Z' then begin Zd:=1; La:=0 end

else begin Zd:=0; La:=1 end;

z:=1; I:=0; e:=0; sum:=0; ud:=0; uv:=0;

repeat

y1:=Hts1[z]; yp1:=Hts1[z-1];

y2:=Hts[z]; yp2:=Hts[z-1];

ep:=e; e:=Zd-y2-uv; ei:=Zd-y2;

sum:=sum+e*Tkv; udp:=ud; uvp:=uv;

case Nzr of

1: begin {PID}

ud:=Ad*udp+Bd*(e-ep);

u:=Kr*(e+sum/Ti+ud);

end;

2: begin {PI-D}

ud:=Ad*udp+Bd*(y2-yp2);

u:=Kr*(e+sum/Ti)-Kr*ud;

end;

3: begin {I-PD}

ud:=Ad*udp+Bd*(y2-yp2);

u:=Kr*sum/Ti-Kr*(y2+ud);

end;

Page 251: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

250

end;

uv:=Av*uvp+Bv*(y1-yp1); x:=u+La;

for s:=0 to Nt-z do

begin

Hts1[z+s]:=Hts1[z+s]+Rs1[s]*x;

Hts[z+s]:=Hts[z+s]+Rs2[s]*x;

end;

HtsX[z]:=x;

if abs(e)>Ovr

then e:=Ovr

else

case Nvr of

1: I:=I+q*abs(ei)+r*abs(Zd-K*x);

2: I:=I+q*sqr(ei)+r*sqr(Zd-K*x);

3: I:=I+q*abs(ei)+r*abs(x);

4: I:=I+q*sqr(ei)+r*sqr(x);

end;

inc(z);

until (z>Nt) or (e=Ovr);

if e=Ovr

then

begin

for s:=z to L do

begin

Hts[s]:=0.5; HtsX[s]:=0.5;

end;

Hts[601]:=Ovr;

end

else Hts[601]:=I*Tkv;

end;

procedure FormHts;

begin

case Tmo of

'A': FormHtsA;

'D': FormHtsD;

end;

end;

procedure Nastr;

var J1:char;

begin

repeat

PutA

Ou('0-Ex,1-Param,2-Kr,3-Ti,4-Td,5-Kf,6-Tv,7-Sc,8-C,

9-h(t),S-Service');

Str(Nzr,T10); Ts:='Nzr='+T10;

case Nzr of

1: Ts:=Ts+'(PID)';

2: Ts:=Ts+'(PI-D)';

3: Ts:=Ts+'(I-PD)';

end;

Str(Kr:1:2,T10); Ts:=Ts+', Kr='+T10;

Page 252: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

251

Str(Ti:1:2,T10); Ts:=Ts+', Ti='+T10;

Str(Td:1:2,T10); Ts:=Ts+', Td='+T10;

Str(Kf:1:2,T10); Ts:=Ts+', Kf='+T10;

Str(Tv:1:2,T10); Ts:=Ts+', Tv='+T10;

Str(C,T10); Ts:=Ts+', C='+T10;

Str(I:1:2,T10); Ts:=Ts+' (I='+T10+')';

Info; J1:=ReadKey;

case J1 of

'1': Param;

'2': Our('Kr',Kr);

'3': Our('Ti',Ti);

'4': Our('Td',Td);

'5': Our('Kf',Kf);

'6': Our('Tv',Tv);

'7': begin

FormHts;

if Tc='Y' then Sc(Hts,Vs='Z')

else Sc(HtsX,false);

end;

'8': Oui('C',C);

'9': begin

FormHts;

if Tc='Y'

then if Tmo='A' then Graphic(Hts,C)

else Grad(Hts,C)

else if Tmo='A' then Graphic(HtsX,C)

else Grad(HtsX,C);

I:=Hts[601];

end;

'S','s': Service;

end;

until J1='0';

end;

procedure OptSt;

var z,s,q,zv,w:integer;

f,out:boolean; j3:char;

dkro,dtio,dtdo,dtvo,Io,krc,tic,tdc,tvc,

kro,tio,tdo,tvo:real;

begin

Kr:=krs; Ti:=tis; Td:=tds; Tv:=tvs;

kro:=Kr; tio:=Ti; tdo:=Td; tvo:=Tv;

FormHts; w:=1; Io:=Hts[601];

out:=false; j3:='1';

puta; Ou('0-ex'); Clear(500,45,630,55);

repeat

krc:=kro; tic:=tio; tdc:=tdo; tvc:=tvo;

f:=false; z:=-Ddk;

repeat

Kr:=krc+z*Dk; s:=-Ddi;

repeat

Ti:=tic+s*Di; q:=-Ddd;

repeat

Page 253: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

252

Td:=tdc+q*Dd; sv:=-Dtv;

repeat

Tv:=tvc+sv*Dd;

{if Tv<=0 then Tv:=0;}

FormHts; I:=Hts[601];

inc(w); str(w,T10); Clear(550,30,630,40);

OutTextXY(550,30,'w='+T10);

if I<Io then

begin

Io:=I; f:=true;

kro:=Kr; tio:=Ti; tdo:=Td; tvo:=Tv;

dkro:=z*Dk; dtio:=s*Di;

dtdo:=q*Dd; dtvo:=sv*Dd;

end;

if KeyPressed then j3:=Readkey;

if j3='0' then out:=true;

inc(sv);

until (sv>Dtv) or out;

inc(q);

until (q>Ddd) or out;

inc(s);

until (s>Ddi) or out;

inc(z);

until (z>Ddk) or out;

Kr:=kro; Ti:=tio; Td:=tdo; Tv:=tvo;

if f then

repeat

Kr:=Kr+dkro; Ti:=Ti+dtio; Td:=Td+dtdo; Tv:=Tv+dtvo;

FormHts; I:=Hts[601]; inc(w); str(w,T10);

Clear(550,30,630,40); OutTextXY(550,30,'w='+T10);

if I<Io then

begin

kro:=Kr; tio:=Ti; tdo:=Td; tvo:=Tv; Io:=I;

end;

until I>Io;

until (f=false) or out;

Kr:=kro; Ti:=tio; Td:=tdo; Tv:=tvo;

Krs:=Kr; Tis:=Ti; Tds:=Td; Tvs:=Tv;

Clear(550,30,630,40); OutTextXY(550,30,'Ok!');

end;

procedure Diffs;

var j2:char;

begin

repeat

PutA; Ou('0-ex,1-Dk,2-Di,3-Dd,4-Ddk,5-Ddi,6-Ddd,7-Dtv');

str(Dk:1:3,T10); Ts:='Dk='+T10;

str(Di:1:3,T10); Ts:=Ts+', Di='+T10;

str(Dd:1:3,T10); Ts:=Ts+', Dd='+T10;

str(Ddk,T10); Ts:=Ts+', Ddk='+T10;

str(Ddi,T10); Ts:=Ts+', Ddi='+T10;

str(Ddd,T10); Ts:=Ts+', Ddd='+T10;

str(Dtv,T10); Ts:=Ts+', Dtv='+T10;

Page 254: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

253

Info; j2:=ReadKey;

case j2 of

'1': Our('Dk',Dk);

'2': Our('Di',Di);

'3': Our('Dd',Dd);

'4': if Ddk=1 then Ddk:=0 else Ddk:=1;

'5': if Ddi=1 then Ddi:=0 else Ddi:=1;

'6': if Ddd=1 then Ddd:=0 else Ddd:=1;

'7': if Dtv=1 then Dtv:=0 else Dtv:=1;

end;

until j2='0';

end;

procedure DemOpt;

var j1:char;

begin

repeat

PutA;

Ou('0-ex,1-Param,2-Diffs,3-Krs,4-Tis,5-Tds,6-Tvs,7-OptSt');

str(Krs:1:2,T10); Ts:='Krs='+T10;

str(Tis:1:2,T10); Ts:=Ts+', Tis='+T10;

str(Tds:1:2,T10); Ts:=Ts+', Tds='+T10;

str(Tvs:1:2,T10); Ts:=Ts+', Tvs='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Param;

'2': Diffs;

'3': Our('Krs',Krs);

'4': Our('Tis',Tis);

'5': Our('Tds',Tds);

'6': Our('Tvs',Tvs);

'7': OptSt;

end;

until j1='0';

end;

procedure Opt;

var J2: char;

begin

repeat

PutA;

Ou('0-Ex,1-Nastr,2-DemOpt,3-Service');

J2:=ReadKey;

case J2 of

'1': Nastr;

'2': DemOpt;

'3': Service;

end

until J2='0';

end;

end.

Page 255: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

254

Додаток 16. Програма СascOpt program СascOpt;

uses Crt,Graph,Serv,GromS;

const

D: real=50; Nk: integer=10;

Nc: integer=1; epsmax: real=5;

Nvr: integer=1; R: real=1;

Dk: real=0.05; Di: real=0.1;

Dd: real=0.1; Ks: integer=5;

Kr1: real=1; Kr2: real=1;

Ti1: real=10; Ti2: real=10;

Td1: real=0; Td2: real=0;

Kr1s: real=1; Kr2s: real=1;

Ti1s: real=10; Ti2s: real=10;

Td1s: real=0; Td2s: real=0;

dk1: integer=1; dk2: integer=1;

di1: integer=1; di2: integer=1;

dd1: integer=1; dd2: integer=1;

Tvs: char='Z'; {L}

var Pob: array[1..4,1..4] of real;

Mrs,Mht: array[1..4] of CoefL;

Hts: CoefL; B,A: Coef;

Nt:integer; dt,tkv,v0,e,eo:real;

procedure UmnPol(A,B:Coef; var C:Coef);

var s,z,na,nb,nc:integer;

begin

na:=round(A[-1]);

nb:=round(B[-1]); nc:=na+nb; C[-1]:=nc;

for s:=0 to nc do C[s]:=0;

for z:=0 to na do

for s:=0 to nb do C[z+s]:=C[z+s]+A[z]*B[s];

end;

procedure EilWpm(B,A:Coef; x0,x1,v0:real; var y:Coef);

var z,m,n:integer;

begin

m:=round(B[-1]); n:=round(A[-1]); Y[n+1]:=0;

for z:=m+1 to n do B[z]:=0;

for z:=1 to n do

y[z]:=y[z]+v0*(y[z+1]+B[n-z]*x0-A[n-z]*y[0]);

y[0]:=(y[1]+B[n]*x1)/A[n];

end;

procedure FormMht;

var u,z,s,n,zt:integer;

B,A,My:Coef; Ht:CoefL;

begin

dt:=D/L; v0:=Dt/Ks;

for u:=1 to 4 do

begin

Page 256: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

255

zt:=round(Pob[u,4]/Dt);

A[-1]:=0; A[0]:=1; B[-1]:=1;

B[0]:=1; B[1]:=Pob[u,2];

n:=round(Pob[u,3]);

for s:=1 to n do UmnPol(A,B,A);

B[-1]:=0; B[0]:=Pob[u,1];

for s:=0 to n do My[s]:=0;

for z:=0 to L do

if z<=zt

then Ht[z]:=0

else

begin

for s:=1 to Ks do

EilWpm(B,A,1,1,v0,My);

Ht[z]:=My[0];

end;

Ht[-1]:=L; Ht[L+1]:=dt; Mht[u]:=Ht;

end;

end;

procedure InpOb;

var j1: char; s:integer; y:real;

Rs,ht:CoefL; T2:string[2];

begin

repeat

puta;

Ou('0-ex,1-Nc,2-K,3-T,4-n,5-Tau,6-D,7-Ks,8-SC,9-h(t)');

str(Nc,T2); Ts:='Nc='+T2;

str(Pob[nc,1]:1:3,T10); Ts:=Ts+', K['+T2+']='+T10;

str(Pob[nc,2]:1:3,T10); Ts:=Ts+', T['+T2+']='+T10;

str(round(Pob[nc,3]),T10); Ts:=Ts+', n['+T2+']='+T10;

str(Pob[nc,4]:1:3,T10); Ts:=Ts+', Tau['+T2+']='+T10;

str(D:1:2,T10); Ts:=Ts+', D='+T10;

str(Ks,T10); Ts:=Ts+', Ks='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Oui('Nc',NC);

'2': Our('K['+T2+']',Pob[nc,1]);

'3': Our('T['+T2+']',Pob[nc,2]);

'4': Our('n['+T2+']',Pob[nc,3]);

'5': Our('Tau['+T2+']',Pob[nc,4]);

'6': Our('D',D);

'7': Oui('Ks',Ks);

'8': begin

FormMht; Ht:=Mht[nc];

Xmin:=0; Xmax:=D; Ymin:=0; Ymax:=Pob[nc,1];

if Ymax=0 then Ymax:=1;

X0Y0(false); ClearDevice;

SystCoor; Graphic(Ht,C);

end;

'9': begin

FormMht; Ht:=Mht[Nc]; Graphic(Ht,C);

end;

Page 257: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

256

end;

until j1='0';

end;

procedure Param;

var j2: char;

begin

repeat

puta;

Ou('0-ex,1-Nk,2-Nvr,3-R,4-D,5-Ks.6-Epsmax,7-Tvs,8-C');

str(Nk,T10); Ts:='Nk='+T10;

tkv:=Nk*dt;

str(tkv:1:3,T10); Ts:=Ts+'(tkv='+T10+')';

str(Nvr,T10); Ts:=Ts+', Nvr='+T10;

str(R:1:2,T10); Ts:=Ts+', R='+T10;

str(D:1:2,T10); Ts:=Ts+', D='+T10;

str(Ks,T10); Ts:=Ts+', Ks='+T10;

str(Epsmax:1:2,T10); Ts:=Ts+', Epsmax='+T10;

Ts:=Ts+', Tvs='+Tvs;

str(C,T10); Ts:=Ts+', C='+T10;

Info; j2:=ReadKey;

case j2 of

'1': Oui('Nk',Nk);

'2': Oui('Nvr',Nvr);

'3': Our('R',R);

'4': Our('D',D);

'5': Oui('Ks',Ks);

'6': Our('Epsmax',Epsmax);

'7': if Tvs='Z' then Tvs:='L' else Tvs:='Z';

'8': Oui('C',C);

end;

until j2='0';

end;

procedure FormHts;

var eps1,eps2,eps1p,eps2p,

integr1,integr2,x1,x2,y1,y2,f:real;

z,s,zd,La:integer; Ht1:CoefL;

begin

if Tvs='Z' then begin Zd:=1; La:=0; end

else begin Zd:=0; La:=1; end;

y1:=0; y2:=0; eps2:=Zd-y2; x2:=Kr2*eps2;

eps1:=x2-y1; x1:=Kr1*eps1;

Nt:=L div Nk; Hts[-1]:=Nt;

dt:=D/L; Tkv:=Nk*dt; Hts[Nt+1]:=Tkv;

for z:=1 to 4 do

begin

Mrs[z,0]:=Mht[z,0];

for s:=1 to Nt do

Mrs[z,s]:=Mht[z,s*Nk]-Mht[z,(s-1)*Nk];

end;

for s:=0 to Nt do

begin

Page 258: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

257

Ht1[s]:=Mrs[1,s]*x1+Mrs[3,s]*La;

Hts[s]:=Mrs[2,s]*x1+Mrs[4,s]*La;

end;

integr1:=0; integr2:=0; y1:=Ht1[0]; y2:=Hts[0];

if Nvr in [1..2] then e:=Zd else e:=0;

z:=1;

repeat

eps1p:=eps1; eps2p:=eps2; eps2:=Zd-y2;

integr2:=integr2+eps2*tkv;

x2:=Kr2*(eps2+integr2/Ti2+Td2*(eps2-eps2p)/tkv);

y1:=Ht1[z]; eps1:=x2-y1; integr1:=integr1+eps1*tkv;

x1:=Kr1*(eps1+integr1/Ti1+Td1*(eps1-eps1p)/tkv);

for s:=0 to Nt-z do

begin

Ht1[z+s]:=Ht1[z+s]+Mrs[1,s]*x1+Mrs[3,s]*La;

Hts[z+s]:=Hts[z+s]+Mrs[2,s]*x1+Mrs[4,s]*La;

end;

y2:=Hts[z];

if abs(y2)>epsmax

then e:=500

else

begin

case Tvs of

'Z': if eps2>=0 then f:=eps2*R else f:=eps2;

'L': if eps2<0 then f:=eps2*R else f:=eps2;

end;

case Nvr of

1: e:=e+abs(f);

2: e:=e+sqr(f);

3: e:=e+z/Nt*abs(f);

4: e:=e+z/Nt*sqr(f);

end;

end;

inc(z);

until (z>Nt) or (e>=500);

if e>=500 then

for s:=z to Nt do Hts[s]:=epsmax/2;

Hts[601]:=e*Tkv;

end;

procedure Grad(Hts:CoefL; C:integer);

var s,Nt:integer;

begin

Nt:=round(Hts[-1]); SetColor(C);

MoveTo(x0,y0-round(Hts[0]/dy));

for s:=1 to Nt do

LineTo(x0+s*Nk,y0-round(Hts[s]/dy));

Setcolor(15);

end;

procedure Nastr;

var j1:char;

begin

Page 259: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

258

repeat

puta;

Ou('0-ex,1-Param,2-Kr1,3-Ti1,4-Td1,5-Kr2,6-Ti2,7-Td2,

8-SC,9-h(t)');

str(Kr1:1:3,T10); Ts:='Kr1='+T10;

str(Ti1:1:3,T10); Ts:=Ts+',Ti1='+T10;

str(Td1:1:3,T10); Ts:=Ts+',Td1='+T10;

str(Kr2:1:3,T10); Ts:=Ts+',Kr2='+T10;

str(Ti2:1:3,T10); Ts:=Ts+',Ti2='+T10;

str(Td2:1:3,T10); Ts:=Ts+',Td2='+T10;

FormHts;

str(Hts[601]:1:1,T10); Ts:=Ts+'(e='+T10+')';

Info; j1:=ReadKey;

case j1 of

'1': begin Param; FormMht; end;

'2': Our('Kr1',Kr1);

'3': Our('Ti1',Ti1);

'4': Our('Td1',Td1);

'5': Our('Kr2',Kr2);

'6': Our('Ti2',Ti2);

'7': Our('Td2',Td2);

'8': begin

FormHts;

Xmin:=0; Xmax:=D; Ymin:=0;

if Tvs='Z' then Ymax:=1.5

else

begin

Ymax:=epsmax;

Ymin:=-0.5*epsmax;

end;

X0Y0(false); ClearDevice; SystCoor;

if Tvs='Z' then

Line(x0,y0-round(1/dy),x0+L,y0-round(1/dy));

Grad(Hts,C);

end;

'9': begin

FormHts; Grad(Hts,C);

end;

end;

until j1='0';

end;

procedure Opt6;

var z1,s1,v1,z2,s2,v2,w:integer;

j2:char; f,out:boolean;

dk1o,di1o,dd1o,dk2o,di2o,dd2o,e,

kr1c,ti1c,td1c,kr2c,ti2c,td2c,

kr1o,ti1o,td1o,kr2o,ti2o,td2o:real;

label stop;

begin

kr1:=kr1s; ti1:=ti1s; td1:=td1s;

kr2:=kr2s; ti2:=ti2s; td2:=td2s;

FormHts; e:=Hts[601];

Page 260: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

259

kr1o:=kr1; ti1o:=ti1; td1o:=td1;

kr2o:=kr2; ti2o:=ti2; td2o:=td2;

out:=false; eo:=e; w:=1; j2:='1'; puta;

Ou('0-ex'); Clear(500,45,630,55);

repeat

kr1c:=kr1o; ti1c:=ti1o; td1c:=td1o;

kr2c:=kr2o; ti2c:=ti2o; td2c:=td2o;

f:=false; z1:=-dk1;

repeat

kr1:=kr1c+z1*dk; s1:=-di1;

repeat

ti1:=ti1c+s1*di; v1:=-dd1;

repeat

td1:=td1c+v1*dd; z2:=-dk2;

repeat

kr2:=kr2c+z2*dk; s2:=-di2;

repeat

ti2:=ti2c+s2*di; v2:=-dd2;

repeat

td2:=td2c+v2*dd; FormHts;

e:=Hts[601]; inc(w); str(w,T10);

Clear(550,30,630,40);

OutTextXY(550,30,'w='+T10);

if KeyPressed then j2:=Readkey;

if j2='0' then out:=true;

if j2='0' then goto stop;

if e<eo then

begin

eo:=e; f:=true;

kr1o:=kr1; ti1o:=ti1; td1o:=td1;

kr2o:=kr2; ti2o:=ti2; td2o:=td2;

dk1o:=z1*dk; di1o:=s1*di; dd1o:=v1*dd;

dk2o:=z2*dk; di2o:=s2*di; dd2o:=v2*dd;

end;

inc(v2);

until (v2>dd2) or out;

inc(s2);

until (s2>di2) or out;

inc(z2);

until (z2>dk2) or out;

inc(v1);

until (v1>dd1) or out;

inc(s1);

until (s1>di1) or out;

inc(z1);

until (z1>dk1) or out;

kr1:=kr1o; ti1:=ti1o; td1:=td1o;

kr2:=kr2o; ti2:=ti2o; td2:=td2o;

if f then

repeat

kr1:=kr1+dk1o; ti1:=ti1+di1o; td1:=td1+dd1o;

kr2:=kr2+dk2o; ti2:=ti2+di2o; td2:=td2+dd2o;

FormHts; e:=Hts[601]; inc(w); str(w,T10);

Page 261: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

260

Clear(550,30,630,40); OutTextXY(550,30,'w='+T10);

if e<eo then

begin

eo:=e;

kr1o:=kr1; ti1o:=ti1; td1o:=td1;

kr2o:=kr2; ti2o:=ti2; td2o:=td2;

end;

until e>eo;

until (f=false) or out;

stop:

kr1:=kr1o; ti1:=ti1o; td1:=td1o;

kr2:=kr2o; ti2:=ti2o; td2:=td2o;

Clear(500,45,630,55); OutTextXY(500,45,'Ok! Press Enter');

j2:=ReadKey;

end;

procedure Diffs;

var j3:char;

begin

repeat

puta;

Ou('0-ex,1-dk1,2-di1,3-dd1,4-dk2,5-di2,6-dd2,7-dk,

8-di,9-dd');

str(dk1,T10); Ts:='dk1='+T10;

str(di1,T10); Ts:=Ts+', di1='+T10;

str(dd1,T10); Ts:=Ts+', dd1='+T10;

str(dk2,T10); Ts:=Ts+', dk2='+T10;

str(di2,T10); Ts:=Ts+', di2='+T10;

str(dd2,T10); Ts:=Ts+', dd2='+T10;

str(Dk:1:3,T10); Ts:=Ts+', Dk='+T10;

str(Di:1:3,T10); Ts:=Ts+', Di='+T10;

str(Dd:1:3,T10); Ts:=Ts+', Dd='+T10;

Info; j3:=ReadKey;

case j3 of

'1': if dk1=1 then dk1:=0 else dk1:=1;

'2': if di1=1 then di1:=0 else di1:=1;

'3': if dd1=1 then dd1:=0 else dd1:=1;

'4': if dk2=1 then dk2:=0 else dk2:=1;

'5': if di2=1 then di2:=0 else di2:=1;

'6': if dd2=1 then dd2:=0 else dd2:=1;

'7': Our('Dk',Dk);

'8': Our('Di',Di);

'9': Our('Dd',Dd);

end;

until j3='0';

end;

procedure Dem6;

var j1:char;

begin

kr1s:=kr1; ti1s:=ti1; td1s:=td1;

kr2s:=kr2; ti2s:=ti2; td2s:=td2;

repeat

Page 262: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

261

puta;

Ou('0-ex,1-Par,2-Dif,3-Kr1s,4-Ti1s,5-Td1s,6-Kr2s,7-Ti2s,

8-Td2s,9-Opt');

str(Kr1s:1:3,T10); Ts:='Kr1s='+T10;

str(Ti1s:1:3,T10); Ts:=Ts+',Ti1s='+T10;

str(Td1s:1:3,T10); Ts:=Ts+',Td1s='+T10;

str(Kr2s:1:3,T10); Ts:=Ts+',Kr2s='+T10;

str(Ti2s:1:3,T10); Ts:=Ts+',Ti2s='+T10;

str(Td2s:1:3,T10); Ts:=Ts+',Td2s='+T10;

Info; j1:=ReadKey;

case j1 of

'1': Param;

'2': Diffs;

'3': Our('Kr1s',Kr1s);

'4': Our('Ti1s',Ti1s);

'5': Our('Td1s',Td1s);

'6': Our('Kr2s',Kr2s);

'7': Our('Ti2s',Ti2s);

'8': Our('Td2s',Td2s);

'9': Opt6;

end;

until j1='0';

end;

begin

Pob[1,1]:=0.1; Pob[1,2]:=5; Pob[1,3]:=1; Pob[1,4]:=0;

Pob[2,1]:=1; Pob[2,2]:=5; Pob[2,3]:=2; Pob[2,4]:=4;

Pob[3,1]:=0.1; Pob[3,2]:=5; Pob[3,3]:=1; Pob[3,4]:=0;

Pob[4,1]:=1; Pob[4,2]:=5; Pob[4,3]:=2; Pob[4,4]:=4;

repeat

puta;

Ou('Esc-ex, 1-InpOb, 2-Nastr, 3-Dem6, 4-Groms');

j:=ReadKey;

case j of

'1': InpOb;

'2': Nastr;

'3': Dem6;

'4': Service;

end;

until j=#27;

CloseGraph;

end.

Page 263: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний

262

Наукове видання

ГОЛІНКО Ігор Михайлович

КУБРАК Анатолій Іванович

Моделювання та оптимізація

систем керування

Монографія

За редакцією авторів

Дизайн та верстка Н.Л. Москаленко

Підписано до друку 17.09.2012р. Формат 60х84 1/16.

Папір офсетний. Гарнітура Times.

Друк офсетний. Умов.-друк.-арк. 14.88. Наклад 350. Зам. 881

ПП Буйницький

32300, Хмельницька обл., м. Кам`янець-Подільський,

вул. Лесі Українки , 31/308, тел. (03849) 3-63-54

Свідоцтво про внесення до Державного реєстру

від 28.04.2006 р. серія ДК №2477

Page 264: conislab.netconislab.net/files/modeling/golinko_2012_262.pdf · 2 УДК 519.6 ББК 22.18 Г 60 Рецензенти: Ладанюк А.П., д.т.н., проф. (Національний