Было условно: программа -> С -> машинный код.
Стало: программа -> p-code -> C -> машинный код.
Каждая -> это соответствующий компилятор, увеличение объема программы и ухудшение быстродействия (за счет ухудшения оптимальности), а также возможность ошибок.
Программа определенно не станет надежнее, а переносить её - куда? У вас уже есть "p-code" - это тот язык, на котором написаны функциональные блоки.
Да, стрелки примерно такие, но цепочка "p-code -> C -> машинный код" делается 1 раз и именно она зашивается в прошивку.
Т.е. ПР умеет выполнять p-code, и для ОЛ не приходится связываться с C и мышиными кодами. В ОЛ остаётся более простая операция "FBD -> p-code".
Да хоть бы между разными ПР переносить.
ПР200 и ПР114 это разные платформы.
Предлагаете встроенный интерпретатор? Но тогда программа будет представлять собой фактически текст на промежуточном коде и чтобы его выполнить, в памяти контроллера должен помещаться не только код самого интерпретатора, но и код всех подпрограмм, которые реализуют выполнение каждого оператора промежуточного кода. Если библиотека операторов мала, то растет объем пользовательской программы, если операторов много, то растет объем библиотеки - в любом случае уменьшается доступная пользователю память для его алгоритма. При этом, интерпретатор с библиотекой входит в фирменную прошивку контроллера - ядро, а значит при обновлении библиотеки, например связанном с выходом новой версии ОЛ, придется обновлять и ядро контроллера.
starmos а вы считаете что с выходом новой версии ОЛ сейчас не так ?, не замечали, что ОЛ меняет прошивку ПР и иногда разработчики выкладывают без серьезной проверки версии, что народу приходится откатываться ?
Я думаю это не сознательная политика, а просто следствие переходного периода. В идеале внутренняя прошивка должна меняться реже, чем версии ОЛ.
starmos а она и меняется реже, иногда же исправляют ошибки самого ОЛ или дорабатывают интерфейс, а иногда дела касается и сам ПР, тогда идет смена прошивки