Идея создания программы подобного типа назревала у меня давно. Особенно остро я почувствовал потребность в ней, когда разрабатывал систему Emw, где мне пришлось писать алгоритм фазовой автоподстройки частоты для микроконтроллера. Сложность состояла в том, что требовалось не только учесть особенности микроконтроллера и его аппаратные ограничения, но также прогнозировать характеристики переходного процесса регулирования и влияние различных помех. Структура программы вырисовывась так - хотелось бы иметь программируемый генератор сигналов любой формы, собственно блок описания алгоритма и осциллограф, на котором можно посмотреть результаты работы алгоритма применительно к заданному входному сигналу. В принципе, эту задачу можно было бы решать, использую такие универсальные программы как Mathcad, но там мне бы пришлось обходить трудности, связанные визуализацией результатов длительных переходных процессов, поэтому я решил создать специализированную программу, тем более, что реализация представлялась мне весьма несложной. Такова история создания SigSim.
Программа SigSim предназначена для моделирования сигналов и алгоритмов их обработки (фильтрации). Основное ее назначение - создание и отладка алгоритмов обработки сигналов для микроконтроллеров с учетом разрядности и скорости аналогоцифровых преобразователей, разрядности и возможностей микроконтроллеров. Программа включает две подсистемы.
Используется для написания и компиляции алгоритмов на языке Object Pascal (язык, используемый в Delphi)
Используется для наблюдения результатов моделирования
Для моделирования в программе SigSim нужно выполнить следующие действия:
Структура системы выглядит так:
где: Si - входное воздействие, зависящее от времени. Кроме этого, воздействие Si может зависеть от других воздействий. Fi - функционал, вырабатываемый блоком обработки. Функционал может зависеть от одного, нескольких или всех входных воздействий и от времени. Кроме того, функционал Fi может зависеть от других функционалов.
Программа SigSim позволяет определить алгоритмы формирования всех сигналов: как входных воздействий, так и функционалов. Алгоритмы записывается на языке Object Pascal. Каждый сигнал определяется как объект, непоследственно наследуемый от TObject. Минимальный объект должен содержать переменную Value и процедуру Make, которая принимает один аргумент - текущее значение времени и устанавливает значение Value, равное значению сигнала для текущего момента времени. Кроме обязательных Value и Make, объект может содержать собственные локальные данные и методы.
На основе классов-алгоритмов SigSim синтезирует текстовый файл - законченный программный модуль и вызывает компилятор языка Object Pascal. Готовая DLL динамически загружается программой SigSim, после чего запускается главная функция DLL, создающая все объекты-сигналы и организующая процесс вызова функций Make. Результатом работы DLL является заполненный массив значений всех сигналов, который визуализируется в многолучевом осциллографе. Подробности о использовании компилятора можно посмотреть в работе Использование компилятора Delphi (dcc32.exe) в прикладных программах.
sigsim.zip - Программа SigSim (447K).
Архив содержит полнофункциональную свободно распространяемую программу SigSim версии 1.13.
Для установки программы нужно: