Показано с 1 по 8 из 8

Тема: пр103 и Мастер 485

  1. #1

    По умолчанию пр103 и Мастер 485

    Добрый день.
    Имеется ПР103 как Мастер по RS485 и Slave по Ethernet. По RS485 как Slave подключен
    датчик протечек (пока один, но будет несколько). В некоторых случаях датчик требуется
    перегружать записав в регистр "Х" значение 77, функция 06. Далее датчик перегружается
    около 4 сек. Если в момент перегрузки ещё раз отправить команду перегрузки то датчик с
    вероятностью 50% уйдет в ошибку, сброс только отключением питания! Таким образом требуется:
    1. По внешнему воздействию: изменению регистра ModBus/TCP с 0 на 1, или нажатию
    кнопки на входе DI, инициировать передачу команды перегрузки ОДИН раз!
    2. Сбросить внешнее воздействие: обнулить ModBus/TCP регистр или отключить вход DI.
    3. Заблокировать на 5сек. внешние воздействия.
    С пунктом 3 все понятно, запускаем таймер. А вот по 1 и 2 не сообразить!
    Буду благодарен за советы.

  2. #2

    По умолчанию

    ...я могу ошибаться, но вроде как в ПРках есть режим "Запись по изменению". Это означает, что значение по Modbus будет отправлено на устройство ОДИН раз только тогда, когда оно изменится в программе.
    Примерно так:
    * Было 0 - ничего не делаем
    * Стало 77 - отправили команду на запись значения "77" ОДИН раз
    * Осталось 77 - ничего не делаем
    * Стало 0 - отправили команду на запись значения "0" ОДИН раз
    * Осталось 0 - ничего не делаем

    Дополнил. Я ещё иногда делаю через ПРку/ПЛК управление питанием тех штуковин, которые надо перезагружать или тех, которые могут зависнуть. Просто трачу на это ещё один выход ПРки/ПЛК. Тогда можно реализовать такую логику:
    * Запустилась ПРка/ПЛК, а потом через хх секунд включила датчики
    * Если устройство не отвечает (отслеживаем статус по Modbus) - выключить и включить питание
    Последний раз редактировалось Cs-Cs; 25.06.2023 в 22:04.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  3. #3
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,167

    По умолчанию

    А в чем проблема, выключаете период записи и активируете запись по команде

  4. #4

    По умолчанию

    Может не совсем правильно сформулировал вопрос. Мне нужно реализовать в течении одного цикла
    очередность исполнения. К примеру:
    1. Сравниваю регистр ModBus/TCP с переменной А (начальное значение и там и там 0)
    2. Если равно-ничего не делаем.
    3. Если не равно: инициирую передачу (или по переменной, или по изменению значения)
    4. В конце программы очищаем регистр ModBus/TCP.
    Т.Е. как указать, чтобы после сборки этот блок выполнялся первым, а этот вторым?

  5. #5

    По умолчанию

    Цитата Сообщение от kudres Посмотреть сообщение
    Может не совсем правильно сформулировал вопрос. Мне нужно реализовать в течении одного цикла
    очередность исполнения. К примеру:
    1. Сравниваю регистр ModBus/TCP с переменной А (начальное значение и там и там 0)
    2. Если равно-ничего не делаем.
    3. Если не равно: инициирую передачу (или по переменной, или по изменению значения)
    4. В конце программы очищаем регистр ModBus/TCP.
    Т.Е. как указать, чтобы после сборки этот блок выполнялся первым, а этот вторым?
    В течение одного цикла все это сделать не получится, т.к. задачи обмена по Modbus и выполнение программы не синхронизированы.
    Что вы имеете в виду под фразой "Очищаем регистр Modbus"?

    Если нельзя подавать команду сброса несколько раз, то после активации передачи команды сброса (по изменению или по сигналу) просто отсчитайте необходимую задержку, на время которой заблокируйте возможность повторной передачи команды сброса

  6. #6

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    В течение одного цикла все это сделать не получится, т.к. задачи обмена по Modbus и выполнение программы не синхронизированы.
    Что вы имеете в виду под фразой "Очищаем регистр Modbus"?

    очищаем переменную связанную с регистром.

    Если нельзя подавать команду сброса несколько раз, то после активации передачи команды сброса (по изменению или по сигналу) просто отсчитайте необходимую задержку, на время которой заблокируйте возможность повторной передачи команды сброса
    Так в том-то и вопрос, что сначала выполнить передачу (запись в стек передачи ModBus), а потом задержку или сброс!
    Очередность выполнения команд-функций-макросов как-то вообще можно задать?

  7. #7
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,167

    По умолчанию

    А что за датчик протечек?

  8. #8
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,688

    По умолчанию

    GeshaX
    Очередность выполнения команд-функций-макросов как-то вообще можно задать?
    Можно, например применив счетчик и сравнение для SEL последующих. Один из способов. При старте программы, либо в процессе программы по сбросу счетчика.

Похожие темы

  1. связка СП310-Б Мастер и ПР103 Slave
    от Da-da-da в разделе Программируемые реле
    Ответов: 2
    Последнее сообщение: 17.04.2023, 11:14
  2. ПР103
    от Alexandr1992 в разделе Программируемые реле
    Ответов: 2
    Последнее сообщение: 11.04.2023, 18:28
  3. Пр103 и МУ210-412
    от Zero_q в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 06.02.2023, 09:52
  4. Панель СП 310 слэйв нет обмена ПР103 мастер,
    от GREGORY64 в разделе Программируемые реле
    Ответов: 1
    Последнее сообщение: 13.12.2022, 10:39
  5. Ответов: 5
    Последнее сообщение: 07.09.2011, 09:36

Ваши права

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