Kabdim 0 12 сентября, 2019 Опубликовано 12 сентября, 2019 · Жалоба Т.е. если на разных языках написать программу делающую одно и то же, то они тут же станут одинаковыми, а "копеечную разницу в синтаксисе можно игнорировать"? :) Ну значит все языки - одно и тоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 12 сентября, 2019 Опубликовано 12 сентября, 2019 · Жалоба 47 minutes ago, Kabdim said: Т.е. если на разных языках написать программу делающую одно и то же, то они тут же станут одинаковыми, а "копеечную разницу в синтаксисе можно игнорировать"? :) Ну значит все языки - одно и тоже. Нет же. Языки делают разными их библиотеки. Никто бы не знал сейчас питона если бы его автор не позаимствовал накопленные библиотеки у своих работодателей разработавших язык ABC, а сделал бы только благородный питоновый синтаксис. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 12 сентября, 2019 Опубликовано 12 сентября, 2019 · Жалоба В общем, посовещавшись с коллегами, и приняв во внимание все мнения, услышанные здесь, мы решили использовать нативный для процессора формат. Другими словами приложения компилировать для Cortex-M3, вызывать API через SVC. Сами приложения запускать в user-mode под присмотром MPU. Это пока самое преемлемое решение))) Всем ещё раз огромнейшее спасибо!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 13 сентября, 2019 Опубликовано 13 сентября, 2019 · Жалоба 23 часа назад, AlexandrY сказал: Языки делают разными их библиотеки. Ну что тут сказать? Можно только предложить писать с использованием libc, fatfs, etc на асемблере, питоне или бейсике. :D Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 13 сентября, 2019 Опубликовано 13 сентября, 2019 · Жалоба 3 hours ago, Kabdim said: Ну что тут сказать? Можно только предложить писать с использованием libc, fatfs, etc на асемблере, питоне или бейсике. :D Вы как будто не программист. Так кругом все и пишут - на чем найдут хорошие либы на том языке и пишут. Я бейсик применяю в MS Office, Python применяю для утилит на PC, Pascal на VCL , C# на .NET, ассемблер не имеет достойных либ потому на нем не пишу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба On 9/11/2019 at 2:52 PM, demiurg_spb said: Если так, то Вам сюда дорога https://beremiz.org/ Не разобрался я поначалу, что такое "беремиз". Сорри) У вас есть опыт портирования этого проекта на свою платформу? Если да, то могли бы вы поделиться немного этим опытом и ответить на пару маленьких вопросов) 1. Как долго портируется проект? 2. Можно ли как-то объяснить их компилятору, что программу нужно на языке Си выдавать многопоточной? Ну, например, в ПЛК я запускаю несколько независимых процессов: управление вентилятором и управление освещением. На родном Си/Си++ я бы запустил как минимум два потока в ОСРВ. Спасибо!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба 1. Проект не портируется, а создаётся Ваш плагин для интеграции вашего таргета в IDE Beremiz. По времени - всё зависит от квалификации разработчика от (нескольких дней до нескольких месяцев или даже лет). 2. "Их" компилятор - это Ваш родной компилятор Си, которым Вы обычно собираете прошивку для своего таргета. Поэтому как вы захотите так и будет. Хоть есть ОС в проекте, хоть нет. Глобальный смысл - дать возможность конфигурировать _пользовательскую_ часть СИ-проекта через интерфейс IDE Beremiz, не затрагивая базовых модулей проекта, коих может быть целая куча (интерфейсы, протоколы, алгоритмы и т.п.). Эти базовые модули уже скомпилированы заранее в системную библиотеку, ассоциированную с вашим плагином. Если будут дополнительные вопросы, то почитайте эту ветку https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=132105 и подпишитесь на рассылку [email protected]. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба 3 minutes ago, demiurg_spb said: то почитайте эту ветку Ок, дополнительные вопросы есть. Так что читаю. Спасибо!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
griabig 0 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба 7 hours ago, haker_fox said: Не разобрался я поначалу, что такое "беремиз". Сорри) У вас есть опыт портирования этого проекта на свою платформу? Если да, то могли бы вы поделиться немного этим опытом и ответить на пару маленьких вопросов) 1. Как долго портируется проект? 2. Можно ли как-то объяснить их компилятору, что программу нужно на языке Си выдавать многопоточной? Ну, например, в ПЛК я запускаю несколько независимых процессов: управление вентилятором и управление освещением. На родном Си/Си++ я бы запустил как минимум два потока в ОСРВ. Спасибо!!! 1) Базовое портирование примитивное. Нужен только таймер, который с задаваемым пользователем интервалом будет дёргать определённую процедуру. аппаратные входы-выходы привязываются по классике через МЭК-адреса, для этого обычно пишется модуль расширения для среды разработки Beremiz. Тут понадобится знание python. Сложность задачи зависит от того, что за железо и какие возможности по оффлайн-конфигурированию в среде разработке необходимы. Помимо прочего это расширение должно генерировать код для обновления входов и записи новых значений на выходы. Если расширение слишком сложно,то есть очень быстрый вариант с написанием библиотеки МЭК-функциональных блоков, использующих ваши нативные функции С(С++). То есть можно сделать, чтобы пользователь сам конфигурировал входы-выходы и выполнял опрос входов-выходов в цикле программы, когда ему необходимо. Это будет немного странно для ПЛК-программистов, но в целом можно быстро получить работающий прототип. Следующая сложность - это если вам нужна будет онлайн-отладка. Для целевых платформ на базе GNU/Linux с python системой исполнения уже всё сделано, а вот для встраиваемых систем придётся повозиться самому. Сложность опять же зависит от того, что за ОСРВ, какой интерфейс, какой протокол. И здесь уже точно без написания поддержки со стороны среды разработки не обойдётся. Для STM32 был порт yaplc. Возможно, там можно подглядеть что-нибудь. 2) С многопоточностью сложно. МЭК-стандарт изначально про многопоточность ничего не говорит. Генерируемый Си код про многопоточность ничего не знает и подразумевает исполнение в одно потоке всех МЭК программ. Соответственно никакие механизмы синхронизации для доступа к глобальным переменным не используются. Возможно, можно подправить макросы декларирования переменных и доступа, чтобы они использовали механизмы синхронизации, а может этого будет и недостаточно. Вопрос сложный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба @griabig, вот это ответ!!! Спасибо!!! Как я понял, вы уже этим проектом давно занимаетесь? Насколько сейчас "безглючные" тексты на Си генерирует matiec по языкам МЭК? На что следует обратить внимание после портирования на свою платформу? И ещё, можно ли доверить "beremiz" генерить программы для ответственных применений? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
griabig 0 17 сентября, 2019 Опубликовано 17 сентября, 2019 (изменено) · Жалоба 49 minutes ago, haker_fox said: @griabig, вот это ответ!!! Спасибо!!! Как я понял, вы уже этим проектом давно занимаетесь? Насколько сейчас "безглючные" тексты на Си генерирует matiec по языкам МЭК? На что следует обратить внимание после портирования на свою платформу? И ещё, можно ли доверить "beremiz" генерить программы для ответственных применений? Сложно на такой вопрос ответить однозначно без покрытия тестами результатов кодогенератора. Вот здесь есть список проблем (а иногда и не проблем) в кодогенераторе: https://bitbucket.org/mjsousa/matiec/issues?status=new&status=open Из того, с чем я сталкивался это проблемы в языке SFC. Но с ними я сталкивался и у другого платного рантайма. Мои коллеги, программирующие ПЛК, в принципе, SFC не очень доверяют при реализации ответственных систем на других известных закрытых системах. Есть некоторые небольшие особенности кодогенератора и для LD из-за того, что он конвертируется в ST. Когда пишешь на ST обычно проблем нет. Я бы лично автоматизацию каких-то опасных объектов, в принципе, на чём-то новом и необкатанном не стал делать. Что касается Beremiz то вот ИНЭУМ им Брука, выпускающий СМ1820, раньше регулярно на конференциях по атомной энергетике про Beremiz рассказывал. Не знаю, правда, применяют ли они его фактически на атомных объектах, а если используют, то какой версии кодогенератор используется и исправляли ли они в нём какие-то ошибки или нет. Изменено 17 сентября, 2019 пользователем griabig Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба 4 hours ago, griabig said: Сложно на такой вопрос ответить однозначно без покрытия тестами результатов кодогенератора. Понятно! В любом случае спасибо за опыт. Надо будет самому поиграться с этой системой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 14 18 сентября, 2019 Опубликовано 18 сентября, 2019 · Жалоба А разве Beremiz поддерживает написание программ на Си и чём-нибудь Си-подобном? Для него же вроде только языки программирования ПЛК используются? ТС, Pawn не подошёл? Почему, если не секрет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 18 сентября, 2019 Опубликовано 18 сентября, 2019 · Жалоба 1 hour ago, arhiv6 said: Для него же вроде только языки программирования ПЛК используются? Да, похоже, что они нам и подойдут. 1 hour ago, arhiv6 said: А разве Beremiz поддерживает написание программ на Си и чём-нибудь Си-подобном? Его компилятор matiec компилирует LD, FBD, ST и т.п. в plain C. 1 hour ago, arhiv6 said: ТС, Pawn не подошёл? Почему, если не секрет? Не подошёл. Заказчик не хочет изучать "си-подобный язык". Либо Си, либо Си++. Сейчас, оказлось, что согласен на МЭКовские. Но это пока. Поскольку он твёрдо согласен на Си, а Beremiz даёт на выходе Си, то будем делать поддержку со стороны нашего ПЛК Си. Извините за тавтологию))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 18 сентября, 2019 Опубликовано 18 сентября, 2019 · Жалоба 1 hour ago, arhiv6 said: А разве Beremiz поддерживает написание программ на Си и чём-нибудь Си-подобном? Для него же вроде только языки программирования ПЛК используются? ТС, Pawn не подошёл? Почему, если не секрет? Думаю рядовые юзеры на языках PLC делают настолько примитивные конструкции, что их программы можно отобразить декларативными языками типа JSON. А JSON эт уже крайний уровень простоты и портируемости. Вариант с разработкой на МЭК-овском ST или LD который транслируется снова в C-и, который опять надо компилироваться в неизолированную среду платформы представляется довольно абсурдным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться