Обновить

Комментарии 5

Для обработки переменных разных типов, можно было бы использовать шаблон Посетитель, код был избавлены от ненужных If и легко можно было бы добавлять другие типы, не меняя при этом бизнес логику.

Если вы уже работаете с CodeSys, я не очень понимаю выбор modbus в качестве протокола общения. У вас были какие-то жёсткие ограничения на плк? Или есть конкретные бизнес-требования? Почему не прямое общения по tcp?

Так же у вас есть упоминание, что на плк могут быть разные проекты. Они все работают по modbus с одинаковыми контрактом общения? Было бы интересно понять что происходит со стороны CodeSys

Добавил дополнительную главу «Почему Modbus?», думаю, она ответит на некоторые вопросы.

Не совсем понял про.

прямое общения по tcp

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

Так же у вас есть упоминание, что на плк могут быть разные проекты. Они все работают по modbus с одинаковыми контрактом общения?

Проект был только один, до других проектов не дошло, но предполагалось, что они будут. Сначала был создан проект, потом к нему добавили устройство Modbus TCP.

Было бы интересно понять что происходит со стороны CodeSys

К сожалению, у меня нет проекта и нет CODESYS, чтобы предоставить что-то конкретное, могу лишь сказать, что для чтения и записи в регистры Modbus использовался синтаксис.

AT %IW
AT %QW
AT %MW

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

Не осилил ModbusVariable<T>, но статью написать надо было. Печально

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации