- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Weintek 8052/8072iP множественная связь и ещё
Модераторы: Глоб.модераторы, специалисты Weintek
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Доброго!
Пара вопросов.
1) Есть задачка организовать связь панели с контроллером по ModBUS, но физический интерфейс может быть либо RS-485 либо Ethernet. Протокол соответственно либо ModBUS-RTU либо ModBUS-TCP. Устройство одно и то же, т.е. таблица регистров неизменна.
Вижу такой путь: в конфигурации создаём два устройства, одно на RS-485, второе на Ethernet, пишем данные в память панели, по ним отображаем.
Рою и пока не могу найти ответ: как включить и выключить опрос того или иного устройства на лету? Каким системным битом/словом ?
2) В библиотеке меток можно использовать несколько языков, но объём одной библиотеки - всего 256 состояний, а надо больше. В журнале событий/аварий можно использовать до 10000 состояний (сообщений) на один журнал, но в нём нет возможности использовать разные языки. Вопрос: как задействовать несколько языков в журнале событий/аварий или на крайняк как скрестить журнал с библиотекой меток (подожмусь и использую несколько журналов чтобы увеличить количество событий)?
Пара вопросов.
1) Есть задачка организовать связь панели с контроллером по ModBUS, но физический интерфейс может быть либо RS-485 либо Ethernet. Протокол соответственно либо ModBUS-RTU либо ModBUS-TCP. Устройство одно и то же, т.е. таблица регистров неизменна.
Вижу такой путь: в конфигурации создаём два устройства, одно на RS-485, второе на Ethernet, пишем данные в память панели, по ним отображаем.
Рою и пока не могу найти ответ: как включить и выключить опрос того или иного устройства на лету? Каким системным битом/словом ?
2) В библиотеке меток можно использовать несколько языков, но объём одной библиотеки - всего 256 состояний, а надо больше. В журнале событий/аварий можно использовать до 10000 состояний (сообщений) на один журнал, но в нём нет возможности использовать разные языки. Вопрос: как задействовать несколько языков в журнале событий/аварий или на крайняк как скрестить журнал с библиотекой меток (подожмусь и использую несколько журналов чтобы увеличить количество событий)?
По вопросам работы Форума можно обратиться по этим контактам.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
Weintek 8052/8072iP множественная связь и ещё
Вам надо как-то настраивать вариант обмена в настройках в своей программе? Тогда в макросе в зависимости от бита в настройке читаете регистры из нужного устройства и копируете их во внутренние регистры панели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 из массива во внутренние регистры панели
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- знаток Eplan
- Сообщения: 1457
- Зарегистрирован: 17 окт 2012, 11:24
- Имя: Виталий
- Страна: Беларусь
- город/регион: Минск
- Благодарил (а): 61 раз
- Поблагодарили: 182 раза
Weintek 8052/8072iP множественная связь и ещё
Можно читать и через глобальную передачу данных. Но возникает один момент: Панель не может определить есть связь или нет, пока не прочитаешь хоть что-нибудь с контроллера. Поэтому нужно чтение некоего служебного слова и дальше делать выбор, читаем по ТСР либо RTU.
В журнале возможно использовать и таблицу меток и таблицу строк. Но вообще 10000 это не спроста, так сказать. Будет сильно тормозить мне кажется, т.к. обработка событий дело затратное с точки зрения ЦП.
Вариант №1: Можно читать через макрос/передачу данных. Последнее более удобно, т.к. можно настроить через Excel. Берём передачу данных для окна, кидаем её на 4-е окно (которое всегда отображается в нижнем слое), настраиваем логику чтения/записи.
Вариант №2: Костыли. Изменяем параметры связи на неподходящие, и блокируем окно №5 системным регистром.
В журнале возможно использовать и таблицу меток и таблицу строк. Но вообще 10000 это не спроста, так сказать. Будет сильно тормозить мне кажется, т.к. обработка событий дело затратное с точки зрения ЦП.
Вариант №1: Можно читать через макрос/передачу данных. Последнее более удобно, т.к. можно настроить через Excel. Берём передачу данных для окна, кидаем её на 4-е окно (которое всегда отображается в нижнем слое), настраиваем логику чтения/записи.
Вариант №2: Костыли. Изменяем параметры связи на неподходящие, и блокируем окно №5 системным регистром.
Последний раз редактировалось Madwolf 09 авг 2024, 12:13, всего редактировалось 2 раза.
-
- завсегдатай
- Сообщения: 544
- Зарегистрирован: 19 мар 2012, 20:04
- Имя: Павел
- Страна: Россия
- Благодарил (а): 6 раз
- Поблагодарили: 59 раз
Weintek 8052/8072iP множественная связь и ещё
https://www.rusavtomatika.com/forum/vie ... start=2550
Сообщения послк 17.07.24 по вашей теме. Похоже решения нет.
Сообщения послк 17.07.24 по вашей теме. Похоже решения нет.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
Weintek 8052/8072iP множественная связь и ещё
Пользоваться не приходилось, но разве это не то, что надо?Jackson писал(а): ↑09 авг 2024, 11:16 2) В библиотеке меток можно использовать несколько языков, но объём одной библиотеки - всего 256 состояний, а надо больше. В журнале событий/аварий можно использовать до 10000 состояний (сообщений) на один журнал, но в нём нет возможности использовать разные языки. Вопрос: как задействовать несколько языков в журнале событий/аварий или на крайняк как скрестить журнал с библиотекой меток (подожмусь и использую несколько журналов чтобы увеличить количество событий)?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Действительно, это ссылка на библиотеку меток. Но открыта будет только первая запись в библиотеке (состояние "0"). Т.е. у всех аварий один и тот же текст - первый. По крайней мере у меня работает так. Так и хотел сначала конечно.
А таблицу строк вообще не открыть (кнопка неактивна). Поэтому аварии импортировал через EXCEL. EPBro у меня не старый (предпоследний релиз).
Отправлено спустя 1 минуту 40 секунд:
Спасибо! Подумаем ещё.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
По вопросам работы Форума можно обратиться по этим контактам.
-
- знаток Eplan
- Сообщения: 1457
- Зарегистрирован: 17 окт 2012, 11:24
- Имя: Виталий
- Страна: Беларусь
- город/регион: Минск
- Благодарил (а): 61 раз
- Поблагодарили: 182 раза
Weintek 8052/8072iP множественная связь и ещё
Не открыть, потому что эта панель не поддерживает строки.
Суть метки в том, чтобы отображать текст на разных языках либо в зависимости от условий. Нужно создавать кол-во меток по кол-ву событий.
Суть метки в том, чтобы отображать текст на разных языках либо в зависимости от условий. Нужно создавать кол-во меток по кол-ву событий.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Weintek 8052/8072iP множественная связь и ещё
Может поможет "динамическая" таблица Modbus тогда? Типа Weintek даже не в курсе, что передает и принимает - для нее это N каких-то регистров, а скрипт это потом расшифровывает/зашифровывает.
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Верно. Но не работает у меня в этой панели. В других-то местах метки работают, пользуюсь. А тут... Авария либо есть, либо нет, всего два состояния. А какая авария - вопрос. В журнале аварий нумерация начинается с 1, а в библиотеке меток - с 0. Я не поленился, сделал одну библиотеку меток в которой 256 событий - это разные тексты аварий, ожидая что по номеру аварии будет выбрана соответствующая метка из указанной библиотеки меток (конкретную метку для каждой аварии там указать нельзя). Итог: всегда выбирается только первая (с индексом "0") метка из указанной библиотеки меток. Т.е. по любой из аварий один и тот же текст.
Разбираться наверное уже не буду, потому что сделал через EXCEL. Да и аварий может быть больше чем 256. Со вторым-третьим языком пока отложу вопрос.
Отправлено спустя 1 минуту 14 секунд:
Может. Буду думать сюда, спасибо!
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 01 апр 2022, 11:08
- Имя: Артем
- город/регион: Благовещенск
- Благодарил (а): 1 раз
- Поблагодарили: 25 раз
Weintek 8052/8072iP множественная связь и ещё
LB9150-9152 для COM-портов и LB9153-9189 для Ethernet.
В состоянии 0 выключается опрос соответствующего устройства.
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Точно. Спасибо!
Это кстати тоже необходимо. Выяснилось что устройства могут быть разные, адреса одних и тех же параметров тоже будут разные. Это ж под каждое ручками опрос писать придется или есть возможность организовать такую таблицу? Пока ума не приложу как, ведь в GetData адресом может быть только число в явном виде... Или я ошибаюсь?
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 01 апр 2022, 11:08
- Имя: Артем
- город/регион: Благовещенск
- Благодарил (а): 1 раз
- Поблагодарили: 25 раз
Weintek 8052/8072iP множественная связь и ещё
Нет. Можно переменную из макроса использовать или имя тега.
Код: Выделить всё
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)
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Вот это отлично!
Тогда остаётся таблицы сопоставления регистров хранить в каких-то массивах (адрес чтения из контроллера, адрес записи во внутреннюю память) и подсовывать в GetData/SetData.
Коллективный разум - великая вещь!
Тогда ещё поинтересуюсь. Читал про индексные регистры, но не очень понял их суть. Это и есть некий массив? Не понял их назначения и приёмов работы с ними. Пока. Кто-то имел опыт работы с ними? Можно пример (если не жалко) ? Спасибо!
По вопросам работы Форума можно обратиться по этим контактам.
-
- завсегдатай
- Сообщения: 544
- Зарегистрирован: 19 мар 2012, 20:04
- Имя: Павел
- Страна: Россия
- Благодарил (а): 6 раз
- Поблагодарили: 59 раз
Weintek 8052/8072iP множественная связь и ещё
Индексный регистр позволяет обращаться не напрямую к регистру а используя смещение задаваемое в индексном регистре.Например.
Если в индексном регистре 0 значение 1000. То запись LW0 Idx0 будет принимать значение регистра LW1000, LW1 Idx0 значение регистра LW1001.
https://disk.yandex.ru/d/sYzguIZR1VxOmg
Если в индексном регистре 0 значение 1000. То запись LW0 Idx0 будет принимать значение регистра LW1000, LW1 Idx0 значение регистра LW1001.
https://disk.yandex.ru/d/sYzguIZR1VxOmg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
То есть в Вашем примере в регистре LW0 лежит не нужное нам значение, а номер регистра, в котором лежит нужное нам значение, и обращение к LW0 как к индексному вернёт нам значение из LW1000. Верно?
Если так то ведь это же то что надо! Из разных устройств читаем пачками (в разумных пределах) и пачками же складываем в разные LW. Затем в индексных LW держим фактически адресное пространство прочитанных LW (где что лежит уже в наших LW) и подменяем индексные регистры в соответствии с тем, какое устройство мы читаем. А индексные LW можно хранить хоть в рецептах (они же не меняются, частой перезаписи не будет), хоть инициализировать при запуске панели. И решается проблема отображения данных при потере связи - при потере связи просто присваиваем всем индексным регистрам адрес какого-нибудь одного регистра, где лежит, скажем, "0" или какое-то очень недостоверное значение.
Спасибо и Вам и Михаилу за подсказку!
По вопросам работы Форума можно обратиться по этим контактам.
-
- завсегдатай
- Сообщения: 544
- Зарегистрирован: 19 мар 2012, 20:04
- Имя: Павел
- Страна: Россия
- Благодарил (а): 6 раз
- Поблагодарили: 59 раз
Weintek 8052/8072iP множественная связь и ещё
Номер целевого регистра лежит в индексном регистре. По сути индексный регистр это указатель на сколько смещен целевой регистр относительно LW к которому мы обращаемся. В примере как раз и показан пример заполнения таблицы из 63 значений при помощи индексного регистра.
И пример немного неудачный получился. Из рабочего проекта выдернул экран. Некоторые адреса изменились. Если нужно в лс пришлю рабочий проект.
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Вот, теперь понял.
Думаю, поработаю и разберусь. Спасибо!
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 01 апр 2022, 11:08
- Имя: Артем
- город/регион: Благовещенск
- Благодарил (а): 1 раз
- Поблагодарили: 25 раз
Weintek 8052/8072iP множественная связь и ещё
Если вы будете делать это через макросы, то индексные регистры в макросах бесполезны. Гораздо проще делать адресацию через переменную.
Для хранения таблицы соответствий используйте регистры 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.
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Раз такая удача, то я ещё спрошу. :)
Никак не могу найти системный регистр, отвечающий за Slave ID контроллера (Station Number, SN), подключенного к COM3 (соответственно, протокол ModBUS-RTU Zero-Based, device 3). Или SN меняется как-то другим способом?
Никак не могу найти системный регистр, отвечающий за Slave ID контроллера (Station Number, SN), подключенного к COM3 (соответственно, протокол ModBUS-RTU Zero-Based, device 3). Или SN меняется как-то другим способом?
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 01 апр 2022, 11:08
- Имя: Артем
- город/регион: Благовещенск
- Благодарил (а): 1 раз
- Поблагодарили: 25 раз
Weintek 8052/8072iP множественная связь и ещё
В настройках подключения, там где задается Slave ID, поставьте галочку "Использовать переменную в качестве адреса устройства".
Можно будет выбрать одну из переменных var0-var15 (LW10000-10015).
Либо без галочки при обращении к регистру напишите "var0#123". Система возьмет Slave ID из LW10000 и считает с него регистр 123.
Вместо var0 конечно же можно написать любой из 16.
В макросах конструкция
тоже сработает.
Можно будет выбрать одну из переменных var0-var15 (LW10000-10015).
Либо без галочки при обращении к регистру напишите "var0#123". Система возьмет Slave ID из LW10000 и считает с него регистр 123.
Вместо var0 конечно же можно написать любой из 16.
В макросах конструкция
Код: Выделить всё
GetData(a, "MODBUS TCP/IP (Zero-based Addressing)", 4x, var0#123, 1)
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Точно! Я просто забыл, а ведь использовал это раньше. Спасибо!
Мне нужно его однозначно задать с экрана и запомнить, меняться в процессе работы он не будет.
В другом проекте я опрашивал с два десятка устройств на одном порте - и вот там делал через LW10000 действительно.
Спасибо Вам, хороший человек!
По вопросам работы Форума можно обратиться по этим контактам.
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Тогда уж - ещё один вопрос к бывалым. Скорее не про панель, а просто про опрос данных.
Опрос по RS-485 ModBUS-RTU, скорость может быть и 19200 бод и 9600 бод (я не знаю на каком расстоянии установят панель от контроллера). Опрос такого вида: читаю из контроллера, пишу в память панели.
"Дырок" в адресном пространстве нет, то есть можно уменьшить кол-во посылок, прочитав больше данных одним-двумя запросами.
А как будет лучше с т.зр.скорости опроса: меньше запросов, но больше данных, или наоборот, запрашивать каждый нужный регистр отдельно?
На столе пока не очень могу оценить разницу.
При таком опросе (как в коде выше) я ещё и вижу в EBPro, какие адреса я уже занял точно. Не аргумент конечно, но удобно. :)
Опрос по 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, какие адреса я уже занял точно. Не аргумент конечно, но удобно. :)
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 01 апр 2022, 11:08
- Имя: Артем
- город/регион: Благовещенск
- Благодарил (а): 1 раз
- Поблагодарили: 25 раз
Weintek 8052/8072iP множественная связь и ещё
С точки зрения скорости опроса естественно лучше одной пачкой. Во-первых запрос один, а не 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
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek 8052/8072iP множественная связь и ещё
Чуть модифицировал. После каждого чтения складываю
Код: Выделить всё
GetDataEx(data[18], "RS485", 3x, 1018, 1)
GetError(err)
errorcode=errorcode+err
По вопросам работы Форума можно обратиться по этим контактам.