1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

S7-1500 не реагирует на инвертированный бит в HMI

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
honeybear
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 13 авг 2020, 15:48
Имя: Михаил
Страна: Russia
город/регион: Saint-Petersburg

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение honeybear »

Здравствуйте! Я начинающий программист ПЛК. Есть небольшой опыт ООП на яве (бэкенд, апи), но с промышленными контроллерами знаком 4 месяца. И Сименс за этот короткий период уже успел изрядно удивить неопытного объезжатора. :ges_hmm: Сейчас решаю задачу: научить общаться НСУ с ПЛК через блоки Send_PTP и Reseive_PTP.
Имеется ПЛК Siemens 1513F-1 PN, сейфти режим отключен, имеется тиа 16. Одна из задач программы (и НСУ) - реакция на нажатия оператором кнопок в HMI.
Суть вопроса следующая: есть FB1 с DB1, в FB1 есть тэг recoveryFlag (bool), он привязан к кнопке в HMI, при нажатии кнопки срабатывает скрипт invertBit (setBit тоже пробовал). Конкретный тег отвечает за отправку сообщения разблокировки НСУ. Сообщение уже готово и тупо пишется из хранилища в буфер НСУ.
Нажимаем кнопку, надеваем "очки" - тег изменился.
Пишем в том же FB1 код на SCL

Код: Выделить всё

IF #recoveryFlag = TRUE THEN
    FOR #i := 0 TO 5 DO
        #readyToSendMsg[#i] := #sndCode.recoveryArr[#i];
    END_FOR;
    #recoveryFlag := FALSE;
END_IF;
Нажимаем кнопку - действие не происходит, ну то есть одев "очки" в массиве readyToSendMsg пусто, тег recoveryFlag - ФОЛС!
Добавляем для проверки булевый тег check с условием стать ТРУ, если тег recoveryFlag стал ТРУ.
Нажимаем кнопку - массив не записывается, тег recoveryFlag - ФОЛС, но check висит ТРУ. :ges_slap:
При истеричном нажатии на кнопку в HMI, раза с 3-10-27.. проскакивает одно срабатывание и массив пишется.
Вот ломаю голову, в чем причина... То есть тег трушится и фолсится раньше, чем выполнилось действие, после которого тег должен фолситься.
Вместо цикла FOR на пробу просто поэлементно присваивал один массив к другому в 6 строк - ни чего. Пробовал блокировку делать через тот же check и дальше работать с ним - ни чего.

Есть прямая связь с присутствием любого тега, связанного с HMI, в коде SCL, потому как стоит убрать его из кода - он начинает стабильно инвертироваться, а сам код, как видно, простой и как-то навредить работе тега не в состоянии.

ЗЫ: с такой-же проблемой еще 2 оставшиеся кнопки (тега) в HMI. Одна из них идентична по работе с описанной выше, вторая отличается, но простота логики та же.

Буду признателен за помощь! :ges_help:
Аватара пользователя

VADR
администратор
администратор
Сообщения: 4727
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 225 раз
Поблагодарили: 392 раза

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение VADR »

Перенёс тему в соответствующий раздел.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

POV
корифей
корифей
Сообщения: 762
Зарегистрирован: 12 авг 2008, 11:05
Имя: Патрушев Олег Валерьевич
Страна: Россия
город/регион: г. Н.Новгород
Благодарил (а): 105 раз
Поблагодарили: 146 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение POV »

Полный текст FB с описанием типов. Как и где вызываете? SCADA какая и как там организована запись. А то вот фраза
honeybear писал(а): 05 окт 2020, 15:10 Есть прямая связь с присутствием любого тега, связанного с HMI, в коде SCL, потому как стоит убрать его из кода - он начинает стабильно инвертироваться
заставляет думать, что код инвертирования убрали, а бит инвертируется. Каша какая то.

Roman_33
освоился
освоился
Сообщения: 266
Зарегистрирован: 25 ноя 2018, 17:55
Имя: Роман
Благодарил (а): 4 раза
Поблагодарили: 41 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение Roman_33 »

Ну наверное условием сброса флага должно быть выполнение FOR. И флаг лучше сетить, а не инвертировать,а то "дрожащими ручонками" Вы можете несколько раз за раз кнопку нажать.
Последний раз редактировалось Roman_33 05 окт 2020, 19:58, всего редактировалось 1 раз.
Случается нередко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение megavolt86 »

honeybear писал(а): 05 окт 2020, 15:10 Нажимаем кнопку - действие не происходит, ну то есть одев "очки" в массиве readyToSendMsg пусто, тег recoveryFlag - ФОЛС!
а очки вам дают способность видеть как колибри машет крыльями?)
Цикл выполнения программы несколько милисекунд, если за один цикл у вас значение и читается и сбасывается вы этого и не увидите никогда!
Попробуйте добавьте условие дополнительное:

Код: Выделить всё

IF #recoveryFlag = TRUE THEN
    FOR #i := 0 TO 5 DO
        #readyToSendMsg[#i] := #sndCode.recoveryArr[#i];
    END_FOR;
    If #i>=5 then
    #recoveryFlag := FALSE;
    #i:=0;
    End_if;
END_IF;
Еще вопрос, как видите что массив не переписывается? Может в родительском массиве чтото не записывается?
:ext_secret:

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение Михайло »

Мне кажется, #recoveryFlag связан с какой-то нестатической областью памяти блока FB1/DB1. То есть вы ему выделили, например, временную область temp, которая создается и разрушается (возможно случайно затирается при этом) каждый цикл программы.

Roman_33
освоился
освоился
Сообщения: 266
Зарегистрирован: 25 ноя 2018, 17:55
Имя: Роман
Благодарил (а): 4 раза
Поблагодарили: 41 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение Roman_33 »

Ну к "темповой" переменной вряд ли он сумел бы из панели обратиться. У него либо адреса пересекаются, либо может из тактовых что поставил.
Случается нередко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1617
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 70 раз
Поблагодарили: 189 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение petr2off »

megavolt86 писал(а): 05 окт 2020, 19:56 Цикл выполнения программы несколько милисекунд, если за один цикл у вас значение и читается и сбасывается вы этого и не увидите никогда!
Я в начале своей деятельности на такие грабли наступил. Вообще циклическое исполнение кода в PLC накладывает некоторые особенности в алгоритме, которые не очевидны, если до этого ты занимался классическим программированием. Помню я в отладчике до посинения сбрасывал бит наверно раз 100, а он не менялся, потому как раз в 20 мск он устанавливался в другом месте.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение Михайло »

Программисты классического программирования сталкиваются с асинхронными эффектами, подобными нашим, в многопоточном программировании. При чем там скорости намного больше ("колибри машет крыльями чаще").
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1617
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 70 раз
Поблагодарили: 189 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение petr2off »

Ну когда я интенсивно программировал, не было многопоточного программирования. Зато был фортран.
А "многопоточным" программирование я занимался попозже, на С. Но там были более тонкие грабли.

Автор темы
honeybear
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 13 авг 2020, 15:48
Имя: Михаил
Страна: Russia
город/регион: Saint-Petersburg

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение honeybear »

Добавил скрин
Roman_33 писал(а): 05 окт 2020, 19:44 Ну наверное условием сброса флага должно быть выполнение FOR. И флаг лучше сетить, а не инвертировать,а то "дрожащими ручонками" Вы можете несколько раз за раз кнопку нажать.
Сейчас уже реализовано именно так - с проверкой результата цикла FOR, путем проверки состояния буфера и успешную отправку сообщения, а воз и ныне там. И флаги для двух идентичных операций - один с invertBit, другой с setBit. Прогресс не стоит на месте, но ПЛК это интересует мало.
megavolt86 писал(а): 05 окт 2020, 19:56 а очки вам дают способность видеть как колибри машет крыльями?)
megavolt86 писал(а): 05 окт 2020, 19:56 Еще вопрос, как видите что массив не переписывается? Может в родительском массиве что-то не записывается?
Массив recoveryArr - статик и не меняется, это запись известного нам сообщения для НСУ, оно не создается автоматом или еще как. В результате цикла FOR оно записывается в буфер блока Send_ptp. И именно там я проверяю состояние сообщения "очками", помимо записанного в буфер сообщения должен еще прилететь соответствующий ответ от НСУ. Записывая массив в буфер через Modify всё моментально работает. И ни кто не ждет, что очки покажут крыло колибри, не нужно передергивать, пожалуйста. Читайте внимательнее. Проверочный тег трушнулся, значит нужный тег сработал, но массив не записался, хотя по моему глубочайшему, видимо, заблуждению - должен, код был скинут сразу и если код неверный - так и напишите. А я пока попробую Вашу проверку FOR'а сделать.

Изображение

Изображение

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение Михайло »

honeybear, владеете инструментом cross reference в ТИА Портале?
Посмотрите с помощью этого инструмента, может где-то в программе recoveryFlag повторно задается?

Потом, второй момент сомнительный - в одном FB не стоит писать на двух языках. Возможно FB2/Network3 просто не компилится как следует.

Автор темы
honeybear
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 13 авг 2020, 15:48
Имя: Михаил
Страна: Russia
город/регион: Saint-Petersburg

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение honeybear »

Михайло писал(а): 06 окт 2020, 11:10 Посмотрите с помощью этого инструмента, может где-то в программе recoveryFlag повторно задается?
Умею =), проверял. Схема взаимодействия следующая:
Тег создан как InOut в Fb, проиллюстрированной выше, к нему цепляется одноименный тег из отдельной DB (глобальная), то есть глобальный тег прописан как входной(выходной) параметр FB в мейне на ладдере, и далее тег уходит в HMI теги, откуда напрямую вписан в кнопку.
Михайло писал(а): 06 окт 2020, 11:10 Потом, второй момент сомнительный - в одном FB не стоит писать на двух языках. Возможно FB2/Network3 просто не компилится как следует.
Почему не стоит? Объясните пожалуйста. Т.к. много примеров программ в интернете указывают на обратное утверждение. Хотя у меня были мысли попробовать SCL вычленять в виде FC, но цель была другая: две кнопки выполняют по сути одну и ту же функцию, но с разными тегами, думал таким образом чуть оптимизировать программу. Есть над чем подумать!)

Roman_33
освоился
освоился
Сообщения: 266
Зарегистрирован: 25 ноя 2018, 17:55
Имя: Роман
Благодарил (а): 4 раза
Поблагодарили: 41 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение Roman_33 »

Попробуйте вот как то так что ли.
Последний раз редактировалось Roman_33 06 окт 2020, 12:34, всего редактировалось 1 раз.
Случается нередко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение Михайло »

honeybear писал(а): 06 окт 2020, 11:29 Почему не стоит? Объясните пожалуйста.
Я не знаю, почему среда разработки позволяет делать много языков в одном блоке, но изначально задумано для каждого блока выбор одного языка.
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение megavolt86 »

honeybear писал(а): 06 окт 2020, 09:12 И ни кто не ждет, что очки покажут крыло колибри, не нужно передергивать, пожалуйста. Читайте внимательнее.
[+] Да, дядя, так и поступлю наверное!)
Но прежде чем указывать как нужно читать другим научитесь писать нормальным техническим великорусским языком...ибо слов написано много, а сути мало...
Теперь к нашим попугаям вернемся:
Для начала мне непонятна ваша конструкция в конце первого и второго нетворков... Что вы этим хотели сказать?
Второе плохим тоном при программировании является записывать в один и тот же элемент памяти (тэг) значения при разных условиях, например у вас в нескольких блоках if происходит запись в одни и те же переменные, да вероятность одновременного срабатывания мала, но она есть все же. Для таких целей я обычно использую альтернативные условия (elsif).
И третье, вроде как значение шага в цикле for необходимо указывать, либо в условии либо в теле.
[+] И уж самое нереальное...
Но бывало у коллег такое, что плк в стопе :crazy0to:
Да и желательно бы проверить плк на наличие системных ошибок.
:ext_secret:

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение Михайло »

megavolt86 писал(а): 06 окт 2020, 22:59 Второе плохим тоном при программировании является
А я бы ушел вообще от SCL к LAD, так как код SCL содержит нединамические циклы - i от 0 до 5, которые можно свести к 6 последовательным действиям (MOVE).

Автор темы
honeybear
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 13 авг 2020, 15:48
Имя: Михаил
Страна: Russia
город/регион: Saint-Petersburg

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение honeybear »

megavolt86 писал(а): 06 окт 2020, 22:59 [−] Да, дядя, так и поступлю наверное!)
Но прежде чем указывать как нужно читать другим научитесь писать нормальным техническим великорусским языком...ибо слов написано много, а сути мало...
Требуйте от модераторов удалить мой пост в рамках правил форума, если он под такие подпадает. В остальном прошу - по сути вопроса. Покажите мне пример, будьте тем самым образованным и интеллигентным человеком: не можете понять - пройдите мимо молча. Надеюсь, мы закончили этот флуд.

Теперь по делу (скрин приложил):
megavolt86 писал(а): 06 окт 2020, 22:59 Для начала мне непонятна ваша конструкция в конце первого и второго нетворков... Что вы этим хотели сказать?
1. пришел тег из HMI ТРУ - ставим флаг - ТРУ
2. пока флаг ТРУ - выполняем действие - обнуляем флаг
3. если флаг ФОЛС, а тег ТРУ - обнуляем ТЕГ
Это элементарная фиксация тега на случай если проблема в связи c HMI или самим HMI. Я выше писал, что тег из HMI приходил и сразу обнулялся, это показывал тег check, который становился ТРУ, если тег из HMI пришел тру.
megavolt86 писал(а): 06 окт 2020, 22:59 Второе плохим тоном при программировании является записывать в один и тот же элемент памяти (тэг) значения при разных условиях, например у вас в нескольких блоках if происходит запись в одни и те же переменные
1. Массив висит в динамической памяти, какая ему разница, что и когда в него пишут? Тем более "что" и "когда" опредляют условия. Был бы массив в меркере - я бы Вас понял.
2. У меня не сенсорная панель, а монитор, действия только мышкой, хоткеи отсутствуют - нажать сразу 2 кнопки не получится. Также пытался контролить разными условиями. Перевел на Ladder этот блок - ни чего не меняется. Завел тег, связанный с HMI в меркер - стало чуть чаще срабатывать, но ситуация не решилась. Больше склоняюсь к
megavolt86 писал(а): 06 окт 2020, 22:59 Да и желательно бы проверить плк на наличие системных ошибок.
Ну а по поводу
megavolt86 писал(а): 06 окт 2020, 22:59 Но бывало у коллег такое, что плк в стопе
Сидел 2 часа с выключенным НСУ - было :crazy0to:

Изображение
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение megavolt86 »

honeybear писал(а): 07 окт 2020, 08:47 3. если флаг ФОЛС, а тег ТРУ - обнуляем ТЕГ
Ну вот хоть убейте, но место где тэг обнуляется не вижу!
honeybear писал(а): 07 окт 2020, 08:47 Это элементарная фиксация тега на случай если проблема в связи c HMI или самим HMI.
тут вы заблуждаетесь... Если вы установили тэг из чми, то при потере связи он не сбросится если какой-либо обработчик его не сбросит или сама панель.
honeybear писал(а): 07 окт 2020, 08:47 Массив висит в динамической памяти, какая ему разница, что и когда в него пишут?
и тут вы ошибаетесь опять же...при выполнении программы плк руководствуется правилами, сначала считываются значения входов и переменные памяти, затем происходит выполнение кода программы, затем запись в переменные памяти и в выходные каналы. Хаотически (когда и что угодно обрабатывать и записывать) плк не работает.
Следующее, в ладдере вы насоздавали несколько совсем ненужных условий, например нз контакты перед блоком мув... Они по логике не пересекутся никогда, а путают здорово. Подчистите код, уберите лишнее, будет легче разобраться.
[+] на память
На языке ладдер диаграм программа за цикл выполняется слева направо и сверзу вниз
Добавлю еще:
Немного перечитав условие могу посоветовать вообще бросить сие занятие (допиливать этот код), а написать с нуля!
Если вам необходимо по событию (нажатие кнопки) произвести запись то используйте например передний фронт этого сигнала, по завершении сбрасывать сигнал.

Код: Выделить всё

R_trig0(in:=tag0) ;
R_trig1(in:=tag1) ;
If r_trig0.Q then
     Arr0:=Arr1;
     Tag0:=0;
Elsif r_trig1.Q then
     Arr0:=Arr2;
     Tag1:=0;
Elsif... 
... 
End_if;
В панели убрать инверт бит и сделать сет бит по отпусканию кнопки.
:ext_secret:

Автор темы
honeybear
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 13 авг 2020, 15:48
Имя: Михаил
Страна: Russia
город/регион: Saint-Petersburg

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение honeybear »

megavolt86 писал(а): 07 окт 2020, 11:44 Ну вот хоть убейте, но место где тэг обнуляется не вижу!
Обнуляется, а без этой строки - нет. Только что проверил.

Отправлено спустя 6 минут 8 секунд:
megavolt86 писал(а): 07 окт 2020, 11:44 Хаотически (когда и что угодно обрабатывать и записывать) плк не работает.
honeybear писал(а): 07 окт 2020, 08:47 1. Массив висит в динамической памяти, какая ему разница, что и когда в него пишут? Тем более "что" и "когда" опредляют условия.
Речь шла не о плк, а о массиве. А вот как и когда плк будет читать/писать/считать - задает программист логикой, кодом и исходя из принципов работы плк. Если вы знаете, что из лифта выйти можно только через открытую дверь и если перед вами есть пол, вся логика ваших действий будет строиться вокруг этих знаний. А вот кто едет в лифте и когда - это дело десятое.
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение megavolt86 »

honeybear писал(а): 07 окт 2020, 15:16 шла не о плк, а о массиве
а ну если так то ладно.
Массивы если есть это уже хорошо! :crazy0to:
honeybear писал(а): 07 окт 2020, 15:16 Обнуляется, а без этой строки - нет.
ну как программист объясните за счет чего сбрасывается состояние переменной? Ваша же переменная присваивает самой себе состояние 1...
:ext_secret:

Автор темы
honeybear
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 13 авг 2020, 15:48
Имя: Михаил
Страна: Russia
город/регион: Saint-Petersburg

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение honeybear »

megavolt86 писал(а): 07 окт 2020, 18:41 ну как программист объясните за счет чего сбрасывается состояние переменной? Ваша же переменная присваивает самой себе состояние 1...
Тег hmiRecoveryNSU лежит в глобальной DB и подается на вход FB. С другой стороны он связан с HMI, где прописан в setBit. Я уже описывал это выше, но повторюсь...
-Нажимаем кнопку в HMI
-Тег становится ТРУ в глобальной DB
-Поступив в FB hmiRecoveryNSU ТРУшит recoveryFlag, после чего hmiRecoveryNSU должен обнулиться, когда recoveryFlag станет ФОЛС

Убрав условие, которое Вам непонятно, внизу нетворка hmiRecoveryNSU ни где не обнулится.

Рассмотрим этот вопрос с точки зрения логики: операторы 3 стоки нетворка расположены в одну линию и представляют из себя операцию "И", где, по условию, первый операнд должен быть "1", второй операнд "0" - по законам логического умножения получится 0.
Ваш ход!

SergeiKan
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 08 окт 2020, 11:56
Имя: Сергей Кан
Страна: Россия
город/регион: Санкт-Петербург

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение SergeiKan »

Привет всем.
Немного не понял в каком месте загвоздка.
Повторил функцию из первого изображение. всё записалось в Out из Static.

https://photos.app.goo.gl/R1TBGGvoX8pKAR4j8
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение megavolt86 »

honeybear писал(а): 08 окт 2020, 09:26 точки зрения логики
посмотрел и действительно вы правы, работает эта конструкция...но такую вещь вижу впервые, потому был обескуражен)
Удобнее и понятнее использовать инверсные катушки и ресет при необходимости сбросить сигнал. Простая катушка все подразумевает включение а не выключение...
Но раз и так работает то оставляйте.
:ext_secret:

Автор темы
honeybear
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 13 авг 2020, 15:48
Имя: Михаил
Страна: Russia
город/регион: Saint-Petersburg

S7-1500 не реагирует на инвертированный бит в HMI

Сообщение honeybear »

SergeiKan писал(а): 08 окт 2020, 12:19 Привет всем.
Немного не понял в каком месте загвоздка.
Повторил функцию из первого изображение. всё записалось в Out из Static.

https://photos.app.goo.gl/R1TBGGvoX8pKAR4j8
Какой ПЛК и ТИА? Раньше была у нас v15, проц был тот же - 1513А-1 PN, firmware 2.6. Сейчас поменяли ТИА на v16, остальное осталось такое же. На 15шке прошлые проекты работали без нареканий, текущий проект пишется полностью на 16ке. Проекты по своей сути однотипные.
И еще один момент:
В моем проекте требуется управлять функциями НСУ вручную, однако я решил попробовать исключить HMI и написал смену сообщений для НСУ в автоматическом режиме - ни каких проблем, всё передается исходя из условий... По этому мысли терзают, что либо проблема в ТИА (вероятнее), либо в ПЛК.
Ответить

Вернуться в «Simatic TIA Portal»