На самом деле нет, вы правы и не правы одновременно, сгенерированный код будет полностью рабочим и робастным, но не полным. В предложеном подходе предпологается разделение управляющего ПО на две условные части:
1) Технологический алгоритм.
2) Системный алогритм.
Технологический алгоритм в этом случае это тот алгоритм, который получает значение показание датчика (датчиков), и должен выработать команду на исполнительный механизм (механизьмы). Это то для чего управляющее ПО и пишется. Для его проверки и нужна модель объекта управления. Именна эта часть алгоритма и поределяет будет у вас двигатель ауди иметь 192 лошадей и 250 лошадей. Механика и датчики одинаковые, а замена кода технологического алгоритма дает 25% прироста мощности. Такие вот самые по вашим словам «базовые тестовые воздействия», которые и определяют суть программы управления.
Системный алгоритм, это алгоритм который обеспечит поступления показания датчика в нужную переменную технологического алгоритма в нужный момент времени. А так же обеспечит доставку команды (открыть — закрыть), из переменной технологического алгоритма до исполнительного механизма. Системные алгоритмы важная часть ПО и без него действительно работать не будет. Но предоженный подход позволяет безопасно и надежно отлаживать технологический алогитм и генерировать код который легко и не принужденно ложится в любую аппаратуру, хотите в QNX на Intel Атом, хотите в безоперационную STM32 или миландр. Измените системную часть, которая аппаратно зависима, и вперед генерируйте себе на здоровье рабочий код. Ранее в статье про ООП в графических языках разобран пример обработки показания датчика. Привожу картинку, видите на ней вход показания TK21FO2B1_ai — это показания датчика в миливольтах. Если мы работаем под QNX, эту переменную на заданном такте обновит драйвер платы ввода вывода, это значение может быть получено по сети от другого прибора, при распределенной системе управления. Если мы работаем на микропроцессора миландр, то это значение в переменной может быть полученого со встроеного АЦП на кристалле. Но остальная схема и автоматически сгенерированый код Си не поменяется. Вы хотите проверит робастность? Да не вопрос, в моделе на схеме ставите белый шум подаете в схему TK21FO2B1_ai с шумами заданного уровня. У вас возможна задержка по времени? Опять не вопрос, добавте к шуму еще и плавающую задержку. Сигнал может пропадать на несколько тактов работы? Сделайте модель обрывов и смотрите как ваш алгоритм справляется с такой ситуацией.
А что касается реального времени, на рис. 3 видно, что в процессе моделирования, мы задаем для каждого проекта в пакете, такт расчета (преобразования входа в выход) и такт синхронизации, в масштабе модельного времени. И если ваш системный алгоритм обеспечит заданные такт на аппратной платформе, то вы получите полное совпадение работы расчетной схемы и сгенерированого ПО в реальной аппаратуре.
Интересно получается, вот что значит разные взгляды на архитектуру управляющего ПО. В исходной точке, мы с вами согласились, что модель не полная и запускать программу нельзя, и тут же пошли в разные стороны.
Я предположил, что нужно, по хорошему модель течения газа по трубам месторождения. Потому что все это мы затеваем, с одной целью — доставить газ из подводного месторождения на берег, с минимальной стоимостью доставки. Поэтому, отлаживть на модели нужно, в первую очередь, алгоритмы решаюшие технологическую задачу когда и какую задвижку двигать. Для модели из обсуждаемой статьи, где рассматривается ПО гидравлической системы управления, команда открыть — закрыть конкретную задвижку, это входная информация. И управляющее по должно ее реализовать с учетом состояния гидавлической системы.
Вы же пошли ровно в противополжном направлении, для вас уже команды есть, и не важно что там с давлением, скоростью работы привода, а важно оценить, уложимся ли мы в такты реального времени, получим ли мы данные с драйвера и прочие системые аппаратно зависимые вещи. Без которых залить код, в микроконтроллер невозможно.
Ну вобщето документацию пишут для облегчения жизни, а не для запутывая в трех соснах. Я попытался помочь людям разобратся где маркетинговая пурга, и чем она от реалной жизни отличается и как на самом деле должно быть. На хабре все об это пишут.
Да не вопрос, просто плохо, когда принципиально путаются в показания, используют термины не по назначению, и пользователю приходитя самому доходить, (или не доходить) предполагать (или не предполагать), что «Executable Specification подразумевает под собой наличие пары Plant + Controller.»
Об этом собственно и речь в статье.
А модель объекта действительно можно и на Си и на Фортране и на ASM писать, главно понимать что она должна быть и видеть где она помогает. Тогда будет счастье.
А если посмотреть на атомные международные стандарты по программированию систем управления важным для безопасности, например IEC 60880 (2006) Nuclear power plants –
Instrumentation and control systems important to safety – Software aspects for computer-based systems performing category A functions.
В них вводятся такое поятие как
Проблемно-ориентированный язык (application oriented language): компьютерный язык, специально разработанный для определенного типа применений и используемый лицами, являющимися специалистами в данном типе применений. [МЭК 62138, 3.3]
По такому определению Диаграмма Simulink это и есть программа для проблемно ориентированом языке Simulink. Когда модель=программа, как в стандартах атомных, то получается по мнению, офицалов MatchWorck название процесса «Модельно-ориентированное проектирование модели для встроенного ПО» Масло масленное.
Никто не спорит, что в Simulink и Матлаб можно созадать модель объекта, но когда обращаешся к документации, или слушаешь (читаешь) продажников MatchWorck, видно что они тулят что-то другое. Типа услышали звон, но не знают где он.
— Увас есть цифровой двойник?
— Да! Мы отсканировали чертежи 50-х годов, и положили их в электронный архив! У нас цифровой двойник.
Так же и Model Based Desig от офицалов MatchWork
Настоящий МОП описан в статье. Или например у атомщиков, где врерифицрованная Госатомнадзором модель объекта явялется обязательной частью проекта, как чертеж и исходный код еще со времен Чернобыля. Там настоящий МБД.
А вот, что пишут в официальных документах MatchWorck: "
Где здесь модель модель объекта вообще? В тексте — нет.
И на картинке нет. ">
Про яму и экскаватор, тут согласен. Но в москве даже на яму в метро глубиной привозят маленький бобкат с ковшом с трех литровую банку и копают им. Зависит от технической оснашенности. И АSM сейчас иногда используют, например для всяких embeded.
А то что, «больше про системы управления». Как раз об этом и речь в статье, термин Model Based Desig в его обще употребительным смысле это про то, что нужно проектировать объект и его систему управления нужно создавая модель объекта. А в изложении MathWorks модель в методологии, это модель ПО, и они тулят это как настоящий Model Based Desig принятый во всем мире, что не верно.
Так в части отладки подвоных модулей управления, модель все потребности вроде, на первый взгляд покрывает. Более сложная логика верхнего уровня, а что конкртено открывать и закрывать в месторождении, рассчитваетеся при анализе уже самого месторождения и в принципе можно эту модель добавить, будет арматура менять движения газа в трубах.
Например вот схема где в SimInTech считается течение газа, мы можем положения задвижек которые рассчитаны в схеме из статьи передавать в ниже приведенню схему трубопроводов с газом. Все можно проверять и алгоритмы управления течения газом с учетом работы гидравлических систем управления.
А расчеты были преведены в статике. В статике стержень вверху тогда когда реактор уже работает и сверху пар. Эфекта разгона при опускании сверху не было.
Потому что модель, легко бы показала, что возможна ситуация когда сверху вода и все стрежни тоже сверху. Это можно было посмотреть на динамической модели.
Все зависит от процесса на самом деле. Цифры взяты с потолка, как средняя темперутра пациентов по больнице, с учетом температуры холодильника морга и температуры печки для сжигания мед отходов.
МОП позволяет сокртатить и больше, если в разработке приходится отлаживать на «живом» объекте или проводить эксперименты. А может просто увеличить трудозатраты, за счет создания модели объекта.
Вот программист и думает в виде расчетных схемы SimInTech и объектов проекта. Хотя в случае АЭС это даже не програмист, а технолог. А программист вообще не нужен.
Меня вообще не учили ООП, программированию меня учили в рамках базового первого курса, чисто решение расчетных задач, циклы, интерполяция, интегрирование. Я по образованию инженер конструктор ядерных реакторов, поэтому не могу иметь притензии к своему ВУЗу. ООП я изучал сам, разрабатывая нативные компоненты к Delphi, в качестве источника данных был пользовательсткий мануал на английском языке. Можт я что то там не так понял, но если обратится к английской википедии, то они так же начинают определение ООП, как объединение данных и методов их обработки, а значит не такая уж это ересь, по мнению большинства англоязычных пользователей wi-ki:
Object-oriented programming (OOP) is a programming paradigm based on the concept of «objects», which can contain data, in the form of fields (often known as attributes), and code, in the form of procedures (often known as methods). A feature of objects is an object's procedures that can access and often modify the data fields of the object with which they are associated (objects have a notion of «this» or «self»). In OOP, computer programs are designed by making them out of objects that interact with one another.[1][2] OOP languages are diverse, but the most popular ones are class-based, meaning that objects are instances of classes, which also determine their types. en.wikipedia.org/wiki/Object-oriented_programming
Здесь «метод класса» в терминах ООП, это схема внутри блока. В этой схеме можно реализовать любую логику обработки. Сама схема привязана к конкретному наименованному набору данных. Инкапсуляция — блок содержит схемы и набор данных.
1) Технологический алгоритм.
2) Системный алогритм.
Технологический алгоритм в этом случае это тот алгоритм, который получает значение показание датчика (датчиков), и должен выработать команду на исполнительный механизм (механизьмы). Это то для чего управляющее ПО и пишется. Для его проверки и нужна модель объекта управления. Именна эта часть алгоритма и поределяет будет у вас двигатель ауди иметь 192 лошадей и 250 лошадей. Механика и датчики одинаковые, а замена кода технологического алгоритма дает 25% прироста мощности. Такие вот самые по вашим словам «базовые тестовые воздействия», которые и определяют суть программы управления.
Системный алгоритм, это алгоритм который обеспечит поступления показания датчика в нужную переменную технологического алгоритма в нужный момент времени. А так же обеспечит доставку команды (открыть — закрыть), из переменной технологического алгоритма до исполнительного механизма. Системные алгоритмы важная часть ПО и без него действительно работать не будет. Но предоженный подход позволяет безопасно и надежно отлаживать технологический алогитм и генерировать код который легко и не принужденно ложится в любую аппаратуру, хотите в QNX на Intel Атом, хотите в безоперационную STM32 или миландр. Измените системную часть, которая аппаратно зависима, и вперед генерируйте себе на здоровье рабочий код. Ранее в статье про ООП в графических языках разобран пример обработки показания датчика. Привожу картинку, видите на ней вход показания TK21FO2B1_ai — это показания датчика в миливольтах. Если мы работаем под QNX, эту переменную на заданном такте обновит драйвер платы ввода вывода, это значение может быть получено по сети от другого прибора, при распределенной системе управления. Если мы работаем на микропроцессора миландр, то это значение в переменной может быть полученого со встроеного АЦП на кристалле. Но остальная схема и автоматически сгенерированый код Си не поменяется. Вы хотите проверит робастность? Да не вопрос, в моделе на схеме ставите белый шум подаете в схему TK21FO2B1_ai с шумами заданного уровня. У вас возможна задержка по времени? Опять не вопрос, добавте к шуму еще и плавающую задержку. Сигнал может пропадать на несколько тактов работы? Сделайте модель обрывов и смотрите как ваш алгоритм справляется с такой ситуацией.
А что касается реального времени, на рис. 3 видно, что в процессе моделирования, мы задаем для каждого проекта в пакете, такт расчета (преобразования входа в выход) и такт синхронизации, в масштабе модельного времени. И если ваш системный алгоритм обеспечит заданные такт на аппратной платформе, то вы получите полное совпадение работы расчетной схемы и сгенерированого ПО в реальной аппаратуре.
Я предположил, что нужно, по хорошему модель течения газа по трубам месторождения. Потому что все это мы затеваем, с одной целью — доставить газ из подводного месторождения на берег, с минимальной стоимостью доставки. Поэтому, отлаживть на модели нужно, в первую очередь, алгоритмы решаюшие технологическую задачу когда и какую задвижку двигать. Для модели из обсуждаемой статьи, где рассматривается ПО гидравлической системы управления, команда открыть — закрыть конкретную задвижку, это входная информация. И управляющее по должно ее реализовать с учетом состояния гидавлической системы.
Вы же пошли ровно в противополжном направлении, для вас уже команды есть, и не важно что там с давлением, скоростью работы привода, а важно оценить, уложимся ли мы в такты реального времени, получим ли мы данные с драйвера и прочие системые аппаратно зависимые вещи. Без которых залить код, в микроконтроллер невозможно.
Об этом собственно и речь в статье.
А модель объекта действительно можно и на Си и на Фортране и на ASM писать, главно понимать что она должна быть и видеть где она помогает. Тогда будет счастье.
Instrumentation and control systems important to safety – Software aspects for computer-based systems performing category A functions.
В них вводятся такое поятие как
Проблемно-ориентированный язык (application oriented language): компьютерный язык, специально разработанный для определенного типа применений и используемый лицами, являющимися специалистами в данном типе применений. [МЭК 62138, 3.3]
По такому определению Диаграмма Simulink это и есть программа для проблемно ориентированом языке Simulink. Когда модель=программа, как в стандартах атомных, то получается по мнению, офицалов MatchWorck название процесса «Модельно-ориентированное проектирование модели для встроенного ПО» Масло масленное.
— Увас есть цифровой двойник?
— Да! Мы отсканировали чертежи 50-х годов, и положили их в электронный архив! У нас цифровой двойник.
Так же и Model Based Desig от офицалов MatchWork
Настоящий МОП описан в статье. Или например у атомщиков, где врерифицрованная Госатомнадзором модель объекта явялется обязательной частью проекта, как чертеж и исходный код еще со времен Чернобыля. Там настоящий МБД.
А вот, что пишут в официальных документах MatchWorck:
Где здесь модель модель объекта вообще? В тексте — нет.
И на картинке нет.
А то что, «больше про системы управления». Как раз об этом и речь в статье, термин Model Based Desig в его обще употребительным смысле это про то, что нужно проектировать объект и его систему управления нужно создавая модель объекта. А в изложении MathWorks модель в методологии, это модель ПО, и они тулят это как настоящий Model Based Desig принятый во всем мире, что не верно.
Например вот схема где в SimInTech считается течение газа, мы можем положения задвижек которые рассчитаны в схеме из статьи передавать в ниже приведенню схему трубопроводов с газом. Все можно проверять и алгоритмы управления течения газом с учетом работы гидравлических систем управления.
Смотреть здесь... и здесь...
МОП позволяет сокртатить и больше, если в разработке приходится отлаживать на «живом» объекте или проводить эксперименты. А может просто увеличить трудозатраты, за счет создания модели объекта.
Object-oriented programming (OOP) is a programming paradigm based on the concept of «objects», which can contain data, in the form of fields (often known as attributes), and code, in the form of procedures (often known as methods). A feature of objects is an object's procedures that can access and often modify the data fields of the object with which they are associated (objects have a notion of «this» or «self»). In OOP, computer programs are designed by making them out of objects that interact with one another.[1][2] OOP languages are diverse, but the most popular ones are class-based, meaning that objects are instances of classes, which also determine their types.
en.wikipedia.org/wiki/Object-oriented_programming