Jump to content

    

Виртуальная машина

Т.е. если на разных языках написать программу делающую одно и то же, то они тут же станут одинаковыми, а "копеечную разницу в синтаксисе можно игнорировать"? :) Ну значит все языки - одно и тоже.

Share this post


Link to post
Share on other sites
47 minutes ago, Kabdim said:

Т.е. если на разных языках написать программу делающую одно и то же, то они тут же станут одинаковыми, а "копеечную разницу в синтаксисе можно игнорировать"? :) Ну значит все языки - одно и тоже.

Нет же.
Языки делают разными их библиотеки.
Никто бы не знал сейчас питона если бы его автор не позаимствовал накопленные библиотеки у своих работодателей разработавших язык ABC, а сделал бы только благородный питоновый синтаксис.  

Share this post


Link to post
Share on other sites

В общем, посовещавшись с коллегами, и приняв во внимание все мнения, услышанные здесь, мы решили использовать нативный для процессора формат. Другими словами приложения компилировать для Cortex-M3, вызывать API через SVC. Сами приложения запускать в user-mode под присмотром MPU. Это пока самое преемлемое решение))) Всем ещё раз огромнейшее спасибо!!!

Share this post


Link to post
Share on other sites
23 часа назад, AlexandrY сказал:

Языки делают разными их библиотеки.

Ну что тут сказать? Можно только предложить писать с использованием libc, fatfs, etc на асемблере, питоне или бейсике. :D

Share this post


Link to post
Share on other sites
3 hours ago, Kabdim said:

Ну что тут сказать? Можно только предложить писать с использованием libc, fatfs, etc на асемблере, питоне или бейсике. :D

Вы как будто не программист.
Так кругом все и пишут - на чем найдут хорошие либы на том языке и пишут.
Я бейсик применяю в MS Office, Python применяю для утилит на PC,  Pascal  на VCL , C# на .NET, ассемблер не имеет достойных либ потому на нем не пишу. 

Share this post


Link to post
Share on other sites
On 9/11/2019 at 2:52 PM, demiurg_spb said:

Если так, то Вам сюда дорога https://beremiz.org/

Не разобрался я поначалу, что такое "беремиз". Сорри) У вас есть опыт портирования этого проекта на свою платформу? Если да, то могли бы вы поделиться немного этим опытом и ответить на пару маленьких вопросов)

1. Как долго портируется проект?

2. Можно ли как-то объяснить их компилятору, что программу нужно на языке Си выдавать многопоточной? Ну, например, в ПЛК я запускаю несколько независимых процессов: управление  вентилятором и управление освещением. На родном Си/Си++ я бы запустил как минимум два потока в ОСРВ.

Спасибо!!!

Share this post


Link to post
Share on other sites

1. Проект не портируется, а создаётся Ваш плагин для интеграции вашего таргета в IDE Beremiz.

    По времени - всё зависит от квалификации разработчика от (нескольких дней до нескольких месяцев или даже лет).

2. "Их" компилятор - это Ваш родной компилятор Си, которым Вы обычно собираете прошивку для своего таргета.

    Поэтому как вы захотите так и будет. Хоть есть ОС в проекте, хоть нет.

    Глобальный смысл - дать возможность конфигурировать _пользовательскую_ часть СИ-проекта через интерфейс IDE Beremiz,

    не затрагивая базовых модулей проекта, коих может быть целая куча (интерфейсы, протоколы, алгоритмы и т.п.).

    Эти базовые модули уже скомпилированы заранее в системную библиотеку, ассоциированную с вашим плагином.

Если будут дополнительные вопросы, то почитайте эту ветку https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=132105

и подпишитесь на рассылку beremiz-devel@lists.sourceforge.net.

 

Share this post


Link to post
Share on other sites
3 minutes ago, demiurg_spb said:

то почитайте эту ветку

Ок, дополнительные вопросы есть. Так что читаю. Спасибо!!!

Share this post


Link to post
Share on other sites
7 hours ago, haker_fox said:

Не разобрался я поначалу, что такое "беремиз". Сорри) У вас есть опыт портирования этого проекта на свою платформу? Если да, то могли бы вы поделиться немного этим опытом и ответить на пару маленьких вопросов)

1. Как долго портируется проект?

2. Можно ли как-то объяснить их компилятору, что программу нужно на языке Си выдавать многопоточной? Ну, например, в ПЛК я запускаю несколько независимых процессов: управление  вентилятором и управление освещением. На родном Си/Си++ я бы запустил как минимум два потока в ОСРВ.

Спасибо!!!

1) Базовое портирование примитивное. Нужен только таймер, который с задаваемым пользователем интервалом будет дёргать определённую процедуру.

аппаратные входы-выходы привязываются по классике через МЭК-адреса, для этого обычно пишется модуль расширения для среды разработки Beremiz. Тут понадобится знание python. Сложность задачи зависит от того, что за железо и какие возможности по оффлайн-конфигурированию в среде разработке необходимы. Помимо прочего это расширение должно генерировать код для обновления входов и записи новых значений на выходы.

Если расширение слишком сложно,то есть очень быстрый вариант с написанием библиотеки МЭК-функциональных блоков, использующих ваши нативные функции С(С++). То есть можно сделать, чтобы пользователь сам конфигурировал входы-выходы и выполнял опрос входов-выходов в цикле программы, когда ему необходимо. Это будет немного странно для ПЛК-программистов, но в целом можно быстро получить работающий прототип.

Следующая сложность - это если вам нужна будет онлайн-отладка. Для целевых платформ на базе GNU/Linux с python системой исполнения уже всё сделано, а вот для встраиваемых систем придётся повозиться самому. Сложность опять же зависит от того, что за ОСРВ, какой интерфейс, какой протокол. И здесь уже точно без написания поддержки со стороны среды разработки не обойдётся. Для STM32 был порт yaplc. Возможно, там можно подглядеть что-нибудь.

 

2) С многопоточностью сложно. МЭК-стандарт изначально про многопоточность ничего не говорит. Генерируемый Си код про многопоточность ничего не знает и подразумевает исполнение в одно потоке всех МЭК программ. Соответственно никакие механизмы синхронизации для доступа к глобальным переменным не используются. Возможно, можно подправить макросы декларирования переменных и доступа, чтобы они использовали механизмы синхронизации, а может этого будет и недостаточно. Вопрос сложный.

Share this post


Link to post
Share on other sites

@griabig, вот это ответ!!!:dance3: Спасибо!!! Как я понял, вы уже этим проектом давно занимаетесь? Насколько сейчас "безглючные" тексты на Си генерирует matiec по языкам МЭК? На что следует обратить внимание после портирования на свою платформу? И ещё, можно ли доверить "beremiz" генерить программы для ответственных применений?

Share this post


Link to post
Share on other sites
49 minutes ago, haker_fox said:

@griabig, вот это ответ!!!:dance3: Спасибо!!! Как я понял, вы уже этим проектом давно занимаетесь? Насколько сейчас "безглючные" тексты на Си генерирует matiec по языкам МЭК? На что следует обратить внимание после портирования на свою платформу? И ещё, можно ли доверить "beremiz" генерить программы для ответственных применений?

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

Вот здесь есть список проблем (а иногда и не проблем) в кодогенераторе: https://bitbucket.org/mjsousa/matiec/issues?status=new&status=open

Из того, с чем я сталкивался это проблемы в языке SFC. Но с ними я сталкивался и у другого платного рантайма. Мои коллеги, программирующие ПЛК, в принципе, SFC не очень доверяют при реализации ответственных систем на других известных закрытых системах.  Есть некоторые небольшие особенности кодогенератора и для LD из-за того, что он конвертируется в ST. Когда пишешь на ST обычно проблем нет.

Я бы лично автоматизацию каких-то опасных объектов, в принципе, на  чём-то новом и необкатанном не стал делать. Что касается Beremiz то вот ИНЭУМ им Брука, выпускающий СМ1820, раньше регулярно на конференциях по атомной энергетике про Beremiz рассказывал. Не знаю, правда, применяют ли они его фактически на атомных объектах, а если используют, то какой версии кодогенератор используется и исправляли ли они в нём какие-то ошибки или нет.

Edited by griabig

Share this post


Link to post
Share on other sites
4 hours ago, griabig said:

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

Понятно! В любом случае спасибо за опыт. Надо будет самому поиграться с этой системой.

Share this post


Link to post
Share on other sites

А разве Beremiz поддерживает написание программ на Си и чём-нибудь Си-подобном? Для него же вроде только языки программирования ПЛК используются?

ТС, Pawn не подошёл? Почему, если не секрет?

Share this post


Link to post
Share on other sites
1 hour ago, arhiv6 said:

Для него же вроде только языки программирования ПЛК используются?

Да, похоже, что они нам и подойдут.

1 hour ago, arhiv6 said:

А разве Beremiz поддерживает написание программ на Си и чём-нибудь Си-подобном?

Его компилятор matiec компилирует LD, FBD, ST и т.п. в plain C.

1 hour ago, arhiv6 said:

ТС, Pawn не подошёл? Почему, если не секрет?

Не подошёл. Заказчик не хочет изучать "си-подобный язык". Либо Си, либо Си++. Сейчас, оказлось, что согласен на МЭКовские. Но это пока. Поскольку он твёрдо согласен на Си, а Beremiz даёт на выходе Си, то будем делать поддержку со стороны нашего ПЛК Си. Извините за тавтологию)))

Share this post


Link to post
Share on other sites
1 hour ago, arhiv6 said:

А разве Beremiz поддерживает написание программ на Си и чём-нибудь Си-подобном? Для него же вроде только языки программирования ПЛК используются?

ТС, Pawn не подошёл? Почему, если не секрет?

Думаю рядовые юзеры на языках PLC делают настолько примитивные конструкции, что их программы можно отобразить декларативными  языками типа JSON.
А JSON эт уже крайний уровень простоты и портируемости. 

Вариант с разработкой на МЭК-овском ST или LD  который транслируется снова в C-и, который опять надо компилироваться в неизолированную среду платформы представляется довольно абсурдным.


 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now