Перейти к содержанию
    

Посоветуйте новичку для старта

2 часа назад, syoma сказал:

При этом это будет уже production-ready код, который даже может соответствовать всяким Safety и MISRA стандартам, путем выбора соответствующих галочек. То есть при желании говнокода там почти не будет, и проверить вы это сможете открыв сгенерированный Си файл.

В это, честно говоря, слабо верится, ибо 1) уже давно бы все забили на текстовые проги и "писали" в кубиках и квадратиков матлабов. 2) этим самым практически подтверждается создание системы автоматического программирования, что уже было признано учеными, как невозможное, ибо требует сильного ИИ в качестве движка системы. А посему получается, что все это действо - несколько модернизированный куб от СТМ, может быть чуть лучше вылизанный, но суть та же - офигенный оверхэд, и надежность хуже, чем писал программист (не говнокодер), ИМХО...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, mantech said:

1) уже давно бы все забили на текстовые проги и "писали" в кубиках и квадратиков матлабов.

Так есть уже целые отрасли, где так и есть. Я ж говорю о реал-таймовых прогах на конкретных платформах. Авиационка, космос, автомобили - уже давно перешли. Есть группа системщиков, которые поддерживают саму платформу - они все делают на Си и асме и их задача выдавить максимум из железа. И выше сидят те "кубико"программисты, которые уже все рисуют кубиками. Они даже могут Си не знать.

1 hour ago, mantech said:

2) этим самым практически подтверждается создание системы автоматического программирования, что уже было признано учеными, как невозможное, ибо требует сильного ИИ в качестве движка системы.

Да нафиг там тот ИИ. Видишь кубик умножителя, генеришь код signed int mult(int x, int y) { return (x*y)} и т.д. Кстати во многих отраслях такая кодогенерация из кубиков уже лет 20 как в ходу была. Можно вспомнить даже тот же Дракон. Но Матлаб их всех пришиб, добавив возможности моделирования.

Quote

А посему получается, что все это действо - несколько модернизированный куб от СТМ, может быть чуть лучше вылизанный, но суть та же - офигенный оверхэд, и надежность хуже, чем писал программист (не говнокодер), ИМХО...

Насчет офигенного оверхеда и вылизанности - ну это сами смотрите, там уже больше 13 лет очень активной эволюции и оптимизаций там дохренища. Например мне очень нравится возможность на Сишном уровне путем пары кликов оптимизировать конкретный алгоритм под быстродействие, память или меньший код. Если надо, оно там и forы разворачивает и инлайны вставляет, а если надо - сворачивает и все функциями. Хош - будет одну переменную по всему коду использовать и нигде не накосячит.  Попробуй, добейся такого рефакторинга от обычного программиста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/18/2020 at 8:34 PM, skv8016 said:

А зачем? Я занимаюсь автоматизацией, некоторые заказы делаются за несколько дней, какие-то могут тянуться несколько лет. Объем контроллеров мизерный и разработка себя никогда не окупит, а сроки сдачи станут не приемлемы. Сейчас есть из чего выбрать и по гибкости я мало ограничен. К тому же, в процессе наладки новой машины, часто возникает необходимость что-то добавить или поменять. Боюсь, что все сведётся к разработке того, от чего уходим: к ПЛК с модулями расширения

Думаю вы гарантировано где-то делаете необосновано дорого и сложно.
Скажем чуть позже чем началась эта ветка я анализировал существующие решений по поводу резервного питания системы управления умным домом.
И не нашел ничего лучше как разработать собственную плату управления   
BACKPMAN.PNG

Заряжает аккумулятор током до 10 А. Может работать с аккумуляторами на любой химии: свинцовые,  литевые ...
Коммутирует инвертер 24 DC->220 AC до 1500 Вт при отключении сети, коммутирует также вход инвертера.
Имеет USB, CAN, RS485. Граф. дисплей, локальная настройка параметров. 
Обеспечивает резервное 24DC и 220AC.
Всего лишь нужен внешний БП 24В и дешевый инвертер без наворотов с алика.  

Если такое делать на стандартных UPS-ах и БП c поддержкой зарядки и ПЛК, то получится монструозно по габаритам, дороже в несколько раз и не универсально. 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, AlexandrY said:

Скажем чуть позже чем началась эта ветка я анализировал существующие решений по поводу резервного питания системы управления умным домом.
И не наше ничего лучше как разработать собственную плату управления 

Вот блин, а я - мудак, тупо поставил USB Power Bank в цепь питания моего контроллера УД :-)

Кстати, а что та система управления Умным Домом сможет сделать, если питания исполнительных устройств нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, syoma said:

То есть при желании говнокода там почти не будет, и проверить вы это сможете открыв сгенерированный Си файл. 

Вот "говнокод" там как раз будет. Будет раздутая цикломатичность, и туча бессмысленных имен. 
С MATLAB-ом надо научиться не смотреть в выходной код на C. 
Это как программеры на C научились не смотреть ассемблер.
И главное все же на мой взгляд в Матлабе это резкое сокращение количества имен. 
В принципе язык LD в ПЛК тоже избавляет от имен, но он не показывает состояния!
В ПЛК вообще нет языков показывающий состояния. 
И это огромный недостаток графических нотаций ПЛК. 
Потому что идентификация состояний и их отображение - второй по важности аргумент в пользу графической нотации Матлаба.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, syoma сказал:

Кстати, а что та система управления Умным Домом сможет сделать, если питания исполнительных устройств нет?

Наверно написать в облако, что я бессилен что-то предпринять - воздуха лишили! ПОМОГИТЕ!!!!!!!!! :biggrin:

1 час назад, syoma сказал:

Вот блин, а я - мудак, тупо поставил USB Power Bank в цепь питания моего контроллера УД :-)

У меня в контроллере была предусмотрена работа с SLA батареями, запитывался сам контроллер и сотовый модем, чтоб в случае полного пэ... сказать ПОМОГИТЕ)))

1 час назад, AlexandrY сказал:

В ПЛК вообще нет языков показывающий состояния. 

Что подразумевается под "состояниями"? На ST разве нельзя писать программы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, AlexandrY said:

В ПЛК вообще нет языков показывающий состояния. 

Есть. Sequential Function Chart. Но программирование и графика там через одно место сделаны. Зато синтаксис формален очень.

Behavior-specification-of-an-IEC-61131-F

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, AlexandrY said:

Думаю вы гарантировано где-то делаете необосновано дорого и сложно.
Скажем чуть позже чем началась эта ветка я анализировал существующие решений по поводу резервного питания системы управления умным домом.
И не нашел ничего лучше как разработать собственную плату управления   

А я думаю, что работа стоит денег. И я никогда не закладываю ничего лишнего или необоснованно дорогого, если этого не требуется по условиям. Поинтересуйтесь к примеру стоимостью реле безопасности от Pilz, а это всего лишь реле для пульта или барьера, но заказчик требует, т.к. ему важно сохранить конечности персонала. Сложно тоже стараюсь не делать. В отличие от вас я бы поставил на питание что-то типа DR-UPS40 и сэкономил бы неделю-другую времени, на рыбалку бы сходил, заказчику бы денег сэкономил. 

4 hours ago, AlexandrY said:

В принципе язык LD в ПЛК тоже избавляет от имен, но он не показывает состояния!
В ПЛК вообще нет языков показывающий состояния. 
И это огромный недостаток графических нотаций ПЛК

В принципе вы не знакомы с программированием ПЛК от слова совсем. Про какие имена вы вещаете. Всё давно используют имена для переменных, входов/выходов, функций и функциональных блоков. 

В ПЛК графические языки как раз и используют для случаев, когда важно видеть состояние каждого элемента и каждой операции. 

Я писал на Паскале, иногда пишу на Си, долго пользовался Матлабом. Сейчас в основном под ПЛК. И я могу сравнивать. В ПЛК есть свои особенности, но нет тех ограничений, о которых вы так уверенно заявляете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, syoma said:

Есть. Sequential Function Chart. Но программирование и графика там через одно место сделаны. Зато синтаксис формален очень.

Behavior-specification-of-an-IEC-61131-F

Согласен, здесь состояния локализованы. Вопрос подсвечиваются ли они при отладке.
Поскольку в дешевых домашних контроллерах я такого языка не видел.  

10 hours ago, skv8016 said:

В отличие от вас я бы поставил на питание что-то типа DR-UPS40 и сэкономил бы неделю-другую времени, на рыбалку бы сходил, заказчику бы денег сэкономил. 

Видите, вы не смогли сразу вот так просто найти даже приблизительный аналог моего решения. 

А в жизни будет так:
приходите к заказчику и говорите - чувак, на рынке такого нет, юзай то что дают.  Вот те шкаф с USP-ом, вот те свинцовай акуумуляторы, сувай это куда найдёшь.

Да, свои разработки обходятся поначалу тяжело. Приходится писать программы с десятками тысяч имен. Пока вы такие не писали вам даже невдомек о наличии такой проблемы. 100 входов с именами в ПЛК - просто детский лепет. 
Народ целые языки типа С++ придумывает чтобы эффективенее реюзать имена.   

 

10 hours ago, skv8016 said:

В ПЛК есть свои особенности, но нет тех ограничений, о которых вы так уверенно заявляете.

Я ж не говорю за все ПЛК в мире.
Я и свою плату могу назвать ПЛК с известной степенью лукавства.
Всуну туда https://micropython.org/ и все дела. 
Не об этом речь.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

55 minutes ago, AlexandrY said:

Согласен, здесь состояния локализованы. Вопрос подсвечиваются ли они при отладке.
Поскольку в дешевых домашних контроллерах я такого языка не видел.  

Да, в Codesys все подсвечивается при отладке - активные состояния, активные функции. Но я говорю - для тех, кто знает Stateflow, там будет весьма грустно с программированием - например любую операцию или условие надо оформлять отдельной полноценной функцией с объявлением входов и выходов. И вообще там представление рассчитано на последовательный проход состояний сверху вниз. Выключено-Запуск-Работа-Остановка-Возврат в исходное состояние.  Я попытался нарисовать простенький тестовый автомат в SFC, потом плюнул и вернулся в Stateflow. SFC должен быть во всех софтовых ПЛК - Codesys, Isagraf, Beckhoff, а вот в дешевеньких на нем экономят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 minutes ago, syoma said:

Да, в Codesys все подсвечивается при отладке - активные состояния, активные функции. Но я говорю - для тех, кто знает Stateflow, там будет весьма грустно с программированием - например любую операцию или условие надо оформлять отдельной полноценной функцией с объявлением входов и выходов. И вообще там представление рассчитано на последовательный проход состояний сверху вниз. Выключено-Запуск-Работа-Остановка-Возврат в исходное состояние.  Я попытался нарисовать простенький тестовый автомат в SFC, потом плюнул и вернулся в Stateflow. SFC должен быть во всех софтовых ПЛК - Codesys, Isagraf, Beckhoff, а вот в дешевеньких на нем экономят.

SFC привлекает в основном новичков. В реальности этим языком почти никто не пользуется, т.к. он ограничен только последовательным выполнением, а требуется автомат с последовательно/параллельной логикой Последовательность прохода задаётся флагами и/или переменной состояния, по которым и выполняются необходимые действия. 

И не вижу ничего плохого в оформлении операций в блоки. Вы же не разворачивание вручную циклы в проге для МК, да и функции всякие пишете. Подход один. Логика обработки немного отличается. Кстати рекомендую посмотреть на старые добрые кулачковые автоматы, где механически запускались те или иные операции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, skv8016 said:

И не вижу ничего плохого в оформлении операций в блоки. Вы же не разворачивание вручную циклы в проге для МК, да и функции всякие пишете

Ну иногда нужно просто сравнить значение какой-то переменной с определенным пороговым значением и перейти в другое состояние. Это одна операция, но в SFC ее надо оформлять в отдельную функцию, что просто усложняет читаемость. В Stateflow это сравнение можно просто включить в условие перехода и будет визуально красиво. Не говоря уже о том, что там можно делать переходы в любом направлении и не только последовательно.

62009828001_6030182641001_5604046034001-vs.jpg.dca9e93bc5e8312ae27509eab9d3bbc9.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

4 hours ago, syoma said:

В Stateflow это сравнение можно просто включить в условие перехода и будет визуально красиво.

Хоть я всегда был против показывать новые парадигмы на примитивных примерах, но в данном случае скажу.
Ваша диаграмма несколько дискредитирует принцип минимизации количества имен. 
Вот та переменная lightState не нуждалась в явном создании. 
Диаграмму можно было сделать так:

image.png.e8b068dee6d81a0d337da2cf5887096e.png

А о том какое состояние активно можно судить по выходу мониторинга. У каждого Chart-а есть такой выход.  

image.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну это была первая выхваченная из интернета картинка. Так что не судите строго :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 minutes ago, syoma said:

Ну это была первая выхваченная из интернета картинка. 

Ну рисунок в целом годный для тренировки.
В Матлабе обязательно надо иметь такие модельки чтобы проверять некоторые неинтуитивные свойства нотации. 

А вот как элементарно в этой модели  делается антидребезг сигнала switchPos.   

image.thumb.png.ce9d4c7e1040685da0b83c3dc3ef9e1d.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...