PDA

Просмотреть полную версию : Wientek, 2Gi, Modbus и InputStatus


canada
21.03.2012, 11:00
Как прочитать панелью Wientek значение булевой переменной из 2Gi по modbus ?

http://s017.radikal.ru/i413/1203/cf/40e9b5b34ca6t.jpg (http://radikal.ru/F/s017.radikal.ru/i413/1203/cf/40e9b5b34ca6.jpg.html)

Вроде как InputStatus читается стандартной функцией 2х. Но ее нет в Wienteke...

http://s019.radikal.ru/i630/1203/2c/d652d314e18ft.jpg (http://radikal.ru/F/s019.radikal.ru/i630/1203/2c/d652d314e18f.jpg.html)

Nick
21.03.2012, 11:49
адресация по спецификации модбус

0XXXX - coils ( функция 1-читать, 5,15-писать)
1XXXX - input status ( функция 2-читать)
3XXXX - input reg ( функция 4-читать)
4XXXX - Holding reg ( функция 3-читать, 6,16-писать)

так что все тама есть

функции 15 и 16 мультипресет

и еще - Holding register 40001 is addressed as register 0000 (из спецификации) тоесть нашу переменную HR по адресу 0000 нужно читать писать адресом 40001
input status с адреса 0070 из вашей карты читать адресом 10071 вашей программы
наверно щас все должно быть понятна.

Max2114
21.03.2012, 17:04
Как прочитать панелью Wientek значение булевой переменной из 2Gi по modbus ?

http://s017.radikal.ru/i413/1203/cf/40e9b5b34ca6t.jpg (http://radikal.ru/F/s017.radikal.ru/i413/1203/cf/40e9b5b34ca6.jpg.html)

Вроде как InputStatus читается стандартной функцией 2х. Но ее нет в Wienteke...

http://s019.radikal.ru/i630/1203/2c/d652d314e18ft.jpg (http://radikal.ru/F/s019.radikal.ru/i630/1203/2c/d652d314e18f.jpg.html)
Читаете в вайнтеке функцией 0х или 1х - читайте их опсиание в руководстве,
либо упакуйте в переменные типа int и читайте при помощи 3х_bit и 4x_bit с указанием номера бита.

canada
24.07.2012, 14:41
Вновь вопрос связанный с этой панелью.

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

Столкнулся с таким неприятным явлением как несохранение настроек, после вкл/выкл питания установки. Все значения Modbus переменных устанавливаются по умолчанию в значения введенные в он-лайн режиме из SMLogix...

Пока решил проблему следующим образом: В панели каждому полю ввода/вывода можно задать разные адреса на чтение и на запись. В контроллере создаю эти 2 переменные - одну записываю в EEPROM из панели, другую из этой EEPROM читаю и показываю в панели... Работает, но как-бы очень геморно иметь 2 переменные вместо 1...

Может кто подскажет более изящный способ?

tvf
25.07.2012, 06:22
Сталкивался с описаной проблемой. Панель использовалась в качестве диспетчерского пульта. Более простого решения, чем у вас придумать не получилось. А насчет гемора не согласен. Одна переменная показывает, что реально записано в контроллер, вторая, что вы пытаетесь записать в контроллер. С учетом того, что уставка может меняться и с клавиатуры самого контроллера, проще не сделаешь. Особенно если хочешь знать что реально записано в контроллере, а не то что вы пытаетесь туда записать. Минус такого решения некоторое запаздывание при смене уставки (записал, потом считал), но с этим смирился.

k0der
14.03.2014, 17:53
Можно проект панели который читает слово из контроллера.
перепробывал все варианты, на читает и все

skr
17.03.2014, 12:10
Можно проект панели который читает слово из контроллера.
перепробывал все варианты, на читает и все
Какой протокол? Интерфейс и параметры связи? Типы регистров?

GTS
15.08.2017, 16:26
Добрый день! Также столкнулся с проблемой не сохранения уставок после отключения электропитания. Панель Weintek, контроллер 2Gi. Например в том же Codesys достаточно поставить галочку retain, и переменная становится энергонезависимой, и что самое главное читается и пишется по одному адресу. Вопрос в том можно ли в Лоджике сделать также?
Прочитал про две переменные для чтения и записи в Weintek, но чем и как лучше сохранять EEPROM или ARRAY?

Arsie
15.08.2017, 17:35
Прочитал про две переменные для чтения и записи в Weintek, но чем и как лучше сохранять EEPROM или ARRAY?

Первое это стек, второе это массив.

Если вам сохранять, то нужен массив.

GTS
15.08.2017, 19:02
Первое это стек, второе это массив.

Если вам сохранять, то нужен массив.

А по другому никак? Придется по двепеременные создавать.

Arsie
16.08.2017, 11:42
А по другому никак? Придется по двепеременные создавать.

Кодесис, когда вы ставите галочку, выставляет невидимый вам условный ARRAY(). Всё то же самое происходит с точки зрения контроллера: выделяется память, куда и происходит сохранение.

Создайте две переменные. Чтение одной переменной и запись другой переменной это ровно то же самое по трафику и задержкам, что чтение и запись одной и той же переменной. Это в любом случае чтение и в любом случае запись.

GTS
16.08.2017, 12:16
Кодесис, когда вы ставите галочку, выставляет невидимый вам условный ARRAY(). Всё то же самое происходит с точки зрения контроллера: выделяется память, куда и происходит сохранение.

Создайте две переменные. Чтение одной переменной и запись другой переменной это ровно то же самое по трафику и задержкам, что чтение и запись одной и той же переменной. Это в любом случае чтение и в любом случае запись.
Я с вами согласен, но в кодесисе я не создаю 2 переменные, этим и удобней для пользователя. Может в будущем допилите в Лоджике. Спасибо за ответ.

Arsie
16.08.2017, 13:05
Я с вами согласен, но в кодесисе я не создаю 2 переменные, этим и удобней для пользователя. Может в будущем допилите в Лоджике. Спасибо за ответ.

В данном случае кодесис идёт против основ протокола modbus, размещая данные для чтения в переменной для выхода.

Учитывая, что создание двух переменных в лоджике происходит раз в 10 быстрее, чем создание одной переменной в кодесисе, ваше предложение замедлить и усложнить процедуру не могу признать актуальным в нынешних условиях.