Указатель и ссылочное поведение во время онлайн-изменений

Может ли кто-нибудь помочь мне с дополнительной информацией о том, как ведут себя указатели, ссылки и ссылки на интерфейсы во время онлайн-изменения?

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

1 ответ

При внесении онлайн-изменений переменные, функциональные блоки и другие части программы могут перемещаться в другую область памяти. Поэтому, если адрес указателя является старой информацией, он может ссылаться на адрес памяти, содержащий что-то еще.

Поэтому, если указатели используются, они должны регулярно обновляться с помощью команды ADR, как вы сказали.

При использовании ссылок и интерфейсов я не вижу никаких проблем с онлайн-изменениями, потому что система должна обрабатывать их автоматически. В TwinCAT 3 система будет автоматически переадресовывать переменные (источник: https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_plc_intro/9007199390694027.html&id=), и поскольку она основана на Codesys, Я думаю, что то же самое с другими системами.

При использовании ссылок может быть хорошей идеей проверить правильность ссылки. В TwinCAT 3 есть функция __ISVALIDREF и это должно быть также в других системах на базе Codesys.

Другие вопросы по тегам