Настроил СПК110 как модбас слейв. Работает прекрасно, отвечает на запросы охотно, но передает нули вместо данных.
Как же так? Выручайте.
Настроил СПК110 как модбас слейв. Работает прекрасно, отвечает на запросы охотно, но передает нули вместо данных.
Как же так? Выручайте.
Без проекта и описания (что вы сделали/что вы ожидаете/что происходит на самом деле) крайне трудно будет что-то подсказать.
Возможно, вам поможет документ СПК. Modbus - там есть соответствующий пример.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
да уже переписал все.
ну насколько я понял, в кодесисе 3 не работает модбасный слейв. т.е. работает, но не разрешает изменять содержимое регистров. поэтому у меня все нули в ответах.
применил библиотеку овена со слейвом - заработало.
Работает. Вот несколько вещей, которые сложно найти.
1. Регистры хранения нельзя изменить из программы слейва (вообще можно, там тока предупреждение появляется, а не ошибка, но не надо), меняются мастером функцией 16. Адреса регистров с 0 и по порядку.
2. Входные регистры можно изменять из программы слейва. Для чтения этих регистров мастером используйте функцию 04. Адреса регистров снова с 0 и по порядку.
Таким образом, обращение к регистру с адресом 0 функцией 16 и функцией 04 это обращение к разным регистрам.
А я вот, продолжая эксперименты, обнаружил что не надо делать СООТНЕСЕНИЕ.
Если его сделать на %IW (а у меня там массив висел и только для того чтобы онлайн смотреть содержимое), то эта зона все время перетирается переменной из соотнесения.
Надо снять соотнесение и просто обращаться к областям %IW указателями или MEM.MemMove.
Так-то. )