PDA

Просмотр полной версии : МВ110-32Р + протокол ОВЕН + Адрес 11 бит.



Gans
23.03.2019, 10:18
Здравствуйте.
Что есть:
1. На интерфейсе RS485 висит куча модулей.
2. Используется протокол ОВЕН.
3. В связи с большом количеством модулей вынуждены использовать для части модулей 11-битную адресацию. (Используется адрес 320 и тд.)

Проба:
1. Создаю новый проект.
2. В ПЛК-конфигурации создаю "Float wariable (write)".
3. В параметрах модуля указываю "Work mode" = "Change Value". (остальные настройки из реального рабочего проекта)
4. Из ПЛК-конфигурации успешно управляю выходам МВ110-32Р, но при этом "Last error" = 81. Хотя по моему мнению должен быть "Last error" = 0.

Что не получилось:
1. Подскажите как можно проверить связь с модулем МВ110-32Р?
2. Можно прочитать какие-то параметры из МВ110-32Р? (возможно в этом случае будет "Last error" = 0).

Gans
25.03.2019, 11:24
Здравствуйте, многоуважаемый Валенок.

Что значит проверить связь? Результат обмена и есть состояние связи
Представляет интерес интервал между ластерр = 0. Но тут лучше не бу ченже, а поол или ботч.
И сколько это модулей что потребовалось 11 битов?

1. Проверить связь это что бы не было кода ошибки в ПЛК-конфигурации при управлении выходами модуля.
2. "Представляет интерес интервал между ластерр = 0" Постоянно весит ластерр = 81, если оставить только один модуль с адресом 320, 256 и тд. Пока не произойдет опрос модуля с адресом менее 255.
2. "Но тут лучше не бу ченже, а поол или ботч." В рабочем проекте разуметься будет ботч.
3. "И сколько это модулей что потребовалось 11 битов?" Примерно: 5 - МВ110-8А(АС), 5-МВ110-32ДН, 5-МВ110-32ДН. В протоколе ОВЕН это требует использование адресов более 255.

P. S. Понимаю, что можно перейти на другой протокол, но в предыдущие разы на протоколе модбас с оборудованием овен у меня были проблемы(

Gans
25.03.2019, 15:10
Неменеемногоуважаемый Gans
Если модулей >1 то ластерр смотреть имеет смысл только в комплекте с ластаддр. Тогда для каждого модуля можно сделать что-то типа :
связь : tof;
реальный_цикл, t : time;
------
связь(in := ластаддр = ?? and ластерр = 0, pt := сколько_то_для_диагностики_обрыва);Вот примерно так и вылезло, что модули в программе отображались как неисправные и понеслось(

15 модулей - немного. Видимо в прошлый раз не зашло ))
И, видимо, одна пятерка там - это МУ-32Р ? Да действительно очепятался - вспомнил там еще один МУ110-8Р.

На RTU можно обновлять все данные 5x8AC, 5x32ДН где-то за 200...250мс.Вам верю :-)
Объект паровая котельная - в общем не до экспериментов( сейчас пытаюсь заказчика убедить прокинуть к ближайшим шкафам еще одну нормальную витую пару) тогда смогу разнести на пару интерфейсов.

P. S. Библиотеками из CoDeSys 2.3 пяток раз пользовался для опроса внешних модулей, но это были ИТП и еще какая-то мелочь, а тут хочется сделать и забыть.
P. P. S. Больше всего пугает тишина со стороны официальных лиц, неужели так все запущено?

Gans
26.03.2019, 08:56
))) Именно чтоб сделать и забыть - нужны библиотеки Я несколько раз пользовался библиотеками, но сделать это компактно и удобно для поиска неисправностей по сети руки пока не дошли.

А что ждёте-то от овенцев ? Волшебных настроек?Консультации типа:"Да реально не работает и это не баг, а фича." или "Опросите параметр модуля вот такой или пишите в модуль вот так."

И что там вылезло? Вылезло то что при работе с модулями на 11-битной адресации у меня в ПЛК-Конфигурации всегда весит ластерор = 81.

Я ж показал как просмотреть реальный цикл обмена, а от него и задавать время для диагностики обрыва связи умножив на 2...5Уже более 10-и лет пользуюсь вот таким функциональным блоком для поиска неисправности аналоговых датчиков и связи с модулями.
Но вот на 11-битной адресации это оказывается не работает((((
=========================================
FUNCTION_BLOCK fnbRS485DetectNoConect
VAR_INPUT
LastError: WORD;
LastAdress: DWORD;
AdresControl: DWORD;
END_VAR
VAR_OUTPUT
blnNoConnect:BOOL;
END_VAR
VAR
noConnect: BOOL;
TON_Error: TON;
END_VAR
=========================================
IF LastAdress=AdresControl THEN
IF LastError=0 THEN
noConnect:=FALSE;
ELSE
noConnect:=TRUE;
END_IF
END_IF
TON_Error(IN:=noConnect, PT:=t#25s, Q=>blnNoConnect);
================================================

P. S. Обязательно поиграюсь с библиотекой модбас для опроса модулей. Иногда оказывается без этого никуда(

Gans
26.03.2019, 10:14
Ластадрес и ластерр - глобальные, зачем их передовать на вход?Ожидаемый вопрос и заготовленный ответ: интерфейсы бывают разные.

А диагностика обещанная где? Обрывы там и все такое?))В протоколе ОВЕН коды ошибок обрывы, коротыши и тд. выкладываются в ластеррор! Так что косяк не пропустим.

И 25сек это сурово )) Затачивалось под протокол ОВЕН, а там все сурово :-)