1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Weintek 8052/8072iP множественная связь и ещё

Модераторы: Глоб.модераторы, специалисты Weintek

Ответить
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

Доброго!

Пара вопросов.

1) Есть задачка организовать связь панели с контроллером по ModBUS, но физический интерфейс может быть либо RS-485 либо Ethernet. Протокол соответственно либо ModBUS-RTU либо ModBUS-TCP. Устройство одно и то же, т.е. таблица регистров неизменна.

Вижу такой путь: в конфигурации создаём два устройства, одно на RS-485, второе на Ethernet, пишем данные в память панели, по ним отображаем.
Рою и пока не могу найти ответ: как включить и выключить опрос того или иного устройства на лету? Каким системным битом/словом ?

2) В библиотеке меток можно использовать несколько языков, но объём одной библиотеки - всего 256 состояний, а надо больше. В журнале событий/аварий можно использовать до 10000 состояний (сообщений) на один журнал, но в нём нет возможности использовать разные языки. Вопрос: как задействовать несколько языков в журнале событий/аварий или на крайняк как скрестить журнал с библиотекой меток (подожмусь и использую несколько журналов чтобы увеличить количество событий)?
По вопросам работы Форума можно обратиться по этим контактам.

leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение leon78 »

Jackson писал(а): 09 авг 2024, 11:16 1) Есть задачка организовать связь панели с контроллером по ModBUS, но физический интерфейс может быть либо RS-485 либо Ethernet. Протокол соответственно либо ModBUS-RTU либо ModBUS-TCP. Устройство одно и то же, т.е. таблица регистров неизменна.

Вижу такой путь: в конфигурации создаём два устройства, одно на RS-485, второе на Ethernet, пишем данные в память панели, по ним отображаем.
Рою и пока не могу найти ответ: как включить и выключить опрос того или иного устройства на лету? Каким системным битом/словом ?
Вам надо как-то настраивать вариант обмена в настройках в своей программе? Тогда в макросе в зависимости от бита в настройке читаете регистры из нужного устройства и копируете их во внутренние регистры панели

Код: Выделить всё

if настройка == ModbusTCP then
	GetData из устройства Modbus TCP в массив
else
	GetData из устройства Modbus RTU в массив
end if
SetData из массива во внутренние регистры панели
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1457
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 61 раз
Поблагодарили: 182 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Madwolf »

Можно читать и через глобальную передачу данных. Но возникает один момент: Панель не может определить есть связь или нет, пока не прочитаешь хоть что-нибудь с контроллера. Поэтому нужно чтение некоего служебного слова и дальше делать выбор, читаем по ТСР либо RTU.

В журнале возможно использовать и таблицу меток и таблицу строк. Но вообще 10000 это не спроста, так сказать. Будет сильно тормозить мне кажется, т.к. обработка событий дело затратное с точки зрения ЦП.

Вариант №1: Можно читать через макрос/передачу данных. Последнее более удобно, т.к. можно настроить через Excel. Берём передачу данных для окна, кидаем её на 4-е окно (которое всегда отображается в нижнем слое), настраиваем логику чтения/записи.

Вариант №2: Костыли. Изменяем параметры связи на неподходящие, и блокируем окно №5 системным регистром.
Последний раз редактировалось Madwolf 09 авг 2024, 12:13, всего редактировалось 2 раза.

pkl58
завсегдатай
завсегдатай
Сообщения: 544
Зарегистрирован: 19 мар 2012, 20:04
Имя: Павел
Страна: Россия
Благодарил (а): 6 раз
Поблагодарили: 59 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение pkl58 »

https://www.rusavtomatika.com/forum/vie ... start=2550
Сообщения послк 17.07.24 по вашей теме. Похоже решения нет.

leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение leon78 »

Jackson писал(а): 09 авг 2024, 11:16 2) В библиотеке меток можно использовать несколько языков, но объём одной библиотеки - всего 256 состояний, а надо больше. В журнале событий/аварий можно использовать до 10000 состояний (сообщений) на один журнал, но в нём нет возможности использовать разные языки. Вопрос: как задействовать несколько языков в журнале событий/аварий или на крайняк как скрестить журнал с библиотекой меток (подожмусь и использую несколько журналов чтобы увеличить количество событий)?
Пользоваться не приходилось, но разве это не то, что надо?
изображение_2024-08-09_115632372.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

leon78 писал(а): 09 авг 2024, 11:57 Пользоваться не приходилось, но разве это не то, что надо?
Действительно, это ссылка на библиотеку меток. Но открыта будет только первая запись в библиотеке (состояние "0"). Т.е. у всех аварий один и тот же текст - первый. По крайней мере у меня работает так. Так и хотел сначала конечно.
2024-08-09_12-06-21.png
А таблицу строк вообще не открыть (кнопка неактивна). Поэтому аварии импортировал через EXCEL. EPBro у меня не старый (предпоследний релиз).
2024-08-09_12-03-49.png
Отправлено спустя 1 минуту 40 секунд:
pkl58 писал(а): 09 авг 2024, 11:50 Сообщения послк 17.07.24 по вашей теме.
Спасибо! Подумаем ещё.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
По вопросам работы Форума можно обратиться по этим контактам.

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1457
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 61 раз
Поблагодарили: 182 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Madwolf »

Не открыть, потому что эта панель не поддерживает строки.
Суть метки в том, чтобы отображать текст на разных языках либо в зависимости от условий. Нужно создавать кол-во меток по кол-ву событий.

Михайло
эксперт
эксперт
Сообщения: 3643
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 8 раз
Поблагодарили: 286 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение Михайло »

Может поможет "динамическая" таблица Modbus тогда? Типа Weintek даже не в курсе, что передает и принимает - для нее это N каких-то регистров, а скрипт это потом расшифровывает/зашифровывает.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

Madwolf писал(а): 09 авг 2024, 12:15 Суть метки в том, чтобы отображать текст на разных языках либо в зависимости от условий. Нужно создавать кол-во меток по кол-ву событий.
Верно. Но не работает у меня в этой панели. В других-то местах метки работают, пользуюсь. А тут... Авария либо есть, либо нет, всего два состояния. А какая авария - вопрос. В журнале аварий нумерация начинается с 1, а в библиотеке меток - с 0. Я не поленился, сделал одну библиотеку меток в которой 256 событий - это разные тексты аварий, ожидая что по номеру аварии будет выбрана соответствующая метка из указанной библиотеки меток (конкретную метку для каждой аварии там указать нельзя). Итог: всегда выбирается только первая (с индексом "0") метка из указанной библиотеки меток. Т.е. по любой из аварий один и тот же текст.

Разбираться наверное уже не буду, потому что сделал через EXCEL. Да и аварий может быть больше чем 256. Со вторым-третьим языком пока отложу вопрос.

Отправлено спустя 1 минуту 14 секунд:
Михайло писал(а): 09 авг 2024, 15:26 Может поможет "динамическая" таблица Modbus тогда? Типа Weintek даже не в курсе, что передает и принимает - для нее это N каких-то регистров, а скрипт это потом расшифровывает/зашифровывает.
Может. Буду думать сюда, спасибо!
По вопросам работы Форума можно обратиться по этим контактам.

SBeaRM
здесь недавно
здесь недавно
Сообщения: 98
Зарегистрирован: 01 апр 2022, 11:08
Имя: Артем
город/регион: Благовещенск
Благодарил (а): 1 раз
Поблагодарили: 25 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение SBeaRM »

Jackson писал(а): 09 авг 2024, 11:16 Рою и пока не могу найти ответ: как включить и выключить опрос того или иного устройства на лету? Каким системным битом/словом ?
LB9150-9152 для COM-портов и LB9153-9189 для Ethernet.
В состоянии 0 выключается опрос соответствующего устройства.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

SBeaRM писал(а): 12 авг 2024, 04:54 LB9150-9152 для COM-портов и LB9153-9189 для Ethernet
Точно. Спасибо!
Михайло писал(а): 09 авг 2024, 15:26 Может поможет "динамическая" таблица Modbus тогда?
Это кстати тоже необходимо. Выяснилось что устройства могут быть разные, адреса одних и тех же параметров тоже будут разные. Это ж под каждое ручками опрос писать придется или есть возможность организовать такую таблицу? Пока ума не приложу как, ведь в GetData адресом может быть только число в явном виде... Или я ошибаюсь?
По вопросам работы Форума можно обратиться по этим контактам.

SBeaRM
здесь недавно
здесь недавно
Сообщения: 98
Зарегистрирован: 01 апр 2022, 11:08
Имя: Артем
город/регион: Благовещенск
Благодарил (а): 1 раз
Поблагодарили: 25 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение SBeaRM »

Jackson писал(а): 12 авг 2024, 08:19 Пока ума не приложу как, ведь в GetData адресом может быть только число в явном виде
Нет. Можно переменную из макроса использовать или имя тега.

Код: Выделить всё

short var, addr
var=10
addr=1293
GetDataEx(var, "Local HMI", RW, addr, 1)

Код: Выделить всё

GetDataEx(a[100], "MODBUS TCP/IP (Zero-based Addressing)", "Уставка частоты 2", 2)
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

SBeaRM писал(а): 12 авг 2024, 09:02 Можно переменную из макроса использовать или имя тега.
Вот это отлично!

Тогда остаётся таблицы сопоставления регистров хранить в каких-то массивах (адрес чтения из контроллера, адрес записи во внутреннюю память) и подсовывать в GetData/SetData.

Коллективный разум - великая вещь! :good:

Тогда ещё поинтересуюсь. Читал про индексные регистры, но не очень понял их суть. Это и есть некий массив? Не понял их назначения и приёмов работы с ними. Пока. Кто-то имел опыт работы с ними? Можно пример (если не жалко) ? Спасибо!
По вопросам работы Форума можно обратиться по этим контактам.

pkl58
завсегдатай
завсегдатай
Сообщения: 544
Зарегистрирован: 19 мар 2012, 20:04
Имя: Павел
Страна: Россия
Благодарил (а): 6 раз
Поблагодарили: 59 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение pkl58 »

Индексный регистр позволяет обращаться не напрямую к регистру а используя смещение задаваемое в индексном регистре.Например.
Если в индексном регистре 0 значение 1000. То запись LW0 Idx0 будет принимать значение регистра LW1000, LW1 Idx0 значение регистра LW1001.
https://disk.yandex.ru/d/sYzguIZR1VxOmg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

pkl58 писал(а): 12 авг 2024, 10:08 Индексный регистр позволяет обращаться не напрямую к регистру а используя смещение задаваемое в индексном регистре.
То есть в Вашем примере в регистре LW0 лежит не нужное нам значение, а номер регистра, в котором лежит нужное нам значение, и обращение к LW0 как к индексному вернёт нам значение из LW1000. Верно?

Если так то ведь это же то что надо! Из разных устройств читаем пачками (в разумных пределах) и пачками же складываем в разные LW. Затем в индексных LW держим фактически адресное пространство прочитанных LW (где что лежит уже в наших LW) и подменяем индексные регистры в соответствии с тем, какое устройство мы читаем. А индексные LW можно хранить хоть в рецептах (они же не меняются, частой перезаписи не будет), хоть инициализировать при запуске панели. И решается проблема отображения данных при потере связи - при потере связи просто присваиваем всем индексным регистрам адрес какого-нибудь одного регистра, где лежит, скажем, "0" или какое-то очень недостоверное значение.

Спасибо и Вам и Михаилу за подсказку!
По вопросам работы Форума можно обратиться по этим контактам.

pkl58
завсегдатай
завсегдатай
Сообщения: 544
Зарегистрирован: 19 мар 2012, 20:04
Имя: Павел
Страна: Россия
Благодарил (а): 6 раз
Поблагодарили: 59 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение pkl58 »

Jackson писал(а): 12 авг 2024, 12:45 То есть в Вашем примере в регистре LW0 лежит не нужное нам значение, а номер регистра, в котором лежит нужное нам значение, и обращение к LW0 как к индексному вернёт нам значение из LW1000. Верно?
Номер целевого регистра лежит в индексном регистре. По сути индексный регистр это указатель на сколько смещен целевой регистр относительно LW к которому мы обращаемся. В примере как раз и показан пример заполнения таблицы из 63 значений при помощи индексного регистра.
И пример немного неудачный получился. Из рабочего проекта выдернул экран. Некоторые адреса изменились. Если нужно в лс пришлю рабочий проект.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

pkl58 писал(а): 12 авг 2024, 13:11 индексный регистр это указатель на сколько смещен целевой регистр относительно LW к которому мы обращаемся.
Вот, теперь понял.
pkl58 писал(а): 12 авг 2024, 13:11Если нужно в лс пришлю рабочий проект.
Думаю, поработаю и разберусь. Спасибо!
По вопросам работы Форума можно обратиться по этим контактам.

SBeaRM
здесь недавно
здесь недавно
Сообщения: 98
Зарегистрирован: 01 апр 2022, 11:08
Имя: Артем
город/регион: Благовещенск
Благодарил (а): 1 раз
Поблагодарили: 25 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение SBeaRM »

Jackson писал(а): 12 авг 2024, 12:45 Если так то ведь это же то что надо! Из разных устройств читаем пачками (в разумных пределах) и пачками же складываем в разные LW.
Если вы будете делать это через макросы, то индексные регистры в макросах бесполезны. Гораздо проще делать адресацию через переменную.
Для хранения таблицы соответствий используйте регистры RW_A. Они энергонезависимы. Достаточно создать их один раз, например в симуляции, а потом подгружать в рабочие панели. RW_A из симуляции хранятся в файле EBpro\HMI_memory\recipe\recipe_a.rcp в то время как RW хранятся в файле EBpro\HMI_memory\recipe\recipe.rcp. Таким образом перезапись RW_A не повлияет на оперативные настройки и пользовательские данные, которые у вас будут хранится в RW.
Кроме того файл recipe_a.rcp можно редактировать через Recipe editor, который есть в составе билдера.
RW_A можно загружать/выгружать в панель либо через флешку, либо через Utility Manager.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

Раз такая удача, то я ещё спрошу. :)

Никак не могу найти системный регистр, отвечающий за Slave ID контроллера (Station Number, SN), подключенного к COM3 (соответственно, протокол ModBUS-RTU Zero-Based, device 3). Или SN меняется как-то другим способом?
По вопросам работы Форума можно обратиться по этим контактам.

SBeaRM
здесь недавно
здесь недавно
Сообщения: 98
Зарегистрирован: 01 апр 2022, 11:08
Имя: Артем
город/регион: Благовещенск
Благодарил (а): 1 раз
Поблагодарили: 25 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение SBeaRM »

В настройках подключения, там где задается Slave ID, поставьте галочку "Использовать переменную в качестве адреса устройства".
Можно будет выбрать одну из переменных var0-var15 (LW10000-10015).
Либо без галочки при обращении к регистру напишите "var0#123". Система возьмет Slave ID из LW10000 и считает с него регистр 123.
Вместо var0 конечно же можно написать любой из 16.
В макросах конструкция

Код: Выделить всё

GetData(a, "MODBUS TCP/IP (Zero-based Addressing)", 4x, var0#123, 1)
тоже сработает.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

SBeaRM писал(а): 13 авг 2024, 02:39 В настройках подключения, там где задается Slave ID, поставьте галочку "Использовать переменную в качестве адреса устройства".
Точно! Я просто забыл, а ведь использовал это раньше. Спасибо!
Мне нужно его однозначно задать с экрана и запомнить, меняться в процессе работы он не будет.
В другом проекте я опрашивал с два десятка устройств на одном порте - и вот там делал через LW10000 действительно.

Спасибо Вам, хороший человек!
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

Тогда уж - ещё один вопрос к бывалым. Скорее не про панель, а просто про опрос данных.

Опрос по RS-485 ModBUS-RTU, скорость может быть и 19200 бод и 9600 бод (я не знаю на каком расстоянии установят панель от контроллера). Опрос такого вида: читаю из контроллера, пишу в память панели.

Код: Выделить всё

GetDataEx(data[55], "RS485", 3x, 555, 3)
GetDataEx(data[83], "RS485", 3x, 583, 3)
SetData(data[55], "HMI", LW, 555, 35)
GetDataEx(data[18], "RS485", 3x, 1018, 1)
SetData(data[18], "HMI", LW, 1018, 1)
GetDataEx(databit[0], "RS485", 1x, 0, 11)
SetData(databit[0], "HMI", LB, 0, 11)
GetDataEx(databit[58], "RS485", 1x, 10458, 10)
SetData(databit[58], "HMI", LB, 58, 10)
GetDataEx(databit[28], "RS485", 0x, 28, 2)
SetData(databit[28], "HMI", LB, 28, 2)
"Дырок" в адресном пространстве нет, то есть можно уменьшить кол-во посылок, прочитав больше данных одним-двумя запросами.
А как будет лучше с т.зр.скорости опроса: меньше запросов, но больше данных, или наоборот, запрашивать каждый нужный регистр отдельно?

На столе пока не очень могу оценить разницу.

При таком опросе (как в коде выше) я ещё и вижу в EBPro, какие адреса я уже занял точно. Не аргумент конечно, но удобно. :)
По вопросам работы Форума можно обратиться по этим контактам.

SBeaRM
здесь недавно
здесь недавно
Сообщения: 98
Зарегистрирован: 01 апр 2022, 11:08
Имя: Артем
город/регион: Благовещенск
Благодарил (а): 1 раз
Поблагодарили: 25 раз

Weintek 8052/8072iP множественная связь и ещё

Сообщение SBeaRM »

Jackson писал(а): 14 авг 2024, 18:36 А как будет лучше с т.зр.скорости опроса: меньше запросов, но больше данных, или наоборот, запрашивать каждый нужный регистр отдельно?
С точки зрения скорости опроса естественно лучше одной пачкой. Во-первых запрос один, а не 10 (условно), во-вторых ответный поток данных меньше за счет уменьшения количества заголовков и CRC, гоняемых по сети. Ну и конечно же убираются лишние таймауты запросов и ответов.
Очень сильно прирост скорости чувствуется на низких скоростях как у вас и на устройствах с относительно высоким таймаутом ответа, так что я бы на вашем месте делал максимально малое количество запросов.

Отправлено спустя 26 минут 50 секунд:
Еще совет. Если используете GetDataEx, то используйте конструкцию:

Код: Выделить всё

short err
GetDataEx(data[18], "RS485", 3x, 1018, 1)
GetError(err)
if err == 0 then
	SetData(data[18], "HMI", LW, 1018, 1)
end if
Что-бы в итоговый регистр гарантировано записывался ответ, а не мусор
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Weintek 8052/8072iP множественная связь и ещё

Сообщение Jackson »

SBeaRM писал(а): 15 авг 2024, 03:51 Что-бы в итоговый регистр гарантировано записывался ответ, а не мусор
Чуть модифицировал. После каждого чтения складываю

Код: Выделить всё

GetDataEx(data[18], "RS485", 3x, 1018, 1)
GetError(err)
errorcode=errorcode+err
В конце, если errorcode больше нуля то обнуляю массив data[] и только после этого записываю data[] в память панели LW. Соответственно записываются либо прочитанные данные, либо нули. Поскольку отображение данных идёт из LW, то при ошибке чтения все показания обнулятся. А саму ошибку можно прочитать из LW9402 для COM3 (для RS-485 2W) и из LW9403 для Ethernet и занести в журнал аварий.
По вопросам работы Форума можно обратиться по этим контактам.
Ответить

Вернуться в «WEINTEK (операторские панели)»