Демо версия универсальной платформы для систем сбора и обработки данных. Это ПО работает в соответствии с парадигмой "виртуальных приборов", которые соединяются между собой, подобно тому, как собирается измерительный комплекс из реальных приборов. Виртуальные устройства обмениваются сигналами через соединения. У каждого устройства есть входные и/или выходные контакты, через которые производится обмен данными. Соединённые между собой устройства образуют измерительную схему. При первом запуске демо labATE.exe будет открыта пустая схема. Можно перетащить из палитры слева любые устройства на поле схемы, находящееся справа от палитры. При перетаскивании устройства, открывается его окно на экране. Если устройство перетащить обратно в палитру, окно устройства закроется. Двойной клик на изображение устройства на схеме открывает окно соединений устройства. Сначала видны контакты самого устройства. Клик на контакт выбирает его. В окне появятся подходящие контакты других устройств на схеме, с которыми можно соединить выбранный. Можно установить флажки возле нужных контактов, и нажать ОК. Контакты будут соединены. Если они были соединены ранее, и флажки уже установлены, можно их снять, и нажать ОК. Контакты будут разъединены. Таким образом можно создавать необходимые схемы. В идеологии платформы заложен контроль допустимости соединений, она задается сигнатурами в исходных текстах самих устройств. Если сигнатуры контактов будут различны, то такие контакты соединить будет невозможно, поскольку их не будет в списке. Чтобы получить интересный пример, демонстрирующий некоторые возможности системы, надо после её первого запуска сделать следующее: - Сначала выйти из программы. Выход производится просто закрытием окна редактора схемы. Все остальные окна будут закрыты автоматически. В идеологии платформы заложено асинхронное завершение работы отдельных модулей системы.
- После того, как все окна исчезнут с экрана, надо зайти в каталог plugins и скопировать в нем файл виртуального генератора SimpleGenerator.dll. Имя файла копии не имеет значения. Система работает с внутренними именами устройств, имена файлов для неё не важны. Можно создавать необходимое количество копий драйверов — система загрузит столько копий, сколько допустимо для каждого типа драйверов. Допустимое количество указано в коде драйвера.
- После того, как файл генератора скопирован, надо снова запустить labATE.exe. После открытия окна редактора схемы можно увидеть, что в палитре слева теперь есть 2 копии простого генератора. Можно перетащить обе копии на поле схемы. Откроются 2 окна генератора, одно над другим. Можно расположить их на экране так, чтобы было удобно. После этого, перетащить на схему осциллограф. Откроется его окно, его тоже можно удобно расположить на экране. Наконец, перетащить на схему из палитры виртуальное устройство под названием «Ci управление простым генератором». У него нет своего окна на экране.
- Теперь можно соединить устройства на схеме. Двойной клик на изображение виртуального устройства «Ci управление простым генератором» откроет окно его соединений. Надо соединить выход «Установка частоты» с одноименным входом устройства «Простой генератор.0». Аналогично соединить другие выходы управления генератором с соответствующими входами самого генератора. После чего соединить у генератора выход «Сигнал» со входом Y осциллографа. Затем у второго генератора, который на схеме обозначен, как «Простой генератор.1», соединить выход «Сигнал» со входом X осциллографа. Наконец, выход осциллографа, который обозначен, как «Вкл/Выкл», соединить с одноименными входами генераторов, обоих одновременно. Это позволит включать генераторы одновременно с осциллографом. Если этого не сделать, что тоже допустимо, то генераторы придется включать по отдельности.
- После того, как соединения выполнены, можно включить схему. Для этого надо включить осциллограф, он подаст команду включения генераторам. Можно видеть, как у генераторов положение движка Вкл-Выкл меняется синхронно с его положением у осциллографа. Если соответствующее соединение в предыдущем пункте не было выполнено, то или оба, или один из генераторов не включится.
- Когда схема включена, можно настроить генераторы. Сначала настроим генератор развертки. На приборе «Простой генератор.1» необходимо установить движок формы сигнала в положение «Пила», он будет задавать «напряжение» развертки осциллографа по оси X. Изменяя параметр «Смещение» можно заставить осциллограф отображать сигнал, начиная с любой точки по горизонтали. Если установить значение -250, то отображение сигнала будет начинаться с крайней левой границы экрана. Чтобы изображение сигнала занимало весь экран, необходимо установить значение 500 у амплитуды. Частоту развертки установим 50, фаза 0. Теперь можно менять настройки генератора сигнала, который подключен к «пластинам» Y осциллографа. Можно переключать его форму, менять частоту, амплитуду, фазу и смещение — изменения будут немедленно видны на экране осциллографа. Можно выключить схему и включить снова. Можно выключить отдельно любой генератор, и включить снова. Можно даже разорвать в редакторе сцены какие-то соединения, и установить их снова. Что существенно — все виртуальные приборы работают асинхронно. В каждом из генераторов работает параллельный поток кода, который заполняет буфер устройства, как если бы он заполнялся по прерываниям от физического модуля генератора. В осциллографе также работает параллельный поток, который получает заполненные генераторами буферные зоны, и использует значения, как если бы напряжение подавалось на отклоняющие пластины простейшего осциллографа. Включим у генераторов одинаковый сигнал — синусоида, частота 50, амплитуда 150, смещение 0. Но у генератора 0 пусть фаза будет 0, а у генератора 1 фаза 90. На экране осциллографа изображена окружность, являющаяся фигурой Лиссажу. Теперь, меняя параметры сигналов, можно менять вид этой фигуры.
Теперь можно посмотреть, как работает программное управление. Сначала схему и настройки генераторов необходимо восстановить, как после первого создания. Затем надо перейти в окно Ci Source. Это редактор исходных текстов программ на языке Ci. В закладке «Программы» двойным кликом на имени gencontrol открыть программу управления генератором. Нажать кнопку «Отладка». В окно ниже текста программы будет выдано сообщение «Ошибка: Переменная не найдена ИЛИ отсутствует ; у предыдущей операции ИЛИ вызов операции без скобок ()». Это намеренно внесенная ошибка. Курсор в тексте установлен на место ошибки, и ошибочный код подчеркнут. Надо удалить символ «a» перед числом 1000 и нажать кнопку «Отладка» снова. В окне внизу появится текст «Нет ошибки». Это значит, что программа оттранслирована и передана в отладчик «Синтез». Надо переключиться в окно отладчика. В нём виден код программы, готовый для выполнения и отладки. Можно запустить его на выполнение, нажатием зеленой кнопки со стрелкой. Или можно запустить его трассировку, нажатием оранжевой кнопки со стрелкой — в таком случае, программа будет выполняться с пошаговыми паузами и установкой курсора на текущую выполняемую операцию. Код содержит бесконечный цикл, поэтому можно запустить его, и перейти к окнам осциллографа и генераторов. В окне осциллографа можно включить схему. В окне «Простой генератор.0» видно, как программа меняет режимы работы генератора, и это отражается на сигнале в окне осциллографа. Если переключиться в окно Console, то видно, как программа выдает в виде чисел устанавливаемые значения. Программа выполняется также в отдельном асинхронном потоке. В любой момент времени можно переключать её выполнение между режимом с трассировкой и режимом без трассировки. Можно остановить выполнение нажатием красной кнопки с белой полоской. Остальные кнопки предназначены для пошагового прохождения по коду программы, с возможностью просматривать и изменять значения переменных. Они становятся доступны, если в программе установить точку останова и выполнить код до неё. Для установки точки останова надо установить курсор на имя требуемой операции, например delay, нажать правую кнопку мыши, и в появившемся меню выбрать пункт «Точка останова». Имя операции подсветится красным. Если теперь запустить программу, она выполнится до этой точки и остановится. Далее можно проходить её пошагово в различных режимах. Подробное описание не входит в рамки данной демонстрации. При завершении работы программы последняя загруженная схема запоминается в настройках и будет автоматически открыта при последующем запуске. Если, при этом, драйвер какого-либо устройства, используемого в схеме, не будет обнаружен или загружен из-за ошибки, то будет выдано сообщение, и схема целиком загружена не будет. Несколько слов о языке Ci. Этот язык был разработан специально для использования «непрограммистами». Его основное назначение — дать радио инженерам, не имеющим подготовки профессионального программиста, инструмент, с помощью которого они могли бы создавать «программы контроля» или «тест программы». Как показал многолетний опыт, если для этого привлекается профессиональный программист, то решение задачи затягивается, поскольку коммуникация между радио инженером и профессиональным программистом налаживается очень сложно. Язык Ci разработан по тем же принципам, по которым для средней школы создан язык ЛОГО. Они очень похожи, различия небольшие. Но Ci мощнее, на нем можно писать сложные программы, объемом в несколько тысяч строк. При этом, он более удобен и развит, по сравнению с языком Basic. У программ на Basic трудность модификации растет экспоненциально с ростом их объема. Язык Ci свободен от этого. Им может успешно пользоваться как начинающий разработчик, так и опытный. Отладчик «Синтез» позволяет не только отлаживать программы, но и создавать их. Если программа не запущена на выполнение, то её можно модифицировать. При этом редактирование производится не обычным способом, который еще до конца не разработан. Поэтому подробное описание пока не приводится. В поставляемой системе возможность редактирования можно отключить. У реализации языка Ci имеется несколько особенностей. Этот язык - легко расширяется, состав операций и типов данных можно расширять, для этого необходимо создавать дополнительные динамически загружаемые библиотеки, которые автоматически используются и редактором, и отладчиком, и которые могут содержать практически любые функции и типы данных, требуемые для конкретной задачи
- позволяет легко переводить программы на иностранные языки, строковые сообщения программы для этого сохраняются в отдельный текстовый файл, содержимое которого переводится
- является платформенно независимым, то есть, программа оттранслированная на платформе, например x86/Windows, может выполняться на платформе ARM/Linux
- достаточно быстр, программа на Ci выполняется на его виртуальной машине примерно в 20 раз медленнее, чем написанная на языке C, и оттранслированная в родной машинный код
- очень компактен, объем виртуальной машины с базовой библиотекой поддержки (более 120 операций и 6 основных типов данных) составляет всего лишь несколько десятков килобайт.
(
написано 22.01.2012,
опубликовано 22.01.2012)
|