Панель Weintek как slave устройство (Modbus server)

Здесь мы публикуем ответы на ваши наиболее частые вопросы по продукции Weintek

Модераторы: kiv, 8bit, VanMo

Панель Weintek как slave устройство (Modbus server)

Сообщение VanMo » 17 май 2012, 12:34

Чтобы настроить панель как Modbus RTU/ASCII slave, достаточно добавить в проект устройство "MODBUS Server" или "MODBUS ASCII Server" соответственно для RTU и для ASCII.
В настройках необходимо указать параметры связи и адрес устройства.

Modbus Server.jpg
Modbus Server.jpg (84.18 КБ) Просмотров: 21061


Соответствие регистров Modbus памяти панели:
LB 0 ~ 9998 соответствует 0x/1x 1 ~ 9999
LW 0 ~ 9998 соответствует 3x/4x 1 ~ 9999
RW 0 ~ 55536 соответствует 3x/4x 10000 ~ 65536
Тестовый проект:
ModbusServer.zip
(14.27 КБ) Скачиваний: 2560
VanMo
 
Сообщения: 375
Зарегистрирован: 16 авг 2011, 09:31

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение arhatkin » 03 дек 2013, 11:04

День добрый. А как разделить Hold и Input регистры (по datasheet регистры 3х и 4х доступны только через LW, причет 3х0001 - это LW0 и 4х0000 - это LW0).
arhatkin
 
Сообщения: 7
Зарегистрирован: 23 ноя 2013, 18:05

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение arhatkin » 03 дек 2013, 11:45

кстате ссылка на расположение адресов не открывается
arhatkin
 
Сообщения: 7
Зарегистрирован: 23 ноя 2013, 18:05

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение den_po » 03 дек 2013, 15:47

а есть необходимость их разносить?
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение VanMo » 03 дек 2013, 16:05

Ссылку исправил. Регистры 3х и 4х ассоциированы с одним и тем же пространством LW0~9998. Не понятно, зачем нужен раздельный доступ? Тем более, что 3х-регистры доступны только для чтения.
VanMo
 
Сообщения: 375
Зарегистрирован: 16 авг 2011, 09:31

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение arhatkin » 03 дек 2013, 17:09

согласен, 3х (Input_Register)-только для чтения, но это со стороны MODBUS master (тобишь персоналки), а со стороны MODBUS slave (тобишь панели) исправления вполне возможны. Разве нет? В итоге так как 3х и 4х регистры ассоциированны с одним пространством, записывая в регистры 4х мы меняем значения регистров 3х.
Мною был проведен экперимент: Вначале было записано по команде ModBus 10h в регистры 0000h....0003h значений 1,2,3,4. Затем прочитано по команде 04h значение регистров 0000h...0005h и полуно 1,2,3,4,0,0... Писал в Holding Register, а в панели изенились как Holding Register, так и Input Register. Вот в чем проблема.
arhatkin
 
Сообщения: 7
Зарегистрирован: 23 ноя 2013, 18:05

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение VanMo » 03 дек 2013, 17:58

Все верно, Ваш эксперимент подтвердил правило.
В каждом устройстве, в котором реализуется протокол Modbus-slave, регистры назначаются произвольным образом, на усмотрение производителя.
В данном случае, панель предоставляет полный доступ ко всем имеющимся регистрам памяти и нет никакого смысла в разделении этой памяти на пространства Input registers и Holding registers.
У Вас есть полная свобода назначить какие угодно регистры для взаимодействия с проектом.
VanMo
 
Сообщения: 375
Зарегистрирован: 16 авг 2011, 09:31

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение arhatkin » 03 дек 2013, 18:47

Если панель в режиме slave, значит работаем по запросам от внешней системы, так?
И вот ситуация: извне командой WriteHoldingRegister обновляются значения HoldingRegister (допустим с 0-го по 5-ый), следом снешняя система запрашивает значения InputRegister командой ReadInputRegister (так же с 0-го по 5-ый) и получает в ответ паравоз из 6-ти байт со значениями HoldingRegister. ModBus то апппаратный и отвечает панель соответственно автоматически. Что лежало на данный момент в регистрах LW0...LW5, то и отправила. А как вклиниться в этот процес, дабы подпихнуть истинные данные я не нашел. Потому и обратился за советом.
"Полная свобода назначить какие угодно регистры для взаимодействия с проектом" - я так понимаю имеется ввиду, что при разработке протокола обмена заранее заложить смещение адреса младшего InputRegister с 0-го на значение адреса старшего HoldingRegister, так? А что делать, если протокол уже есть? Или же есть возможность самому разделить адресное пространство на Input registers и Holding registers?
arhatkin
 
Сообщения: 7
Зарегистрирован: 23 ноя 2013, 18:05

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение den_po » 04 дек 2013, 09:21

arhatkin писал(а):А как вклиниться в этот процес, дабы подпихнуть истинные данные я не нашел

какие данные панели считаются истинными?
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Панель Weintek как slave устройство (Modbus server)

Сообщение arhatkin » 04 дек 2013, 11:26

какие данные панели считаются истинными?
причем тут данные панели? истинные данные - это запрашиваемые данные. Из конкретного типа регистра.
по протоколу ModBus посылка включает в себя адрес начального регистра ( HoldingRegister или InputRegister неважно ). Как я понял для драйвера панели ModBus_Server 0-ой адрес HoldingRegister и 0_ой адрес InputRegister одно и тоже - LW0000. Так? В итоге при чтении (команда 04 или 03), задавая начальное значение адреса регистра как "0", в ответ я могу получить значение нулевого регистра как InputRegister так и HoldingRegister (они же одинаковы для панели). Все зависит от того какие данные я записал в LW0 на момент запроса. Все же делается аппаратно! HoldingRegister можно не только записывань, но и читать. И вот как раз при чтении есть вероятность получить данные InputRegister, считанные из LW
arhatkin
 
Сообщения: 7
Зарегистрирован: 23 ноя 2013, 18:05

След.

Вернуться в Часто задаваемые вопросы по Weintek (F.A.Q.)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3