ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
720291
Связанные сообщения
Plc
Кто как защищает вход контроллера 4...20 мА? Есть спец. микруха MAX14626, но её крайне сложно достать. Чтобы такое несложное на ...2022-07-20
Ух ты! 2016 год. Вторая ссылка. Прошло достаточно времени чтобы "увидеть истинный вектор движения".2022-04-03
господа эмбеддера, рынок плк пуст, практически, занимайте свои ниши.2022-04-01
У кого как с ПЛК и пром. автоматикой? Производителей подводит отсутствие готового товара на складах. Всё как ранее описывал С...2022-03-20
ПРограммируемы логические контроллеры - чтоб почитать?2022-02-19
[Универсальная проводная шина для задач "распределенный PLC"]. Одна витая пара, дуплекс, до 100 Кбит/сек, гальваническ...2020-05-03
На сахаре несколько раз всплывала тема данных в питании. Наиболее адекватная идея -- отвязать питание через дроссель (фильтр НЧ)...2020-04-03
[IEC 61131-3 часть 2.3] Отечественные фирмы, производящие ПЛК "вокруг да около" стандартных языков.2017-06-21
[IEC 61131-3 часть 2.2] Среды для работы с языками. GPL, проприетарные.2017-06-21
[IEC 61131-3 часть 2] Кто какие знает ресурсы по теме? Делимся, обсуждаем.2017-06-21
Вспомнинается, тут давали интересную идею: использовать IRDA-трансивер/приёмник (только электрический, без оптики). Идея в том, ...2016-01-23
Передача информации по проводам. Тут давали интересную идею (см. ссылку). Мол многие МК сейчас имеют IRDA и ежели развязать тран...2014-04-15
Есть ли здесь люди, которые разрабатывали свой PLC и софт для него? Как обычно реализуют интерпретатор логики унутре PLC? Как я ...2010-03-17
Evgeny_CD, Архитектор (13.12.2016 23:30, просмотров: 45408)
[Фундаментальная размышлизма.] Опенсорц, С++ и победа прогрессивного человечества. http://caxapa.ru/717646.html
http://caxapa.ru/720035.html
Пусть мы все вместе решили заработать на народном PLC контроллере. Контроллерах. Который будем делать на основе продвинутой идеи -> Каждый из нас знает, как лучше всего сделать схемотехнику входов, скомпоновать и развести плату, сделать блок питания и защиту от помех. Эта задача по плечу небольшой фирмешке с толковыми сотрудниками. Но "идеальную железяку" без ПО можно продать ровно за 0 рублей. Независимо от степени идеальности. А вот потянуть в одниночку разработку всего ПО, касающегося PLC (условно) - это задача для такой фирмешки лет на 10. Причем надо еще на что-то жить в процессе перехода по пустыне. Можно сходить в сторону открытых решений. Всякие там http://www.openplcproject.com и иже с ними. Но надо аккуратно смотреть на лицензию. Иначе нарваться можно. Мы пойдем другим путем. Пишем некую высокоуровневую библиотеку классов С++, не зависящую от сторонних библиотек. Т.е. при запуске на какой-то платформе к ней подключают платформенно-зависимые либы (чтобы тот же prinf заработал), но сама по себе "наша либа" должна идти на любом компилере, скажем, С++11. Мегалибу пишем на некотором подмножестве С++ в духе презы Effective C++ in an Embedded Environment --> Поясню на примере структуру либы. У нас распределенная система, значит, есть канал связи. Модель канала с точностью до бита - это уже реализация. Это лишнее. А вот модель на канальном уровне, которая оперирует понятиями "синхрослово принято", "кодовая посылка с ECC принята", причем с данными некоего "виртуального таймера", когда с точки зрения модели это случилось - самое то. Важно выписать эту систему классов, не скатиться в реализацию сразу. Вот какая именно ECC - сейчас не важно. Есть поля и методы класса, и мы работаем только с ними. Вот декодирована пачка бит, вот столько там было ошибок. Вот некорректируемая ошибка встретилась и т.д. Передача в канал - аналогично. Идем дальше. Код мы пишем не просто так, а сразу под управлением RTOS'ки типа RIOT http://caxapa.ru/717429.html От этой ОСьки нам важен ее синтетический порт - это когда она без смены прикладного API запускается под Linux. Причем, важно, что можно запустить несколько копий ОСьки, и заставить их работать совместно с однойм моделью канала. Полная симуляция сети устройств. Аналогично сделано в части IO. Т.е. на уровне высокоуровневой модели все IO - это набор событий и команд по управлению выходами. С привязкой к "таймеру симуляции". А вот модель обработки собственно PLC - это уже уровень нашей высокоуровневой модели. + еще "редактор PLC", чтобы можно было прогу этого PLC писать на одном из 5 стандартных языков (или на их смеси - если трава будет качественная). http://www.openplc …ect.com/plcopen-editor Крайне важным для успеха дела является документация на мегалибу. Очень подробная. Как учебник. Завершающим шрихом является правильная лицензия. Чтобы мегалибу можно было кобирать в исполняемый бинарник с закрытым кодом. Ну и какую-нибудь защиту от зловредности придумать - чтобы если исходник мегалибы правил, то обязан открыть, а так все твое. Вот, становится понятно, зачем С++ вообще нужен :) Почему это имеет шансы на успех? В чистом открытом виде мегалибу скомпилить в контроллер нельзя. Нужно написать реализацию классов для этого случая. Что совсем нетриальная задача. Следовательно, открытость никак не мешает зарабатывать бабло. Она даже помогает этому - потому что созданная усилиями кучи народа мегалиба является необходимым условием, чтобы все эти народные PLC начали продаваться. И при грамотном выборе набора уровней, на которые распространяется открытость, участвовать в разработке будет выгодно всем. Вот ради таких проектов и стоит нарщивать ресурсы контроллеров, чтобы С++ вполне нормально шел на них в железе. Вопрос в том, как такую либу написать "с нуля", чтобы она была и эффективна, и совместима со всеми средами.