Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
164
Добавлен:
26.05.2014
Размер:
352.77 Кб
Скачать
    1. Как генерировать текст программ

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

Так, например, создав модель хорошего регулятора для Вашего объекта, Вы захотите написать программу этого регулятора на ассемблере микропроцессора управляющего устройства. Математический расчет этого регулятора Вы можете получить по средствам пакета "Анализ систем". Вам останется лишь написать часть программы, работающей непосредственно с аппаратурой (чтение датчиков и выдача управляющего воздействия).

На данный момент пакет может генерировать текст на следующих языках программирования:

  • Pascal (Delphi)

  • C++

  • QBasic

  • Assembler для семейства микропроцессоров Intel8086

  • Assembler для семейства микропроцессоров Intel8051

  • Assembler для семейства микропроцессоров Intel8096

Для удобства к пакету "Анализ систем" прилагаются примеры программ и необходимые библиотеки для создания программ. (см. Каталог "PROG")

Перед генерацией текста программы следует отметить контрольными точками участок системы, программу которого следует сгенерировать.

Для генерации текста программы следует выбрать пункт меню "Синтез | Генерация программы". Если в собранной схеме системы нет ошибок, то откроется окно "Генерация текста программы". В этом окне следует выбрать язык, на котором следует сгенерировать текст программы, а также контур схемы, программа которого будет генерироваться.

Для всех языков, кроме QBasic, генерируется не основная программа, а лишь библиотека, включающая функции инициализации регулятора и расчета одного шага итерации. Это позволяет "безболезненно" (не затрагивая написанную пользователем основную программу) перегенерировать текст регулятора в случае необходимости.

Некоторые языки программирования имеют дополнительные параметры. Более подробно о них см. окно "Генерации текста программы".

Следует отметить, что не для всех блоков возможна генерация программы. Ниже приведен список блоков с пометкой о возможности генерации текста программы:

Блок

возможность

Генератор постоянного сигнала

+

Все остальные генераторы

-

Положительный сумматор, отрицательные сумматоры и перемножитель

+

Звено задержки

-

Все остальные линейные звенья

+

Нелинейность пользователя

-

Квантователь

-

Все остальные нелинейности

+

Все импульсные (АИМ, ШИМ, ЧИМ)

-

Делитель

+

min, max

+

Все остальные математические

-

Все макросы

+

Ждущий мультивибратор

+

Все остальные "прочие"

-

Особенности применения различных языков

Язык Turbo Pascal.

Текст, сгенерированный для данного языка программирования представляет собой модуль (unit), текст которого можно использовать как в Turbo Pascal'е, так и в Delphi. Правда, следует отметить, что комментарий в модуле пишется в кодировке DOS, и в Delphi под Windows вместо русских букв Вы увидите специальные символы. Но это, естественно, никак не повлияет на компиляцию программы.

Пример использования сгенерированного модуля для Turbo Pascal находится в подкаталоге \PROG\PASCAL (читай readme.txt из этого подкаталога).

Язык С

Для языка C генерируется текст объектной библиотеки. Все комментарии пишутся в кодировке для DOS.

Пример использования сгенерированного модуля для языка C находится в подкаталоге \PROG\C (читай readme.txt из этого подкаталога).

Язык QBasic

Язык QBasic не поддерживает многофайловой организации программы. Поэтому для этого языка генерируется текст программы регулятора с заготовленным "скелетом" программы. Следует понимать, что перегенерация текста программы для этого языка в тот же файл снова запишет пустой "скелет" программы, уничтожив старый файл.

Язык ассемблер 8086

При выборе данного языка в окне "Генерация текста программ" появляется флажок "80386 и выше". Этот флажок разрешает или запрещает генерацию 32-битных инструкций. Кстати не стоит их бояться, если у Вас 16-битное приложение.

Код программы ориентирован на использование математического сопроцессора 80x87. Без сопроцессора код работать не будет.

Сгенерированный текст программы представляет собой объектную библиотеку, способную "линковаться" с Pascal, C, и ассемблером.

Т.к. написание программ на "чистом" ассемблере не практикуется, примеры использования разбиты на 3 группы:

  1. ассемблер для Turbo Pascal (подкаталог \PROG\ASM86\ASM_PAS);

  2. ассемблер для C++ (подкаталог \PROG\ASM86\ASM_C);

  3. "чистый" ассемблер (подкаталог \PROG\ASM86\ASM_ASM).

(Читай readme.txt из выбранного подкаталога).

Во всех случаях, созданную библиотеку следует скомпилировать в OBJ-файл, а затем подключить в выбранном языке программирования.

Язык ассемблер 8051

При выборе данного языка в окне "Генерация текста программ" появляется строка редактора адреса "Адрес в IRAM блока переменных". Здесь следует ввести адрес начала свободной памяти во внутренней RAM для размещения локальных переменных регулятора. Блок переменных должен располагаться в памяти с адресами 08h..7Fh. При использовании монитора нижнего уровня fml, этот адрес 64h.

Сгенерированный текст представляет из себя вставку, включаемую в основную программу директивой .INCLUDE, далее по тексту будем называть эту вставку библиотекой.

Кроме данной библиотеки основная программа должны включать в себя библиотеку арифметических операций с фиксированной запятой (MathFIX.a51). Данная библиотека предоставляет возможность работы с дробными 24-битными числами (8 бит - целая часть, 16 бит - дробная часть).

Пример использования сгенерированной библиотеки, а также текст библиотеки MaxFIX.a51 находятся в подкаталоге \PROG\ASM51 (читай readme.txt из данного подкаталога).

Тексты программ ориентированы на компиляцию пакетом X8051. Если же Ваш ассемблер несовместим с данным, то скорректируйте директивы компилятору так, как это требует Вам ассемблер.

Язык ассемблер 8096.

При выборе данного языка в окне "Генерация текста программ" появляется строка редактора адреса "Адрес в RRAM блока переменных". Здесь следует ввести адрес начала неиспользуемой памяти с адресами 18h..0FFFFh для хранения локальных переменных библиотеки. По умолчанию этот адрес 34h.

Сгенерированный текст программы представляет из себя вставку, вставляемую в основную программу директивой .include. В дальнейшем, данную вставку будем называть библиотекой.

В главную программу следует включить файл адресов регистров regs.inc, а также библиотеку функций с фиксированной запятой (MathFIX.a96). Данная библиотека предоставляет возможность работы с дробными 32-битными числами (16 бит - целая часть, 16 бит - дробная часть).

Пример использования сгенерированной библиотеки, а также библиотеки MathFIX.a96 и вставки regs.inc находятся в подкаталоге \PROG\ASM96 (читай readme.txt из данного подкаталога).

Кроме того, в подкаталоге \PROG\ASM96\SIM находится паскалевская библиотека с эмулятором микропроцессора MCS96. На этом эмуляторе эмитируется процесс управления электродвигателем постоянного тока с помощью микропроцессора MCS96. Программа, загружаемая в микропроцессор, представляет собой ПИД-регулятор, созданный средствами пакета "Анализ систем".

Для компиляции используйте пакет ASM96. Если Ваш ассемблер несовместим с этим пакетом, то Вам следует исправить некоторые директивы компилятору.

Соседние файлы в папке Программный комплекс Анализ систем 3.1