- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
S7 1200 и modbus rtu, запись значений
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 19 авг 2018, 13:39
- Имя: Денис
S7 1200 и modbus rtu, запись значений
Добрый день. С сименсом опыта маловато, поэтому прошу направить в нужную сторону. Есть задача считывать и записывать переменные по модбас RTU. Сименс в качестве мастера.
ПО чтению все понятно.
А как записывать значения не периодически, а только при изменении значения тега (переменной)? Потому что оборудование еще управляется вручную. Странно будет, если контроллер все время будет слать значение выключить.
ПО чтению все понятно.
А как записывать значения не периодически, а только при изменении значения тега (переменной)? Потому что оборудование еще управляется вручную. Странно будет, если контроллер все время будет слать значение выключить.
-
- почётный участник форума
- Сообщения: 3577
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 6 раз
- Поблагодарили: 271 раз
S7 1200 и modbus rtu, запись значений
Ничего странного, обычно так и делают в автоматизации производства. Это надёжнее и безопаснее, чем отправка по событию "изменение тэга": в этом случае можно ошибиться и, извините, просрать текущее состояние.
Отправка по событию делается просто: нужно сохранить значение тэга в промежуточной памяти и в следующем цикле сравнить с новым значением тэга. И так - циклически.
-
- эксперт
- Сообщения: 1624
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 191 раз
S7 1200 и modbus rtu, запись значений
Хочу свои 5 копеек добавит, есть еще способ защиты от импульсных помех, когда, например сигнал считается выставленным, когда он на протяжении нескольких периодов стоит. Т.е. согласен с автором замечания полностью, ситуация периодического чтения ТЭГов, совершенно штатная и общепринятая.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 19 авг 2018, 13:39
- Имя: Денис
S7 1200 и modbus rtu, запись значений
С чтением конечно так и обстоят дела.
Но когда ПЛК включает приточную приточную установку, потом приходит работник поменять фильтр или просто надоела она шуметь и выключает ее руками с контроллера щита автоматики приточки. И тут наш ПЛК опять запишет в нее старт.
Отправлено спустя 4 минуты 3 секунды:
Что-то типа такого имеете ввиду?
-
- эксперт
- Сообщения: 1624
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 191 раз
S7 1200 и modbus rtu, запись значений
С чего ради он запишет старт ? Отвыкайте от вредной привычки пользоваться потенциальными командами. Есть импульсная команда включить, и есть импульсная команда выключить. Т.е. если я выключу приточку, то при включении PLC ровным счетом ничего не произойдет, пока не будет подана импульсная команда старт.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 19 авг 2018, 13:39
- Имя: Денис
S7 1200 и modbus rtu, запись значений
Распишу как вижу это я. Возможно что-то у сименса не так, как у других производителей.petr2off писал(а): ↑20 авг 2018, 09:52 С чего ради он запишет старт ? Отвыкайте от вредной привычки пользоваться потенциальными командами. Есть импульсная команда включить, и есть импульсная команда выключить. Т.е. если я выключу приточку, то при включении PLC ровным счетом ничего не произойдет, пока не будет подана импульсная команда старт.
Есть скада например. Оператор меняет уставку температуры на скаде. Она уходит в контроллер. Либо сам контроллер ее поменяет, по своему алгоритму. Уставка изменилась. Ее нужно передать на контроллер приточной установки. Елси бы скада у меня напрямую работала с контроллером приточной установки, то проблем нет. Но с ним работает плк сименс. Так вот сименс не понимает изменилась у него уставка или нет. Он может ее писать либо периодически (как организовано чтение переменных), либо по какому-то сигналу. Этот сишгнал я так понимаю придется колхозить (сравнивание в предыдущим значением). Вот при периодической записи приточка будет давать уставку из контроллера сименс, даже если человек руками подойдет поменяет.
Признак изменения переменной я где-то точно видел. Есть он и в winCC например. Вот хотел узнать есть ли такое в s7 или нужно колхозить.
-
- эксперт
- Сообщения: 1624
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 191 раз
S7 1200 и modbus rtu, запись значений
Давайте по порядку. Сименс тут не причем, не он придумал IECовские языки. Это уже не чтение, а управление устройством. С похожей проблемой я сталкивался, при программировании частотников.
Как я сделал. У частотника есть регистр - задание частоты. И есть регистр текущеее значение частоты. Это интерфейс общение с устройством (по Modbus, yfghbvth).
У оператора в СКАДА есть экранный интерфейс, набор команд управления, рассмотрим например команду оператора - прямое задание частоты.
Есть экранное поле - для значения частоты, есть кнопка - импульсная дискретная команда задать частоту (истина, пока нажата кнопка). Я внес новое задание в поле, оно передалось в PLC, во внутренний тэг задатчика, но пока ничего не произошло. Далее нажатие на кнопку - сработала импульсная команда задать частоту, в PLC значение задатчика переписывается в регистр частотника. Он начинает его отрабатывать.
Тонкий момент при перезагрузки PLC. Если ничего не делать, то начальное состояние регистра задания частоты частотника будет послано на него, если оно 0 - то он встанет. Эту ситуацию нужно обработать. Есть понятие старта контроллера (в сименсе даже специальный OB для этого есть), если используется другой контроллер - тупо заводится начальная логическая переменная, и первым же шагом выполняется стартовая обработка по условию, после чего переменная инвертируется и эта часть более не обрабатывается.)
При отработки старта PLC значение из регистра текущей частоты переписывается в регистр задание частотника (возможно при этом некоторая потеря или набор частоты) в зависимости от точности двойного преобразования. И все, далее управление - либо от оператора (режим ДУ) либо от регулятора (режим АУ) либо от команд функционального управления.
Это чистая алгоритмизация, конкретный контроллер может лишь дополнительные инструменты для этого предоставить (например специальный OB как сименс)
Как я сделал. У частотника есть регистр - задание частоты. И есть регистр текущеее значение частоты. Это интерфейс общение с устройством (по Modbus, yfghbvth).
У оператора в СКАДА есть экранный интерфейс, набор команд управления, рассмотрим например команду оператора - прямое задание частоты.
Есть экранное поле - для значения частоты, есть кнопка - импульсная дискретная команда задать частоту (истина, пока нажата кнопка). Я внес новое задание в поле, оно передалось в PLC, во внутренний тэг задатчика, но пока ничего не произошло. Далее нажатие на кнопку - сработала импульсная команда задать частоту, в PLC значение задатчика переписывается в регистр частотника. Он начинает его отрабатывать.
Тонкий момент при перезагрузки PLC. Если ничего не делать, то начальное состояние регистра задания частоты частотника будет послано на него, если оно 0 - то он встанет. Эту ситуацию нужно обработать. Есть понятие старта контроллера (в сименсе даже специальный OB для этого есть), если используется другой контроллер - тупо заводится начальная логическая переменная, и первым же шагом выполняется стартовая обработка по условию, после чего переменная инвертируется и эта часть более не обрабатывается.)
При отработки старта PLC значение из регистра текущей частоты переписывается в регистр задание частотника (возможно при этом некоторая потеря или набор частоты) в зависимости от точности двойного преобразования. И все, далее управление - либо от оператора (режим ДУ) либо от регулятора (режим АУ) либо от команд функционального управления.
Это чистая алгоритмизация, конкретный контроллер может лишь дополнительные инструменты для этого предоставить (например специальный OB как сименс)
-
- здесь недавно
- Сообщения: 26
- Зарегистрирован: 29 май 2015, 10:21
- Имя: Сергей Александрович
- Страна: Россия
S7 1200 и modbus rtu, запись значений
Demus писал(а): ↑19 авг 2018, 13:44 Добрый день. С сименсом опыта маловато, поэтому прошу направить в нужную сторону. Есть задача считывать и записывать переменные по модбас RTU. Сименс в качестве мастера.
ПО чтению все понятно.
А как записывать значения не периодически, а только при изменении значения тега (переменной)? Потому что оборудование еще управляется вручную. Странно будет, если контроллер все время будет слать значение выключить.
Я делаю так
Использую компаратор проверяющий текущее значение переменной и уставку. Если они совпадают перехожу к следующему блоку.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 19 авг 2018, 13:39
- Имя: Денис
S7 1200 и modbus rtu, запись значений
Полностью со всем согласен, кроме как то, у меня порядка 120 насчитывается объектов для записи в данном проекте. Если на каждый ставить кнопку "запись" то заказчик пошлет меня далеко. 240 кнопок в интерфейсе (пускай и в разных окнах), в котором еще и считываемые данные будут (раз в 5 больше), это слишком. Пока пришел к тому, чтобы делать сравнение.petr2off писал(а): ↑20 авг 2018, 17:01 Давайте по порядку. Сименс тут не причем, не он придумал IECовские языки. Это уже не чтение, а управление устройством. С похожей проблемой я сталкивался, при программировании частотников.
Как я сделал. У частотника есть регистр - задание частоты. И есть регистр текущеее значение частоты. Это интерфейс общение с устройством (по Modbus, yfghbvth).
У оператора в СКАДА есть экранный интерфейс, набор команд управления, рассмотрим например команду оператора - прямое задание частоты.
Есть экранное поле - для значения частоты, есть кнопка - импульсная дискретная команда задать частоту (истина, пока нажата кнопка). Я внес новое задание в поле, оно передалось в PLC, во внутренний тэг задатчика, но пока ничего не произошло. Далее нажатие на кнопку - сработала импульсная команда задать частоту, в PLC значение задатчика переписывается в регистр частотника. Он начинает его отрабатывать.
Тонкий момент при перезагрузки PLC. Если ничего не делать, то начальное состояние регистра задания частоты частотника будет послано на него, если оно 0 - то он встанет. Эту ситуацию нужно обработать. Есть понятие старта контроллера (в сименсе даже специальный OB для этого есть), если используется другой контроллер - тупо заводится начальная логическая переменная, и первым же шагом выполняется стартовая обработка по условию, после чего переменная инвертируется и эта часть более не обрабатывается.)
При отработки старта PLC значение из регистра текущей частоты переписывается в регистр задание частотника (возможно при этом некоторая потеря или набор частоты) в зависимости от точности двойного преобразования. И все, далее управление - либо от оператора (режим ДУ) либо от регулятора (режим АУ) либо от команд функционального управления.
Это чистая алгоритмизация, конкретный контроллер может лишь дополнительные инструменты для этого предоставить (например специальный OB как сименс)
-
- эксперт
- Сообщения: 1624
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 191 раз
S7 1200 и modbus rtu, запись значений
Конкретный визуальный интерфейс - это зависит от задачи, но осмелюсь просить - а кем эти уставки меняются ? Разве не оператором ?
А раз так, какой то визуальный механизм все равно будет. 120 объектов для записи - это на самом деле не много. Поле и кнопка - это просто самый простой механизм. Естественно он не единственный. На то Вы и инженер - что бы придумать удобный и безопасный механизм работы с уставками.
А раз так, какой то визуальный механизм все равно будет. 120 объектов для записи - это на самом деле не много. Поле и кнопка - это просто самый простой механизм. Естественно он не единственный. На то Вы и инженер - что бы придумать удобный и безопасный механизм работы с уставками.
-
- почётный участник форума
- Сообщения: 3577
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 6 раз
- Поблагодарили: 271 раз
S7 1200 и modbus rtu, запись значений
Есть два способа:
1. Работа по событиям. Нужно следить за изменением значений ВСЕХ тэгов (наверняка забудете про какую-нибудь замухрыжную переменную и ваша система в определённый момент не сработает и разбирательство этого бага может затянуться на годы).
2. Работа в реальном времени. Никаких изобретательств головного мозга.
Да, есть неасутпшные системы (не СРВ), где на уровне ОС реализована событийная логика, ради экономии траффика и в связи с допустимым выводом некоторых компонентов из системы в процессе эксплуатации. Но здесь тоже возникают непонятки, как поведёт себя система после перезагрузки и т.д.
Но АСУТП - система реального времени, здесь железо (микропроцессоры) заточены на ровный цикл исполнения программы, протоколы реального времени и всё такое.
-
- эксперт
- Сообщения: 1055
- Зарегистрирован: 11 ноя 2012, 18:21
- Имя: Нурисламов Руслан М.
- Страна: Казахстан
- город/регион: Алматы
- Благодарил (а): 23 раза
- Поблагодарили: 32 раза
S7 1200 и modbus rtu, запись значений
Всегда интересовал вопрос. Импульсная команда старт ушла. Частотник должен быть в работе и молотить, молотить.petr2off писал(а): ↑20 авг 2018, 09:52 С чего ради он запишет старт ? Отвыкайте от вредной привычки пользоваться потенциальными командами. Есть импульсная команда включить, и есть импульсная команда выключить. Т.е. если я выключу приточку, то при включении PLC ровным счетом ничего не произойдет, пока не будет подана импульсная команда старт.
Частотник ловит событие /это может быть перегруз по току к примеру, двигатель тельфера держится грузом/. Или происходит событие - перенапряжение, или наоборот просадка питающего напряжения. Частотник - в стоп.
Все... От команды ушедшей в контроллер ничего не осталось. Он сам не знает, включен априори частотник или нет.
Отправлено спустя 6 минут :
У нас был пример, нужно было установке принимать кучу параметров для работы. При этом еще оператор должен был имел возможность менять уставки.Demus писал(а): ↑21 авг 2018, 09:23Полностью со всем согласен, кроме как то, у меня порядка 120 насчитывается объектов для записи в данном проекте. Если на каждый ставить кнопку "запись" то заказчик пошлет меня далеко. 240 кнопок в интерфейсе (пускай и в разных окнах), в котором еще и считываемые данные будут (раз в 5 больше), это слишком. Пока пришел к тому, чтобы делать сравнение.petr2off писал(а): ↑20 авг 2018, 17:01 Давайте по порядку. Сименс тут не причем, не он придумал IECовские языки. Это уже не чтение, а управление устройством. С похожей проблемой я сталкивался, при программировании частотников.
Как я сделал. У частотника есть регистр - задание частоты. И есть регистр текущеее значение частоты. Это интерфейс общение с устройством (по Modbus, yfghbvth).
У оператора в СКАДА есть экранный интерфейс, набор команд управления, рассмотрим например команду оператора - прямое задание частоты.
Есть экранное поле - для значения частоты, есть кнопка - импульсная дискретная команда задать частоту (истина, пока нажата кнопка). Я внес новое задание в поле, оно передалось в PLC, во внутренний тэг задатчика, но пока ничего не произошло. Далее нажатие на кнопку - сработала импульсная команда задать частоту, в PLC значение задатчика переписывается в регистр частотника. Он начинает его отрабатывать.
Тонкий момент при перезагрузки PLC. Если ничего не делать, то начальное состояние регистра задания частоты частотника будет послано на него, если оно 0 - то он встанет. Эту ситуацию нужно обработать. Есть понятие старта контроллера (в сименсе даже специальный OB для этого есть), если используется другой контроллер - тупо заводится начальная логическая переменная, и первым же шагом выполняется стартовая обработка по условию, после чего переменная инвертируется и эта часть более не обрабатывается.)
При отработки старта PLC значение из регистра текущей частоты переписывается в регистр задание частотника (возможно при этом некоторая потеря или набор частоты) в зависимости от точности двойного преобразования. И все, далее управление - либо от оператора (режим ДУ) либо от регулятора (режим АУ) либо от команд функционального управления.
Это чистая алгоритмизация, конкретный контроллер может лишь дополнительные инструменты для этого предоставить (например специальный OB как сименс)
Мы могли на старт-ап контроллера прописывать по дефолту таблицы. Но нет. Тогда операция вкл/выкл затерет режимы.
В итоге родили таблицу. На панели прописали позиции, где вбиваются данные. Содержимое таблицы - на бумажку, и оператору в зубы. Если выключается/включается остановка, первая процедура - корректно прописать данные.
Заодно контроль, что данные вбил человек, а не контроллер так решил.
-
- эксперт
- Сообщения: 1624
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 191 раз
S7 1200 и modbus rtu, запись значений
Еще как знает. Во первых, есть биты состояния вкл/выкл. Есть регистр частоты. Т.е. если частота вращения движка > Частотник работает. Более того, у него еще и регистр диагностики есть. Все не так печально.
-
- эксперт
- Сообщения: 1055
- Зарегистрирован: 11 ноя 2012, 18:21
- Имя: Нурисламов Руслан М.
- Страна: Казахстан
- город/регион: Алматы
- Благодарил (а): 23 раза
- Поблагодарили: 32 раза
S7 1200 и modbus rtu, запись значений
Всегда приходится обдумывать. Если система на PLC мониторинга - это не так важно. Оператор всегда увидит что с частотника актуальная частота, и она не 0. А когда в логике прописываешь техпроцесс - тут кучу сравнений нужно.
Бывает даже запоминать что запуск произошел.
Мне как-то в обычную трубу надо было воду отправлять. И задвижки, без концевиков. Такой объем логики, и триггер специально, что там была команда открывать задвижку. И куча состояний, которые контроллер из расходомера, + из предыдущих команд определял. Считаю это не шибко правильным. Но иногда никак не обойтись без того.
Подытоживая - значит было бы более правильно заводить отдельный сигнал обратной связи, и контроллер по этому сигналу будет логику процесса отрабатывать? // это как бы правильно, но задаст оператор команду пуск, а уставка частоты уйдет 0. Частотник в старте, но не в работе.
Отправлено спустя 12 минут 50 секунд:
У нас была заморочка, в том что по протоколу очень долго данные шли. /более секундные задержки, не один частотник был/.
В итоге определение состояния в котором находится тот же частотник - идет определенное время (когда его нельзя назвать реалтайм, это проблема).
Поэтому считаю можно модель вселенной в PLC иметь, можно и по сигналам это определять. Первое - это быстрое принятие решений.
Второй вариант - решение принимается не быстро, а как получится.
-
- эксперт
- Сообщения: 1624
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 191 раз
S7 1200 и modbus rtu, запись значений
Ну думать то всегда надо. В моем случае, команда пуск означала пуск насоса. И частотник его выходил на 300 оборотов, согласно настройкам частотника. И по команде пуск в задатчик частоты те же 300 оборотов писались. И в слове состояния выставлялся бит - в работе. Если коротко -нерешаемых проблем как правило нет. Но есть определенные правила, которые лучше соблюдать, Одно из таких - импульсные команды предпочтительней. Конечно, из любого правила есть исключения - например командные блокировки. Но они лишь подтверждают основное правило.