PDA

Просмотр полной версии : СПК100 в качестве Modbus Slave



Ptimafey
12.10.2016, 16:35
Настроил СПК110 как модбас слейв. Работает прекрасно, отвечает на запросы охотно, но передает нули вместо данных.
Как же так? Выручайте.

Ptimafey
12.10.2016, 16:55
http://www.owen.ru/forum/showthread.php?t=23069&highlight=Slave

Евгений Кислов
12.10.2016, 17:42
Без проекта и описания (что вы сделали/что вы ожидаете/что происходит на самом деле) крайне трудно будет что-то подсказать.
Возможно, вам поможет документ СПК. Modbus - там есть соответствующий пример.

Ptimafey
12.10.2016, 20:14
да уже переписал все.
ну насколько я понял, в кодесисе 3 не работает модбасный слейв. т.е. работает, но не разрешает изменять содержимое регистров. поэтому у меня все нули в ответах.
применил библиотеку овена со слейвом - заработало.

slonegd
13.10.2016, 07:57
Работает. Вот несколько вещей, которые сложно найти.
1. Регистры хранения нельзя изменить из программы слейва (вообще можно, там тока предупреждение появляется, а не ошибка, но не надо), меняются мастером функцией 16. Адреса регистров с 0 и по порядку.
2. Входные регистры можно изменять из программы слейва. Для чтения этих регистров мастером используйте функцию 04. Адреса регистров снова с 0 и по порядку.
Таким образом, обращение к регистру с адресом 0 функцией 16 и функцией 04 это обращение к разным регистрам.

Ptimafey
13.10.2016, 16:30
А я вот, продолжая эксперименты, обнаружил что не надо делать СООТНЕСЕНИЕ.
Если его сделать на %IW (а у меня там массив висел и только для того чтобы онлайн смотреть содержимое), то эта зона все время перетирается переменной из соотнесения.
Надо снять соотнесение и просто обращаться к областям %IW указателями или MEM.MemMove.
Так-то. :))