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

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

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

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

Сообщение den_po » 04 дек 2013, 11:36

arhatkin писал(а):какие данные панели считаются истинными?
причем тут данные панели? истинные данные - это запрашиваемые данные. Из конкретного типа регистра.

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

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

Сообщение VanMo » 04 дек 2013, 12:16

arhatkin писал(а):какие данные панели считаются истинными?
причем тут данные панели? истинные данные - это запрашиваемые данные. Из конкретного типа регистра.

Какой области памяти панели должно соответствовать пространство InputRegisters по Вашему?
Конкретный тип регистра для конкретной области памяти устанавливает сам производитель устройства. Modbus разработан так, чтобы удовлетворять различные потребности устройств и устройство не обязано его полностью реализовывать. Вас же не удивляет что, например, в терморегуляторе доступно пользователю только несколько регистров, а не весь диапазон, предусмотренный Modbus, и далеко не все типы регистров им используются.
Это из разряда "мой телефон не фотографирует, хотя операционной системой предусмотрена эта функция", и уже не важно что в этом телефоне физически нет камеры.
arhatkin писал(а):по протоколу ModBus посылка включает в себя адрес начального регистра ( HoldingRegister или InputRegister неважно ). Как я понял для драйвера панели ModBus_Server 0-ой адрес HoldingRegister и 0_ой адрес InputRegister одно и тоже - LW0000. Так?

Адреса регистров начинаются с 1, для классического протокола. Адрес Модбас-регистра 1 соответствует LW0, регистр 2 - LW1 и т.д.
arhatkin писал(а):В итоге при чтении (команда 04 или 03), задавая начальное значение адреса регистра как "0", в ответ я могу получить значение нулевого регистра как InputRegister так и HoldingRegister (они же одинаковы для панели). Все зависит от того какие данные я записал в LW0 на момент запроса. Все же делается аппаратно! HoldingRegister можно не только записывань, но и читать. И вот как раз при чтении есть вероятность получить данные InputRegister, считанные из LW

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

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

Сообщение arhatkin » 04 дек 2013, 14:59

Ну как, если есть две официальные команды ModBus на чтение 03h и 04h (для разных типов регистров) разве данные получаемые от этих команд не должны быть "разными". Писали бы сразу тип регистра только один с доступом на чтение/запись. Под "разными" я имею ввиду что фактически занчения могут и совпадать но суть их разная: для команды 03h - это значение заданое ModBus мастером допустим на предыдущем запросе командой 10h, а для команды 04h - это значение полученное в ходе математических операций в панели. Оба этих значения я имею право запросить как мастер в любой момент. Мне казалось что они должны храниться в разных местах, ну или должна быть возможность резервирования места памяти под регистры ModBus. Собственно обраттился за советом как можно это сделать. EasyBuuilder доволно скудно дает настраивать работу драйвера ModBus_Slave, в отличии от MobBus_RTU. там то 3х и 4х можно хотя бы перенаправить на нужные внупренние регистры панели.
arhatkin
 
Сообщения: 7
Зарегистрирован: 23 ноя 2013, 18:05

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

Сообщение VanMo » 04 дек 2013, 15:51

Согласен с Вами насчет более гибкой настройки и возможности резервирования памяти под разные регистры, было бы удобно. При отсутствии гибкой настройки, я считаю, лучше распределить имеющуюся память было нельзя. Если бы часть памяти отдали Input регистрам, эта память была бы не доступна для записи. Совсем запретить команду 04h - тоже спорное решение, ведь это не добавляет функциональности, а наоборот.
Если для Вас принципиально, что регистры должны быть из разной области, то можно использовать FreeProtocol. В макросе можно самостоятельно решить куда какие данные писать. На ftp.weintek.com есть пример реализации Modbus на Free Protocol.
VanMo
 
Сообщения: 375
Зарегистрирован: 16 авг 2011, 09:31

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

Сообщение den_po » 04 дек 2013, 15:53

arhatkin писал(а):Ну как, если есть две официальные команды ModBus на чтение 03h и 04h (для разных типов регистров) разве данные получаемые от этих команд не должны быть "разными".

Могут, но не обязаны.
Если нужно обращаться к разным данным, очевидный выход - настроить мастера на обращение к разным адресам регистров панели.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

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

Сообщение arhatkin » 04 дек 2013, 16:37

Ясно. Придется через FreeProtocol. Спасибо за консультацию.
arhatkin
 
Сообщения: 7
Зарегистрирован: 23 ноя 2013, 18:05

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

Сообщение DenisM » 06 янв 2016, 16:04

Хороших праздников!!!

На самом деле фишка EasyBuilder состоит в том, что не надо быть компьютерным гуру, чтобы использовать функционал панели))) Конечно, можно заморочиться и написать свой Modbus Server используя FreeProtocol, но ведь разработчикам сделать это за нас проще???

И вопрос даже не в том, что мы можем записывать в ячейки значения, предназначенные только для чтения... Подключая Server, мы предоставляем полный контроль над ВСЕМ адресным пространством LB(для LW есть хотя бы ограничение сверху) А это не есть хорошо, если со стороны сервера сидят ребята из другой компании, например диспетчеры.

самым разумным представляется запрос разработчикам с просьбой включить аналог Index Register для пространств Input register, Holding register и т.д. и возможность задавать размер этих пространств(т.е. mapping table согласно спецификации modbus). Тогда появиться возможность разрешать/запрещать/продавать))) чтение/запись данных из моей локальной системы во внешний мир...

еще раз с Праздниками всех!!!
DenisM
 
Сообщения: 10
Зарегистрирован: 10 фев 2014, 23:39

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

Сообщение HWAK » 05 май 2016, 00:36

Подскажите, существует ли возможность для Weintek в режиме slave сделать так, чтобы slave панель могла определять отключение master устройства от сети?
HWAK
 
Сообщения: 42
Зарегистрирован: 20 июл 2015, 00:29

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

Сообщение den_po » 05 май 2016, 10:49

Можно опрашивать в цикле регистры LW-9570 и подобные. Если значение долго остаётся неизменным - запросов давно не было.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

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

Сообщение HWAK » 06 май 2016, 13:58

den_po писал(а):Можно опрашивать в цикле регистры LW-9570 и подобные. Если значение долго остаётся неизменным - запросов давно не было.


Спасибо за совет, сделал макрос, протестировал, все работает.

int a, b //
bool c //
a = 0 //
DELAY (10000)
GetData(b , "HMI with indicators", LW, 9572, 1)// счетчик полученных данных (байты)

if a == b then//
c = 1//
SetData(c , "HMI with indicators", LB, 36, 1)// сигнал потери связи, включение

else if a < b then//
c = 0//
SetData(c , "HMI with indicators", LB, 36, 1)// сигнал потери связи, отключение
end if

b = 0// сброс счетчика полученных данных
SetData(b , "HMI with indicators", LW, 9572, 1)//
HWAK
 
Сообщения: 42
Зарегистрирован: 20 июл 2015, 00:29

Пред.След.

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

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

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

cron