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

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

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

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


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

47 minutes ago, Kabdim said:

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

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

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


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

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

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


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

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

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

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

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


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

3 hours ago, Kabdim said:

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

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

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


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

On 9/11/2019 at 2:52 PM, demiurg_spb said:

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

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

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

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

Спасибо!!!

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


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

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

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

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

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

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

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

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

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

и подпишитесь на рассылку [email protected].

 

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


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

3 minutes ago, demiurg_spb said:

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

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

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


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

7 hours ago, haker_fox said:

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

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

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

Спасибо!!!

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

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

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

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

 

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

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


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

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

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


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

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 рассказывал. Не знаю, правда, применяют ли они его фактически на атомных объектах, а если используют, то какой версии кодогенератор используется и исправляли ли они в нём какие-то ошибки или нет.

Изменено пользователем griabig

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


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

4 hours ago, griabig said:

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

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

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


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

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

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

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


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

1 hour ago, arhiv6 said:

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

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

1 hour ago, arhiv6 said:

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

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

1 hour ago, arhiv6 said:

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

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

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


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

1 hour ago, arhiv6 said:

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

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

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

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


 

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


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

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

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

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

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

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

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

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

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

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