Страница 6 из 13 ПерваяПервая ... 45678 ... ПоследняяПоследняя
Показано с 51 по 60 из 130

Тема: Универсальный диспетчер для Modbus.lib

  1. #51
    Пользователь
    Регистрация
    09.02.2016
    Адрес
    Тверь
    Сообщений
    28

    По умолчанию

    К моему великому сожалению эта штуковина не заработала с библиотекой OwenModbusSlave.
    Отдельно обе работают.
    Попробовал слэйв для панели сделать через бибку, тк в ранее несколько раз перебивал более 500 переменных в конфигураторе и почти истерику получил.
    В этот раз решил библиотеку взять. Так приятно работать стало.
    -ПЛК110М2
    -На панель подаю через порт RS232.
    Опрос веду или с порта "0" или с "2" (без разницы).
    -При использовании конфигуратора мастера и бибки слэйв всё работает.
    -Слэйв и Мастер Библиотечные вместе не пашут, хотя в порты разные стучатся.
    Сейчас проблема не важна, тк надо 6 регистров читать.

    Но весной, при расширении пр-ва будут переделки с кучей слейвов и с панелями.
    Очень хочется всё сделать бибками, чтоб упростить переделки и заложить нормальную возможность модернизации.
    Плюс будет сеть прокинута, и всё на скаду и в облако буду затаскивать.

    Может посоветуете чего? (*вникать в дебри сам не успеваю, тк мне и подбирать, и чертить, и собирать, и программировать, и налаживать, и обслуживать приходится.*)
    Последний раз редактировалось Alexlyu; 27.02.2019 в 15:31.

  2. #52
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    К сожалению, не знаком с библиотекой OwenModbusSlave, поэтому тяжело сказать почему они вместе не заработали.

    В целом нужно понимать, что моя библиотека решает один простой вопрос - очередность доступа к последовательному порту.

  3. #53

    По умолчанию

    Почитал документацию, посмотрел пример, но не понял, возможно ли использовать диспетчер для управления модулями используя два слота сети RS485-1 и RS485-2?
    Последний раз редактировалось Sergeba; 02.12.2019 в 21:31.

  4. #54
    Пользователь
    Регистрация
    09.02.2016
    Адрес
    Тверь
    Сообщений
    28

    По умолчанию

    утром как раз проверял эту возможность.
    Объявил два диспетчера с разными портами и скоростью.
    К каждому в PLC_PRG привязал нужные модули.
    Работают.
    Мучения были только в получении МУ-16Р из МУ-32Р.
    теперь нужно их подружить с OwenModbusSlave и я буду счастлив.

  5. #55
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Почитал документацию, посмотрел пример, но не понял, возможно ли использовать диспетчер для управления модулями используя два слота сети RS485-1 и RS485-2?
    Конечно, можно.
    Как правильно сказано выше, просто объявите 2 диспетчера. Для каждого порта свой.

  6. #56
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Почитал документацию, посмотрел пример, но не понял, возможно ли использовать диспетчер для управления модулями используя два слота сети RS485-1 и RS485-2?
    Случайно продублировался пост.
    Последний раз редактировалось Спорягин Кирилл; 03.12.2019 в 13:21.

  7. #57
    Пользователь
    Регистрация
    09.02.2016
    Адрес
    Тверь
    Сообщений
    28

    По умолчанию

    И так, родил я в муках модуль fcMB110_4TD (на последнем этапе сильно помогла тема ).
    Буду рад предложениям по более удобному, чем битовая маска (2#0001_1111) заданию считываемых входов. На панели то это будет красиво(если надо). Но прога должна быть понятна любому, кто после меня туда влезет.
    На fcMB110_8A тоже добавлю выбор считываемых входов, мне кажется это полезным.
    Так же мне не нравится использовать WORD для получения диагностической информации. не информативно биты через точку вызывать. Конечно можно так: ErrAI2:= Diag.1, но опять лишние сущности. Фу! У меня и так все проекты в этих призраках, не могу никак избавиться от них.
    Идеалом было бы на одно значение использовать одну ячейку памяти и для приёма, и для обработки, и для передачи на панель, и для передачи на скаду. Но пока не разобрался с жонглированием указателями, а "ADR" не даёт нужного, если его в структуру пихать.
    На очереди связь с частотником (передача/приём) fcEI_7012, fcE4_8400, fcE3_8100, и модуль ввода/вывода fcMK_8DN4R. Если у кого-то есть наработки, буду рад с ними ознакомиться.
    Заметил странное поведение ModBusSlave, заливаю проект onlinechange, стоп, сброс, старт - и функция выдаёт ошибку настроек порта.
    Создаю загрузочный проект, перезагружаю - всё работает. В чём может быть проблема?
    Тестовый проект во вложении.
    Вложения Вложения

  8. #58

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Конечно, можно.
    Почему-то не меняется время опроса ставлю 500мс и 1000мс, всё равно опрос идёт с частотой 100мс (на глаз).
    Второе, что не понял, для чего в опросе модулей используются шаги (step). Ведь всё равно опрос прописан так, что команды опроса следуют друг за другом...

    Пробую опросить модуль RL_I (это реле с двумя дискретными входами), в котором используются команды Modbus 05(управление реле), 02(опрос входов), 01(состояние реле). Прописал в опросе шаг1 - 05, шаг2 - 01, шаг3 - 02. В результате работает только Шаг1, остальные игнорятся почему-то.

    Может для корректной работы необходимо данный модуль разделить на три? И в каждом использовать нужную функцию по отдельности...

    Попробовал опросить каждой функцией отдельно. По отдельности работают. Причём настройки портов и опроса не меняю (500мс) - 02 функция опрашиватся 500мс, а 01 и 05 - 100мс.

    Вобщем пока не понимаю как опросить один и тот же модуль разными Modbus функциями. Разделить на три модуля не получается т.к. адрес один и тот же - диспетчер не пропускает...
    Вложения Вложения
    Последний раз редактировалось Sergeba; 07.12.2019 в 12:35.

  9. #59

    По умолчанию

    Возможно есть другой способ опроса... Для опроса по трём функциям сделал в основном цикле такую конструкцию:

    Код:
    CASE i OF
    	0: (*функция 01*)
    		IF RL1.FUN<>1 THEN
    			T1:=TIME();
    		END_IF
    		RL1.FUN:=1;
    		 IF (TIME()-T1)>T#200ms THEN i:=1; END_IF (*время адержки перехода на следующую функцию*)
    	1: (*функция 02*)
    		IF RL1.FUN<>2 THEN
    			T2:=TIME();
    		END_IF
    		RL1.FUN:=2;
    		 IF (TIME()-T2)>T#500ms THEN i:=2; END_IF (*время задержки перехода на следующую функцию*)
    	2: IF V<>V_bak THEN (*функция 05*)
    		V_bak:=V;
    		RL1.wrDO:= NOT RL1.wrDO;
    		T3:=TIME();
    		RL1.FUN:=5;
    	   END_IF
    	  IF (TIME()-T3)>T#1s THEN i:=0; END_IF (*время задержки перехода на следующую функцию*)
    END_CASE
    В соответсвующей функции опрашиваю модуль также оператором case - передаю из основной программы посредством RL1.FUN.
    Так теперь работает.
    Последний раз редактировалось Sergeba; 07.12.2019 в 18:13.

  10. #60
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Почему-то не меняется время опроса ставлю 500мс и 1000мс, всё равно опрос идёт с частотой 100мс (на глаз).
    Должен меняться. Вы точно меняете PollingTime, а не ValidPollingTime, например?


    Цитата Сообщение от Sergeba Посмотреть сообщение
    Второе, что не понял, для чего в опросе модулей используются шаги (step). Ведь всё равно опрос прописан так, что команды опроса следуют друг за другом...
    Как правило опрос в модулях организован следующим образом (для модулей ввода):
    1. На 1-м шаге вызываем соответствующую функцию опроса. Когда она завершила работу (Complete=true) анализируем результат и либо повторяем шаг 1 или идем на следующий.
    2. На 2-м шаге, если нужно опрашиваем другие регистры этого же модуля, если нужно другой функцией. Когда функция завершила работу (Complete = true) анализируем результат и либо повторяем шаг или идем на следующий.
    ...
    N. На заключительном шаге выполняем различные сервисные функции. В частности: статистика, сообщаем диспетчеру, что опрос завершен.

Страница 6 из 13 ПерваяПервая ... 45678 ... ПоследняяПоследняя

Похожие темы

  1. Универсальный блок питания ПР114
    от sea в разделе Программируемые реле
    Ответов: 12
    Последнее сообщение: 13.10.2013, 22:56
  2. PCLogger - универсальный логгер для CDS v3
    от Mikhail Shvetsov в разделе ПЛК3хх
    Ответов: 0
    Последнее сообщение: 23.11.2012, 14:39
  3. Универсальный Modbus Сервер Инсат и 200 контроллеров ПЛК-100
    от lomtik в разделе Сетевые технологии
    Ответов: 17
    Последнее сообщение: 08.11.2012, 23:42
  4. Универсальный конфигурируемый регулятор
    от ОООСА в разделе Разработки
    Ответов: 32
    Последнее сообщение: 09.12.2009, 22:12
  5. Ответов: 7
    Последнее сообщение: 04.05.2009, 10:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •