Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: На чем сделать компьютерную тест-систему для цифрового контроллера?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
syoma
Привет всем.

В общем уже давно стоит задача разработки автоматизированной тест-системы на базе PC для контроллера.
То есть есть система управления на основе контроллера, которая имеет до 100 цифровых входов и 100 цифровых выходов. Контроллер исполняет различные алгоритмы.
Задача состоит в том, чтобы с помощью компа сосздать виртуальное окружение для контроллера, чтобы он "думал" что управляет реальным объектом.
Плюс нужна хорошая визуализация, чтобы человек мог видеть, что происходит на экране монитора и мог если что нажать пару "виртуальных" кнопок и посмотреть, что будет.

По железу вопросов нет - я уже взял себе на пробу Agilent USB - в нем есть дрова для всего - и Matlabа и LabView и для Visual C.
Вопрос в том, что лучше применить? Я уже когда-то начинал писать софт для подобной тест-системы и знаю, что легче всего это описать текстовой программой.

Опыт работы с Матлабом и Лабвью у меня есть и плюсы и минусы каждого варианта немного понятны:
Matlab
+ Легкое текстовое программирование и графический Simulink интерфейс
- Плохая визуализация, помоему нужен Real Time Workshop и тот же Microsoft C, чтобы получить приемлемое время реакции( ну порядка 100мс хотя бы)

Labview
+ Отличная визуализация
- Помоему последние версии ну очень тяжелые для конфигурации и большие, нет текстового программирования

Microsoft C
+ Создание автономных приложений, текстовое программирование
- Много чего надо напистать, чтобы заработало.

А что вы посоветуете?
Огурцов
C# - совмещает в себе все возможности С++ и возможность использовать скрипты для описания непосредственно алгоритма задачи. Есть возможность визульного создания этого алгоритма из разработанных заранее "кубиков" ввиде диаграмм описания процессов - workflow.
Mik174
Цитата(syoma @ Oct 10 2009, 13:15) *
По железу вопросов нет - я уже взял себе на пробу Agilent USB - в нем есть дрова для всего - и Matlabа и LabView и для Visual C.
Вопрос в том, что лучше применить?
А что вы посоветуете?


Сделать можно на любом из трех перечисленных Вами инструментах.
Применяйте тот, который лучше знаете - меньше времени потратите на изучение инструмента, быстрее и качественнее решится задача.
syoma
Цитата(Mik174 @ Oct 11 2009, 13:04) *
Сделать можно на любом из трех перечисленных Вами инструментах.
Применяйте тот, который лучше знаете - меньше времени потратите на изучение инструмента, быстрее и качественнее решится задача.


ХЗ. Уже начал экспериментировать на Матлабе, так как он у меня был установлен, надо было только Data Akquisition Toolbox установить. Но с Симулинком лажа вышла - нельзя одновременно с моим девайсом ввод и вывод сделать. Зато с помощью скриптов все запустилось и уже парой светодиодиков мигает.
Но в итоге получается, что все надо в коде писать. Для тестового алгоритма применимо - а вот как в Матлабе визуализация и пользовательский интерфейс делается - я плаваю(графики рисовать не считается). Посмотрел, как в примерах- похоже не легче, чем в Си.
Сижу счас, разбираюсь дальше.

ПС. Если кому интересно, железка вот такая: Agilent U2651A Пока все установилось и с Матлабом пашет без глюков
Планирую несколько таких и стойку под них взять.
AlexandrY
Кривоватый подход в принципе вы выбрали.
Т.е. с одной строные Agilent-ы слишком универсальны и избыточны, с другой непопонятен механизм их масштабирования в том же Matlabа и LabView.
У дивайсов то нет одновременно 100 входов и выходов. Придется делать стек из Agilent-ов. Потом какую-то синхронизацию.
Agilent-ы по сути повторяют команды с PC, логика в них не вгружается. Т.е. юзер получает полный гемор связанный с реализацие реалтайма под Windows.

Потом USB хоть и HS это совсем не интерфейс реального времени.
Во первых он делится между другими дивайсами на шине.
Во вторых точные тайминги в пределах мкс юзером не управляются.
Отсюда вытекает невозможность точной планировки потока событий. Недаром у Agilent-ов нигде не специфицируется время реакции выходов на управляющие команды.

Короче тестирующая платформа должна иметь возможность выполнять внутри себя загружаемую логику. Здесь лучше всего подходит концепция "hardware in the loop". Эту концепцию поддерживает и Matlab и LabView.
Но эти среды заточены на разные внешние IDE и микропроцессорные платформы.

LabView - на AD BlackFin, Keil ARM и т.д.
Matlab - на TI DSP, Tasking ARM, Multi2000 ARM

По опыту самая быстрая связка где за день можно сварганить логику управления IO и HMI на экране PC является LabView в паре с недорогой платой от Keil ARM.
syoma
Принципы построения "Hardware in the loop" мне знакомы- строил такие и на ФПГА и знаком с такими монстрами, как RTDS и OPAL-RT.

То, что вы предлагаете - это тот-же DSPACE- Внешнее железо, для которого в Матлабе нужно сгенерить код и затем загрузить и выполнять в реальном времени. Требует кучу тулбоксов, внешний компилятор и капитальной конфигурации.
Мне же реалтайм пока не очень нужен - время реакции 100мс вполне допустимо. Плюс реализация синхронизации вполне простая - прерывание по таймеру.
Пока на 100мс работает вполне точно.
AlexandrY
Ну собственно сценарий тестирования тож имеет значение.
Вы собственно что тестируете: производительность вашего контроллера, выявляете предельную нагрузку по потоку событий, отказы в обслуживании , адаптацию к объекту регулирования, комбинационную логику контроллера или че еще?
Это все требует принципиально разных подходов и соответственно пакетов в MATLAB и LabView.
Некоторые фичи по моделированию асинхронных процессов появились только в последней версии MATLAB.


Цитата(syoma @ Oct 11 2009, 16:29) *
Пока на 100мс работает вполне точно.
syoma
Это будет в основном тестирование логики - то есть реакции на нестандартные события, такие как например отказ датчика или обрыв в цепи сигнала, обкатка новых алгоритмов управления. Плюс стандартное тестирование контроллеров на производстве - проверка всех входов и выходов.
AlexandrY
Ну вот видите, а говорите 200 мс.
Типичный отказ в виде дребезга на плохих контактах или на обрывах создает сигналы в доли миллисекунд.
А именно дребезг слабое место у программистов.
Ибо часто асинхронные события любят обрабатывать в прерываниях, и ресурс быстродействия у прерываний не безграничный а хуже, что обычно и не контролируемый.
Т.е. два три плохих контакта могут завалить систему либо вызвать отказ в обслуживании других сигналов.
Опять же часто интересно исследовать поведение систем на одновременный приход всех входных сигналов. Тестирование на стрессовые ситуации.

Но с такими Agilent-ами тут делать нечего это точно. Они сами или MATLAB-ы скорее начнут чудить от попыток смоделировать стрессы.
А без стрессов это не тестирование, а лабуда.


Цитата(syoma @ Oct 12 2009, 10:18) *
Это будет в основном тестирование логики - то есть реакции на нестандартные события, такие как например отказ датчика или обрыв в цепи сигнала, обкатка новых алгоритмов управления. Плюс стандартное тестирование контроллеров на производстве - проверка всех входов и выходов.
syoma
То есть все таки лучше взять парочку старых добрых PCI-DIO-96 да XPC Target на какой нибудь простенькой машине замутить?
Помоему больше глюков вылезет. Там пока Visual C++ с Матлабом свяжешь - намучаешься.
shf_05
у нас делают так - одноплатный IBM совместимый комп, на котором ОСРВ, ISA шина и на ней куча дискретных вводов-выводов, к которым и реле можно подцепить, только вот с визуализацией не очень круто- прогоняется ряд стандартных тестов- сигналы в опр. последовательности, сигналы по random-у и выводится табличка с результатом.
syoma
Для обновления. Agilent вернулся производителю. А я взял себе PCI-DIO96 от Measurement Computing. А к ней сразу интерфейсные карты SSR-RACK24 и кабель. В итоге на интерфейсную карту ставятся любые гальваниечски изолированные модули сопряжения - хош 24Вольтовый вход, хош выход 220В AC и т.д. Причем почти в любых комбинациях.
Дрова и под MATLAB и под Labview и даже в XPCTarget поддерживается. Единственное, что в моей машине только пара PCI слотов есть - придется еще что-то старенькое найти.
Forger
Попробуйте ПЛК CoDeSys от 3S Software, есть локализованная русская: codesys.ru.
Не требует железа (ПЛК), все визуально симулируется отлаживается на обычном компе. См. версию 3.x.
Поддерживает 7 языков программирования (одновременно в одной программе).
Сама прога бесплатная. Платно - сами ПЛК, с которыми она работает.
Я щас все свои проекты начинаю с нее, прорабатываю алгоритм, интерфейс работы с пользователем.
Потом воплащаю в своем железе. Куча времени экономится!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.