Вы с инженером-системотехником по образованию разговариваете.
Стандарт МЭК.... разработан именно для того, чтобы технолог-программист этого не знал и об этом не задумывался.
Модель такого ПЛК приведите пожалуйста.
Вы с инженером-системотехником по образованию разговариваете.
Стандарт МЭК.... разработан именно для того, чтобы технолог-программист этого не знал и об этом не задумывался.
Модель такого ПЛК приведите пожалуйста.
Нет чего?
Какая-то модель есть. В самом простом смысле уже много раз разбирали, что "сколько раз выходные переменные не меняй, всё равно будет видно лишь последнее значение".
Если локальную переменную (не та, которая in, а простую) ФБ могут изменить извне, это действительно печаль.
Как панель может обратиться ко внутренней переменной -- ума не приложу. Тоже через указатели? Как-то уже совсем невероятно.
Хорошо, принято.
Да, с благими целями создаются стандарты.
К сожалению, если компилятор и железо слепо следует программе, то программа выполняется слишком медленно.
Т.е. даже для однопоточных программ нужны какие-то допущения, чтобы компилятор и процессор могли выполнять код так, как будет быстрее.
Я к чему: абстракции текут, и в многопоточных приложениях от синхронизации никуда не уйти.
Как вариант -- сказать, что "при одновременной работе со смежными областями памяти может быть что угодно" (== undefined behavior), и это тоже вариант "модели памяти".
Упрощает ли он жизнь программисту? Едва ли.
Так ли работает КДС? -- фиг знает.
Если бы В.Филоненко сказал "для выполнения IO задачи на всех ядрах, в том числе, на PRU приостанавливаются, выполняется ввод-вывод, и потом возобновляются программы", то это бы объясняло как именно синхронизируется IO и PRU/цикл.
Но, В.Филоненко сказал, что "PRU вообще в realtime работает, и не влияет на цикл".
ПЛК110-24-32.К-М02
в семене ФБ делится на сам ФБ с логикой и блок данных из объявленных переменных, в КДС это как раз о чем Вы говорили. В степе можно обращаться из вне к адресу этого блока данных и делать с ним что хочется, в КДС это можно только через указатель
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
И? Вы готовы утверждать, что в этом ПЛК истинно многозадачная среда исполнения?ПЛК110-24-32.К-М02
Понятно....
При чем тут PRU и "классический" функционал КДС??????
Чего не знаю, того не знаю.
Если серьёзно, то и PRU и КДС могут работать с fast DI/DO -- т.е. возможны гонки (data races).
Ну, я же про PRU с первого сообщения говорю. Если оно совсем не в кассу, можно было так и сказать. Я ж не такой дурак, как может показаться. Читать умею. Но сейчас всё выглядит так, что PRU выполняется одновременно с циклом, значит возможны потенциальные конфликты за память/входы/выходы.
Ещё потенциально смежный вопрос -- 20us таймер. Ещё одна возможность выполнять задачу "чаще цикла".
Там тоже вопросы "что можно, а что нельзя" делать в этой задаче на обработку 20us таймера.
Блиннннннн....
PRU не имеет к "классическому" функционалу КДС никакого отношения! Рассматривайте его, как сопроцессор ввода-вывода (некая аналогия - сопроцессор плавающей точки в архитектуре i86).
Сразу с этого начинали бы - и не морочили людям голову.
Да понимаю я, что PRU это сопроцессор. И прекрасно понимаю, что там отдельный компилятор и заливатор кода (я его запускал, но до железа дело не дошло).
Но к функционалу КДС это PRU имеет отношение самое простое: с помощью библиотеки PruAccessLib.lib идёт общение между "основным циклом и PRU".
И, да, вопрос не только про PRU.