СТАНДАРТНАЯ И РАБОЧАЯ ЧАСТИ АЛГОРИТМА
С целью устранения указанного выше недостатка применяется структурная схема алгоритма, состоящая из двух частей: стандартной и рабочей. Первая часть (стандартная) интерпретирует вы- |
числительный алгоритм, который не зависит от вида н коэффициентов уравнений, описывающих динамику системы автоматического управления. Вторая часть (рабочая) содержит запись в определенной форме уравнений, описывающих динамику системы, и их коэффициентов. Таким образом, при изменении условий задачи нли самой задачи изменяется лишь рабочая часть программы, что значительно упрощает трудоемкий процесс программирования.
Рис 10-31 |
Следует заметить, что в математическом обеспечении ЦВМ другие численные методы интегрирования входят также в виде стандартных программ, имеющн х обращение к рабочей подпрограмме, в которую пользователь записывает все исходные данные решаемой задачи.
Структурная схема алгоритма последовательного типа с итерациями (для двух итераций), представленная в виде стандартной программы, приведена на рис. 10-30. Общий вид рабочей Лодпрограммы F [Z] изображен на рис. 10-31.
*
На ухазанных структурных схемах приняты следующие обозначения - J — идентификатор переменной состояния, U — идентификатор входного воздействия <(/{/), Т — время, DT — шаг интегрирования, Z — идентификатор переменной J в рабочей подпрограмме, X [J] — идентификатор массива текущих значений перемеиных {J = і, 2, 3, . ,, N), N — порядок системы; Y {J] — идеи - - тификатор массива значений переменных в начале шага интегрирования или что то же, в конце предыдущего шага; ft [J] — идентификатор массива значении приращений переменных за шаг интегрирования для первой итерации; М [У| —■ Идентификатор массива значении приращений переменных за шаг интегрирования ддя второй итерации, F 17] — идентификатор обращения к рабочей подпрограмме, DX [yj — идентификатор стандартной программы массива текущих значений правых частей дифференциальных уравнении, вычисленных в соответствии с формулами (10-24) и (10-26), F [Z] — идентификатор рабочей подпрограммы массива текущих значений правых частей дифференциальных уравнений, вычисленных в соответствии с формулами (ДО-24) и (10-26).
Правые части дифференциальных уравнений в рабочей подпрограмме записываются следующим образом* после условного оператора Z = 1 записывается равзя часть первого уравнения, после условного оператора Z = 2 записывается раеая часть второго уравнения и т. д.
у Вычислительная процедура по алгоритмам стандартной и рабочей программ 1стРУктурные схемы рис. 10-30 и 10-31) сосюит в следующем. ч *• Оператор 2 присваивает начальное времи счета Г — 0 и начальное зма - Ие индексной переменной «/ = 1.
Чал 0пеР^оры 3 и 4 организуют^цикл присвоения всем переменным их парных значений (при нулевых начальных условиях — нули).
3. Оператор 5 обеспечивает вывод текущих значений времени Т, входного воздействия U, массива К [Л. •
4. Операторы 7 и 8 организуют цикл присвоения идентификатору массива текущих значений переменных X идентификатора массива начальных условий на данном шаге интегрирования Y J
5 Оператор 9 обеспечивает присвоение индексной переменной значения / = I.
6. Оператор 10 реализует обращение к рабочей подпрограмме F [Z].
7. В рабочей подпрограмме проверяется логическое условие равенства ии - дексной переменной (оператор 24, рис. 10-31).
8. Если условие Z = 1 выполняется, то вычисляется функция Fill. т. е. правая часть дифференциального уравнения, записанного первым (опера." тор 25)
9. Происходит возврат к стандартной программе, где оператор 11 обеспечивает вычисление приращения /С [ 13 переменной Х[1] за шаг интегрирования, промежуточного значения X [I]. нового значения индексной переменной j = / + I.
10 В логическом операторе 12 провернется выполнение условия J ^ у. Если это условие выполняется, то осуществляется возврат и оператору 10, т. е. вновь происходит обращение к подпрограмме F [2
11. В рабочей подпрограмме снова проверяется логическое условие равенства индексной переменной (оператор 24). Так как это условие не выполняется, поскольку теперь Z ф 1,ю происходит переход к оператору 26, где вновь происходит проверка логического условия равенства индексной переменной
12. Поскольку условие 2=2 выполняется, то происходит переход к оператору 27, с помощью которого вычисляется функция F [2], т. е. правая часть дифференциального уравнения, записанного вторым. Прн этом в рассматриваемом уравнении для переменных с индексной переменной Z <| 2 берутся их численные значения, полчченпые как промежуточные значения (оператор 11). Для переменных с индексной переменной Z~5; 2 берутся начальные условия для рассматриваемого шага интегрирования, т. е. У (/]. В общем случае для индексной переменной J — m проверяется условие Z = т. Если это условие выполняется, то вычисляется функция F [т], причем для индексных переменных с индексом Z < т берутся значения* полученные как промежуточные (оператор //), а для переменных офиндексной переменной Z^m берется начальные условия рассматриваемого шага интегрирования.
13 Оператор 13 по окончании цикла вычислений в первом приближении (первая итерация — операторы 9—12) обеспечивает присвоение индексной переменной значения J = 1
14. Оператор 14 реализует обращение к рабочей подпрограмме F [Z.
15. В рабочей подпрограмме с помощью операторов 24, 25, 26, 27 и т. д. осуществляется цикл вычислений последовательных значений функции F Z аналогично описанному выше для первой итерации. Причем, ссли / = т, то Для переменных с индексной переменной Z<| т берется их'промежуточные значения вюрого приближения, полученные с помощью оператора 15, а для переменных с индексной переменной Z ^ т берутся промежуточные значения первого приближения, вычисленные с помощью оператора 11.
16. Происходит возврат к стандартной программе, где оператор 15 обеспечивает цикл вычислений второй итерации приращений /И [/1 переменной X [Л за шаг интегрирования, промежуточных значений второго приближения X [Л. нового значения индексной переменной /= J + 1,
17. В логическом операторе 16 проверяется выполнение условия J. Если это условие выполняется, то осуществляется возврат к оператору И, т. е. происходит зациклевание программы вычислений второго приближения, а при несоблюдении условия — переход к дальнейшей программе.
18. Оператор 17 по окончании циклической программы вычислений второго приближения обеспечивает присвоение индексной переменной значения J = *•
19. Операторы 18 и 19 обеспечивают циклическую программу вычислении абсолютных значений второго приближения переменной Y (У] в конце шага интегрирования.
хг |
к р |
ft* |
h. |
ТіР+1 |
Тгр+і |
20, В операторе 20 вычисляются новые текущие значения переменной Т м прибавления к предыдущему ее значению нового шага интегрирования DT. 21 Логический оператор 21 проверяет выполиенне условия Т ^ Тк. Если ловие выполняется, т. е. расчет окончен, то происходит переход к операторам и «Конец». Если же это условие не выполняется, то осуществляется переход лпеоатору 5 и расчет повторяется на следующих шагах интегрирования до выполнения условия Т 7V Структурные схемы и словесное описание алгоритмов стандартной программы (рис. 10-30) и рабочей подпрограммы (рис. 10-31) позволяют на проблемно-ориентированном языке написать программу расчета для любой ЦВМ. При этом стандартная часть программы ие вызывает никаких |
трудностей при записи ее на любом алгоритмическом язы - Что касается рабочей |
ке- |
Ш |
Рис, 10-32 |
подпрограммы, то от правильности ее записи существенно зависят результаты расчета.
Ниже иа примере простейшей системы регулирования третьего порядка, структурная схема которой приведена иа рис. 10-32, иллюстрируется порядок составления рабочей подпрограммы.
Рис. 10-33 |
Динамика рассматриваемой системы определяется следующей системой уравнений:
(10-28) |
і£ї. = kx {и - ба*,); ^- = ^(k3x1-x2);
Структурная схема алгоритма рабочей подпрограммы, состав - ЛеНная для рассматриваемого примера в соответствии с алгорит - Момі описанным выше, приведена иа рис. 10-33.