В процессе написания сложной программы управления разным оборудованием пришло понимание, что невозможно написать хороший и понятный код без специального модуля или даже тулкита, который бы позволил программировать последовательности команд, отправляемых приборам каким-то универсальным способом. В нашей компании мы приняли единый стандарт написания кода в виде машины состояний с использованием очереди как дефолтном проекте "continuous measurement and logging". Каждый блок управления каким-то прибором изолирован и может запускаться как отдельно, так и быть частью другой программы. Все управление программами происходит через очереди с одинаковым кластером из [string, variant]. В каждой программе есть типовые состояния "start", "exit" и т.д. Каждый отдельный блок может делаться разными людьми и отличаться стилем программирования за исключением основных правил написания проекта с использованием очереди состояний.
А теперь начинается самое интересное. Надо придумать способ создавать последовательности команд, тобишь секвенсер. И я хочу спросить у народа. А нет ли уже готового решения? Очень не хочется изобретать велосипед.
К примеру я посылаю команду генератору включить генерацию сигнала. Точнее головная программа должна посылать команду дочернему модулю включить генератор. И меня даже не должно заботить как он это делает. Я просто посылаю в очередь модуля кластер с параметрами генерации и понятия не имею как он заставляет генератор работать. Далее я должен дождаться обратной связи. Модуль должен мне ответить, что генерация началась без ошибок. Затем по списку к примеру идет включение усилителя. Теперь я посылаю команду другому модулю, которого делал другой человек и дожидаюсь обратной связи. И таких комбинаций может быть очень много. Последовательности команд могут чередоваться и быть вложены одна в другую.
В конечном итоге должно появится что-то вроде отдельного языка программирования и программы внутри программы. Человек далекий от понимания что такое лабвью будет создавать последовательности команд на абстрактном языке "Включить прибор 1 с таким параметрами" затем "Включить прибор 2 с другими параметрами" и т.д.
Секвенсер команд
Общие принципы, проектирование, модуляризация, темплейты и шаблоны
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Секвенсер команд
То, что Вы называете "самым интересным" - это реализация SCPI с дополнительной GUI для создания сценария(аналогично, как это сделано в современных измерительных приборах...но там опять же всё похоже на LabVEIW, так что совсем обезьяна или древний человек не справится так и так).
На мой взгляд, для решения подобной задачи не нужен дополнительный тулкит. Вас просто пугает масштаб проекта. Есть конечно же библиотека Tasking, которую сделали давно и она работает...подойдет или нет смотрите сами. Можете тут на форме найти, но говорю: Ваша проблема не в этом. Я бы сказал, что проблем нет вовсе, если выбранная архитектура реализована корректно. Разделяйте методы работы с программой и всё, стандартная задача. Забиваете очередь командами пользователя и даёте старт на выполнение.
Вы работали с анализатором цепей(это измерительный прибор)? Так вот, процедура калибровки этого прибора перед использованием как раз и есть мини-пример вашей задачи. Выполняется сценарий из серии запросов и ответов. Можно сделать автоматически, а можно выбрать какие шаги пропустить или вообще вручную всё делать.
На мой взгляд, для решения подобной задачи не нужен дополнительный тулкит. Вас просто пугает масштаб проекта. Есть конечно же библиотека Tasking, которую сделали давно и она работает...подойдет или нет смотрите сами. Можете тут на форме найти, но говорю: Ваша проблема не в этом. Я бы сказал, что проблем нет вовсе, если выбранная архитектура реализована корректно. Разделяйте методы работы с программой и всё, стандартная задача. Забиваете очередь командами пользователя и даёте старт на выполнение.
Вы работали с анализатором цепей(это измерительный прибор)? Так вот, процедура калибровки этого прибора перед использованием как раз и есть мини-пример вашей задачи. Выполняется сценарий из серии запросов и ответов. Можно сделать автоматически, а можно выбрать какие шаги пропустить или вообще вручную всё делать.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
Вернуться в «Модели программирования»
Перейти
- Форум инженеров
- ↳ Русский
- ↳ Магазин
- ↳ Готовые комплексы сбора данных
- ↳ CompactRIO
- ↳ Контроллеры cRIO
- ↳ Модули cRIO
- ↳ Шасси cRIO
- ↳ Главный форум
- ↳ Новости
- ↳ Для чайников
- ↳ Общие
- ↳ Железо
- ↳ Софт
- ↳ Наука
- ↳ Коммуникация с приборами
- ↳ Обработка сигнала
- ↳ Лицевая панель
- ↳ Сохранение данных
- ↳ Работа с графикой и звуком
- ↳ Модели программирования
- ↳ Создание приложений
- ↳ Среды разработки
- ↳ Коммуникация с приложениями
- ↳ Проекты
- ↳ Actor Framework
- ↳ Пакеты программ для инженеров и их расширения
- ↳ Расширения NI LabVIEW
- ↳ LIFA
- ↳ Report Generation / Diadem
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ LabWindows / CVI / Measurement Studio
- ↳ PDA / Palm / Touch Panel
- ↳ Modulation
- ↳ Motion / PID
- ↳ Statechart
- ↳ GPU Analysis Toolkit
- ↳ NI Requirements Gateway
- ↳ TestStand
- ↳ Языки программирования
- ↳ Robotics
- ↳ Multisim
- ↳ Прочее
- ↳ Конкурсы
- ↳ Библиотека инженера
- ↳ Курсы и сертификация
- ↳ Объявления
- ↳ Поздравления
- ↳ Обо всём на свете
- ↳ Olympiad 2020 / Олимпиада 2020
- ↳ Вебсайт и форум
- ↳ Анонсы
- ↳ Отклики
- ↳ Предложения
- ↳ Интервью с форумчанами
- ↳ Партнёрские организации и дочерние проекты
- ↳ Developlabs
- ↳ ЭПИ МИСиС
- ↳ Проекты
- ↳ ООО "ПромТех"
- ↳ Продукция
- ↳ ООО "Прикладная кибернетика"
- ↳ ТехноАрт
- ↳ WorldSkills Russia
- ↳ Грузинский Технический Университет - სტუ - საქართველოს ტექნიკური უნივერსიტეტი
- ↳ Deutsch
- ↳ LabVIEW
- ↳ News
- ↳ Für Anfänger
- ↳ Allgemein
- ↳ Kommunikation mit Geräten
- ↳ Signalverarbeitung
- ↳ Front panel
- ↳ Datenspeicherung
- ↳ Arbeiten mit Grafik und Sound
- ↳ Programmiermuster
- ↳ Application Builder
- ↳ Entwicklungsumgebung
- ↳ Kommunikation mit Applikationen
- ↳ Projekte
- ↳ Module / Toolkits
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ LabWindows / CVI / Measurement Studio
- ↳ PDA / Palm / Touch Panel
- ↳ Modulation
- ↳ Motion / PID
- ↳ TestStand
- ↳ Statechart
- ↳ Report Generation / Diadem
- ↳ Sonstiges
- ↳ Wettbewerbe
- ↳ LabVIEW Bücher
- ↳ Kurse und Zertifikation
- ↳ Programmiersprachen
- ↳ Software
- ↳ Hardware
- ↳ Arbeitsmarkt
- ↳ Marktplatz
- ↳ Über alles mögliche
- ↳ Webseite und Forum
- ↳ Ankündigungen
- ↳ Rückmeldungen
- ↳ Vorschläge
- ↳ English
- ↳ LabVIEW
- ↳ News
- ↳ For beginners
- ↳ General
- ↳ Communcation with devices
- ↳ Signal processing
- ↳ Front panel
- ↳ Data storage
- ↳ Working with graphic and sound
- ↳ Design patterns
- ↳ Application builder
- ↳ Development environment
- ↳ Communication with applications
- ↳ Projects
- ↳ Moduls / Toolkits
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ LabWindows / CVI / Measurement Studio
- ↳ PDA / Palm / Touch Panel
- ↳ Modulation
- ↳ Motion / PID
- ↳ TestStand
- ↳ Statechart
- ↳ Report Generation / Diadem
- ↳ Miscellaneous
- ↳ Contests
- ↳ LabVIEW books
- ↳ Training and certification
- ↳ Programming languages
- ↳ Software
- ↳ Hardware
- ↳ Employment
- ↳ Market
- ↳ Offtopic
- ↳ Website and forum
- ↳ Announcements
- ↳ Feedback
- ↳ Suggestions
- ↳ Український
- ↳ LabVIEW
- ↳ Новини
- ↳ Для чайників
- ↳ Загальний
- ↳ Комунікація з пристроями
- ↳ Обробка сигналу
- ↳ Лицьова панель
- ↳ Збереження даних
- ↳ Робота з графікою і звуком
- ↳ Моделі програмування
- ↳ Створення додатків
- ↳ Середовище розробки
- ↳ Комунікація з додатками
- ↳ Проекти
- ↳ Модулі / Тулкіти
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ LabWindows / CVI / Measurement Studio
- ↳ PDA / Palm / Touch Panel
- ↳ Modulation
- ↳ Motion / PID
- ↳ TestStand
- ↳ Statechart
- ↳ Report Generation / Diadem
- ↳ NI Requirements Gateway
- ↳ Інше
- ↳ Конкурси
- ↳ Книги по LabVIEW
- ↳ Курси і сертифікація
- ↳ Мови програмування
- ↳ Софт
- ↳ Хард
- ↳ Біржа праці
- ↳ Оголошення
- ↳ Балачка
- ↳ Вебсайт і форум
- ↳ Анонси
- ↳ Відгуки
- ↳ Пропозиції
- ↳ Italiano
- ↳ LabVIEW
- ↳ News
- ↳ Per principianti
- ↳ Generale
- ↳ Comunicazione con dispositivi
- ↳ Gestione dei segnali
- ↳ Panello frontale
- ↳ Salvataggio dati
- ↳ Lavorare con grafica
- ↳ Modelli di programmazione
- ↳ Application Builder
- ↳ Ambiente di sviluppo
- ↳ Comunicazione con applicazioni
- ↳ Progetti
- ↳ Moduli / Toolkits
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ LabWindows / CVI / Measurement Studio
- ↳ PDA / Palm / Touch Panel
- ↳ Modulation
- ↳ Motion / PID
- ↳ TestStand
- ↳ Statechart
- ↳ Report Generation / Diadem
- ↳ Altro
- ↳ Concorsi
- ↳ Libri LabVIEW
- ↳ Corsi e certificazione
- ↳ Linguaggi di programmazione
- ↳ Software
- ↳ Hardware
- ↳ Mercato di lavoro
- ↳ Piazza di mercato
- ↳ Un po di tutto
- ↳ Pagina web e forum
- ↳ Annunci
- ↳ Feedback
- ↳ Proposte
- ↳ العربية
- ↳ لاب فيو
- ↳ آخر خبرية
- ↳ ساحة المبتدئين
- ↳ ساحة لاب فيو العامة
- ↳ الإتصال بالمعدات
- ↳ معالجة الإشارة
- ↳ الواجهة الأمامية / Frontpanel
- ↳ تخزين البيانات
- ↳ جرافيك
- ↳ نسوق برمجة
- ↳ إنشاء التطبيقات
- ↳ تطوير بيئة لاب فيو
- ↳ الإتصال بالتطبيقات
- ↳ مشاريعك
- ↳ وحدات برمجة / أدوات برمجة
- ↳ مرئيات / IMAQ
- ↳ تقارير لحظية / FPGA / Embedded
- ↳ لاب ويندوز /CVI/ ستوديو القياس
- ↳ المساعد الشخصي / بالم / شاشات اللمس
- ↳ تعديل الإشارة
- ↳ حركة / تضميم
- ↳ حقل التجارب
- ↳ Statechart وحدة
- ↳ تنفيذ التقارير / دياديم
- ↳ متفرقات
- ↳ مسابقات
- ↳ مكتبة لاب فيو
- ↳ التدريب و الشهادات
- ↳ لغات برمجة
- ↳ برمجيات
- ↳ هاردوير
- ↳ فرص عمل
- ↳ مبيع و شراء
- ↳ ساحة المواضيع الأخرى
- ↳ حول الموقع و المنتدى
- ↳ تبليغات إدارية
- ↳ ملاحظات
- ↳ إقتراحات
- ↳ القسم الإداري
- ↳ Қазақша
- ↳ LabVIEW
- ↳ Жаңалықтар
- ↳ Шәйнектер үшін
- ↳ Жалпы
- ↳ Саймандар
- ↳ Бағдарлама
- ↳ Ғылым
- ↳ Аспаптармен байланыстыру
- ↳ Дабылды өңдеу
- ↳ Бет панелі
- ↳ Мәліметтерді сақтау
- ↳ Графика және дыбыспен жұмыс жасау
- ↳ Бағдарлама нұсқалары
- ↳ Қосымшаларды жасау
- ↳ Жасау ортасы
- ↳ Қосымшалармен байланыстыру
- ↳ Жобалар
- ↳ עִבְרִית
- ↳ LabVIEW
- ↳ LabView חדשות לגבי
- ↳ למתחילים
- ↳ כללי
- ↳ תקשרת עם מכשירים
- ↳ עיבוד אותות
- ↳ לוח קדמי
- ↳ אחסון מידע
- ↳ עבודה עם גרפים
- ↳ עיצוב דוגמאות
- ↳ בניית תוכנה
- ↳ סביבה מפותחת
- ↳ תקשרת ותוכנות
- ↳ פרויקטים
- ↳ Toolkits
- ↳ Vision / IMAQ
- ↳ Հայերեն
- ↳ LabVIEW
- ↳ Նորություններ
- ↳ Սկսնակների համար
- ↳ Ընդհանուր
- ↳ Հաղորդակցում սարքերի միջոցով
- ↳ Ազդանշանի վերլուծություն
- ↳ Արտաքին վահանակ
- ↳ Տվյալների պահպանում
- ↳ Աշխատանք գրաֆիկայի և ձայնի միջոցով
- ↳ Ծրագրավորման մոդելներ
- ↳ Ծրագրերի ստեղծում
- ↳ Զարգացման միջավայր
- ↳ Հաղորդակցում ծրագրերի միջոցով
- ↳ Նախագծեր
- ↳ Մոդուլներ / Գործիքներ
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ LabWindows / CVI / Measurement Studio
- ↳ PDA / Palm / Touch Panel
- ↳ Modulation
- ↳ Motion / PID
- ↳ TestStand
- ↳ Statechart
- ↳ Report Generation / Diadem
- ↳ LEGO Mindstorms
- ↳ Multisim
- ↳ Այլ
- ↳ Մրցույթներ
- ↳ LabVIEW-ի վերաբերյալ գրքեր
- ↳ Դասընթացներ և Հավաստագրում
- ↳ Ծրագրավորման լեզուներ
- ↳ Ծրագրեր
- ↳ Սարքավորումներ
- ↳ Թափուր աշխատատեղեր
- ↳ Հայտարարություններ
- ↳ Աշխարհում ամեն ինչի մասին
- ↳ Վեբկայք և ֆորում
- ↳ Տեղեկատու
- ↳ Հետադարձ կապ
- ↳ Առաջարկներ
- ↳ Մոդերատորի բաժին
- ↳ Խմբեր
- ↳ Freelance
- ↳ Ուսանողներ
- ↳ Դասավանդողներ
- ↳ Բլոգերներ
- ↳ Polski
- ↳ LabVIEW
- ↳ Aktualności
- ↳ Dla początkujących
- ↳ Ogólne
- ↳ Komunikacja z urządzeniami
- ↳ Przetwórstwo sygnału
- ↳ Panel czołowy (Front Panel)
- ↳ Zapisywanie danych
- ↳ Praca z grafiką i dźwiękiem
- ↳ środowisko programistyczne
- ↳ połączenie z aplikacjami
- ↳ Projekty
- ↳ Moduły/narzędzia
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ Modulation
- ↳ Multisim
- ↳ Inne
- ↳ Konkursy
- ↳ Podręczniki po LabVIEW
- ↳ Kursy i certyfikacja
- ↳ Giełda pracy
- ↳ Ogłoszenia
- ↳ O wszystkim
- ↳ Strona internetowa i forum
- ↳ Anonsy
- ↳ Propozycje
- ↳ 中文
- ↳ LabVIEW/虚拟仪器
- ↳ 新闻
- ↳ 新手入门
- ↳ 概述
- ↳ 设备控制与数据交换
- ↳ 信号处理
- ↳ 前面板
- ↳ 数据存储
- ↳ 图象处理
- ↳ 设计模式
- ↳ 应用程序生成器
- ↳ 开发环境
- ↳ 应用程序的沟通
- ↳ 工程项目
- ↳ 模块 / 工具包
- ↳ 视觉 / IMAQ
- ↳ 实时/ FPGA / 嵌入式系统
- ↳ LabWindows / CVI / 测量工作室
- ↳ PDA / Palm / 触摸屏
- ↳ 调制
- ↳ 方案 / PID
- ↳ 测试状态
- ↳ 状态
- ↳ 报告生成 / Diadem
- ↳ 其他
- ↳ 竞赛
- ↳ LabVIEW 书籍
- ↳ 培训和认证
- ↳ 编程语言
- ↳ 软件
- ↳ 硬件
- ↳ 求职信息
- ↳ 市场信息
- ↳ 无所不能
- ↳ 站点论坛
- ↳ 公告
- ↳ 反馈
- ↳ 意见建议
- ↳ 版主交流
- ↳ Eesti
- ↳ LabVIEW
- ↳ Uudised
- ↳ Võhikutele
- ↳ Üldine
- ↳ Seadmete kommunikatsioon
- ↳ Signaalitöötlus
- ↳ Esipaneel
- ↳ Andmete salvestamine
- ↳ Graafikaga ja heliga töötamine
- ↳ Programmeerimise mudelid
- ↳ Rakenduste loomine
- ↳ Arengukeskkond
- ↳ Kommunikatsioon tarkvaraga
- ↳ Projektid
- ↳ Moodulid/toolkitid
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ LabWindows / CVI / Measurement Studio
- ↳ Modulation
- ↳ LEGO Mindstorms
- ↳ Multisim
- ↳ NI WSN
- ↳ LIFA
- ↳ Muu
- ↳ Konkursid
- ↳ LabVIEW raamatud
- ↳ Kursused ja sertifikaadid
- ↳ Programmeerimiskeeled
- ↳ Tarkvara
- ↳ Riistvara
- ↳ Teadus
- ↳ Tööbörs
- ↳ Kuulutused
- ↳ Õnnitlused
- ↳ Räägime kõigest
- ↳ Veebisait ja foorum
- ↳ Teated
- ↳ Tagasisede
- ↳ Pakkumised
- ↳ Intervjuu foorumi kasutajatega
- ↳ Français
- ↳ LabVIEW
- ↳ News
- ↳ Pour les débutants
- ↳ Courant
- ↳ La communication avec des périphériques
- ↳ Traitement du signal
- ↳ Front panel
- ↳ Stokage de données
- ↳ Travailler avec des graphiques
- ↳ Modelè de programmation
- ↳ Application Builder
- ↳ Environnement de développement
- ↳ Communication avec les applications
- ↳ Projets
- ↳ Modules/ boîtes à outils
- ↳ Vision / IMAQ
- ↳ Real Time / FPGA / Embedded
- ↳ LabWindows / CVI / Measurement Studio
- ↳ PDA / Palm / Touch Panel
- ↳ Modulation
- ↳ Motion / PID
- ↳ TestStand
- ↳ Statechart
- ↳ Report Generation / Diadem
- ↳ D'autres choses
- ↳ Concourses
- ↳ Livres de LabVIEW
- ↳ Cours et la certification
- ↳ Langues de programmation
- ↳ Software
- ↳ Hardware
- ↳ Marché du travail
- ↳ Place de marchè
- ↳ Sur d'autres choses
- ↳ Web site et forum
- ↳ Annonces
- ↳ Retour
- ↳ Propositions
- ↳ Olympiads / Олимпиады
- ↳ Olympiad 2020
- ↳ Olympiad 2021