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

Изменение программы пастеризатора с целью устранения неучтённой ошибки

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)

Модератор: Глоб.модераторы

Ответить
Аватара пользователя

Автор темы
Alex80
осмотрелся
осмотрелся
Сообщения: 139
Зарегистрирован: 15 дек 2020, 20:29
Имя: Алексей
Страна: Россия
город/регион: Пенза
Благодарил (а): 30 раз
Поблагодарили: 8 раз

Изменение программы пастеризатора с целью устранения неучтённой ошибки

Сообщение Alex80 »

Здравствуйте, коллеги!
На заводе у нас есть пастеризатор - управление на основе CPU S7-300 (конкретно сейчас не помню, да и не важно).
Там много клапанов - кажется 12 и иногда некоторые из них не отрабатывают (они трёхходовые) - не до конца перекрывают. Эта ошибка вроде как предусмотрена - но только выводом сообщения на панель. Процесс при этом не останавливается и нам в пиво нафигачило воды в буфере. Мне поручили дополнить программу.
Проект я на всякий прикреплю.
Я с конкретными вопросами, а не чтобы за меня написали.
Начал я с работы клапанов - раз с ними проблема - это FC98. Там по сути последовательных их вызов в зависимости от режима работы. И проверка как они отработали - это уже FC122. Вот по нему и появились вопросы.
Вставлю комментарий к функции - он важен т.к. в нём и кроется подсказка к механизму управления и отслеживанием работы клапанами:

"CO.MAC srl - Via Garibaldi 34N - Bonate Sotto BG
=----------------------------------------------=
Cliente : Krasny - Vostok
Impianto : Pastorizzatore Flash 21000 Lt
Commessa : 6181 Data : 11.03.2002
=----------------------------------------------=
................................................................................

I N G R E S S I U S C I T E
................................................................................
M 202.5 = RICHIESTA APERTURA/DESTRA M 204.0 = COMANDO APERTURA/DESTRA
M 202.6 = RICHIESTA CHIUSURA/SINISTRA M 204.1 = COMANDO CHIUSURA/SINISTRA
M 202.2 = FC APERTO/DESTRA
M 202.3 = FC CHIUSO/SINISTRA M 205.0 = ALLARME
NumAll = NUMERO ALLARME M 205.1 = ANOMALIA
RitAll = RITARDO ALLARME
................................................................................

- Numerazione allarme : 1..2000
- Stato allarme : DB120 Word = Numero allarme * 2
- Stato valvola : DB21 Byte = Numero allarme * 1 (TipoSt=0)
: DB21 Word = Numero allarme * 2 (TipoSt=1)
- Bit allarme : DB10 Byte dispari = ((N.all-1)/8)- 1 (TipoAl=0)
: DB10 Byte pari = ((N.all-1)/8)+ 1 (TipoAl=0)
: DB10 Byte = ((N.all-1)/8)+ 0 (TipoAl=1)


Pannello OP/VT :TipoAl=0)
+-------------------------+-------------------------+
| 15 14 13 12 11 10 09 08 | 07 06 05 04 03 02 01 00 |
+-------------------------+-------------------------+
| Byte n | | Byte n+1 |
Allarme n.16 Allarme n.9 Allarme n.8 Allarme n.1

Pannello UniOp/ProFace :TipoAl=1)
+-------------------------+-------------------------+
| 15 14 13 12 11 10 09 08 | 07 06 05 04 03 02 01 00 |
+-------------------------+-------------------------+
| Byte n | | Byte n+1 |
Allarme n.8 Allarme n.1 Allarme n.16 Allarme n.9


FUNZIONI COMUNI:
----------------
M 3.0 = Inizio allarme acquisizione manuale
M 3.1 = Presenza allarme
M 3.2 = Compilazione bit allarme
M 3.3 = Inizio allarme acquisizione automatica
M 3.4 = Fine allarme acquisiszione automatica
M 3.5 =
M 3.6 =
M 3.7 = Impulso conteggio ritardo allarme
M 4.0 = Impulso acquisizione allarme generale
M 4.7 = Acquisizione automatica allarme

MB202 = Appoggio ingressi
MB204 = Appoggio uscite
M205.0 = Allarme in corso
M205.1 = Anomalia posizionamento
M205.2 = Anomalia perdita posizione
MB206 = Contatore ritardo allarme
M207.0 = Consenso apre/destra
M207.1 =
M207.2 = Allarme memorizzato
M207.3 = Allarme acquisito
M207.4 = Inizio allarme
M207.5 = Posizione raggiunta
M207.6 =
M207.7 =
MB209 = Stato valvola
MW210 = Numero byte, bit allarme
MW212 = Numero allarme -1"

Это на языке оригинала - я перевёл - если нужно добавлю.
Перевод правда не особо помог - т.к. я саму идею не понял.
FC 122 "Control of valve" (Контроль клапанов) вызывается с двумя параметрами: "NumAll" - номер неисправности и "RitAll" - сброс неисправности.
А дальше начинается тёмный лес - судя по комментарию - в DB120 в соответсвующем адресе лежит статус именно этой тревоги и почему-то он то ли уже умножен на 2ревоги полученный функцией зачем-то надо умножить на 2. Я уже этого момента не понял - вот про эту строку речь: "- Stato allarme : DB120 Word = Numero allarme * 2".

Далее начну с первого "нитворка" и пожалуй на нём пока и остановлюсь ибо там ещё много вопросов и нет смысла их все скопом выливать. Сам NW1:

"
CLR
= #TipoAl
CLR
= #TipoSt

OPN "STATE_ALARM" // Stato allarme
L #NumAll // Numero allarme
SLW 4
T #PStatoAl // Puntatore appoggio allarme (Nall*2)
L DBW [#PStatoAl]
T MW 206
"
В начале, я так понял они выбирают тип HMI с которой будет работать система - ну это ладно.
1)Интереснее дальше - открываем блок данных DB 120 - понятно
2) Загружаем номер аварии 41 (в проекте HMI - под этим номером прописана сооветсвующая тревога)
3) Производим логический сдвиг этого номера на 4 разряда, а это если я правильно всё понял - эквивалент умножения на 16. Получаем аж 656.
4) Далее мы используем это как смещение чтобы загрузить из DB 120? " L DBW [#PStatoAl]" - так в DB 120 такого адреса даже нет. Там всего 520 слов... И я вот и не пойму - что это и зачем?

Остальное спрошу позже, поскольку оно всё перекликается.
CoMac.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.

olexsa
эксперт
эксперт
Сообщения: 1584
Зарегистрирован: 29 май 2009, 21:40
Имя: Александр
Страна: Россия
город/регион: Курган
Благодарил (а): 86 раз
Поблагодарили: 208 раз

Изменение программы пастеризатора с целью устранения неучтённой ошибки

Сообщение olexsa »

Alex80 писал(а): 19 июл 2024, 15:48 Там много клапанов - кажется 12 и иногда некоторые из них не отрабатывают (они трёхходовые) - не до конца перекрывают
1. Почему не до конца перекрывают?
2. Не полное перекрытие клапаном - это норма, или отклонение от нормальной работы клапана?
Alex80 писал(а): 19 июл 2024, 15:48 Начал я с работы клапанов - раз с ними проблема - это FC98
Можно более детальное наименование клапана?
Аватара пользователя

Автор темы
Alex80
осмотрелся
осмотрелся
Сообщения: 139
Зарегистрирован: 15 дек 2020, 20:29
Имя: Алексей
Страна: Россия
город/регион: Пенза
Благодарил (а): 30 раз
Поблагодарили: 8 раз

Изменение программы пастеризатора с целью устранения неучтённой ошибки

Сообщение Alex80 »

olexsa писал(а): 19 июл 2024, 19:48 1. Почему не до конца перекрывают?
Точно не могу сказать - видимо какой-то дефект - шток иногда занимает неправильное положение и судя потому что именно эта ошибка анализируется в программе - проблема для данных клапанов известная.
olexsa писал(а): 19 июл 2024, 19:48 2. Не полное перекрытие клапаном - это норма, или отклонение от нормальной работы клапана?
Отклонение однозначное. В продукт попадает вода например. Или продукт вообще идёт не по тем трубам.

Клапана ThinkTop
02.jpg
01.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.

olexsa
эксперт
эксперт
Сообщения: 1584
Зарегистрирован: 29 май 2009, 21:40
Имя: Александр
Страна: Россия
город/регион: Курган
Благодарил (а): 86 раз
Поблагодарили: 208 раз

Изменение программы пастеризатора с целью устранения неучтённой ошибки

Сообщение olexsa »

Alex80 писал(а): 22 июл 2024, 09:55 Точно не могу сказать - видимо какой-то дефект - шток иногда занимает неправильное положение и судя потому что именно эта ошибка анализируется в программе - проблема для данных клапанов известная.
То есть вместо устаранения дефекта оборудования - корректировка ПО? И когда однажды оборудование сломается - то крайним будет тот, кто выполнил корректировку ПО? :ges_hmm: Хм, так себе перспектива.

Отправлено спустя 2 минуты 25 секунд:
Alex80 писал(а): 22 июл 2024, 09:55 и судя потому что именно эта ошибка анализируется в программе - проблема для данных клапанов известная.
Совсем не факт.
Если, к примеру ПО анализирует состояние контактора, то это не в связи с тем, что у контактора есть проблема по включению / отключению, а для того, что бы минимизировать риски развития аварийной ситуации.
Аватара пользователя

Автор темы
Alex80
осмотрелся
осмотрелся
Сообщения: 139
Зарегистрирован: 15 дек 2020, 20:29
Имя: Алексей
Страна: Россия
город/регион: Пенза
Благодарил (а): 30 раз
Поблагодарили: 8 раз

Изменение программы пастеризатора с целью устранения неучтённой ошибки

Сообщение Alex80 »

olexsa писал(а): 22 июл 2024, 10:56 То есть вместо устранения дефекта оборудования - корректировка ПО? И когда однажды оборудование сломается - то крайним будет тот, кто выполнил корректировку ПО? Хм, так себе перспектива.
В любом случае - анализ этой ошибки уже включён в программу. Меня просят немного изменить поведение из-за этой ошибки. И сделать её отработку, как например при выходе за диапазон коэффициента пастеризации - сразу переводить систему в стоп, а далее предложить оператору самому выбор действий. Мысли есть - например я думаю добавить вызов "генерации ошибки" (FC120) из функции "ошибки машины" FC 102. Но там всё равно этот пресловутый код надо понять - для чего там какие умножения делаются и т.д.
Насколько я понял все вызовы в "ошибки машины" (FC 102) приводят как раз к её остановке и выбору действий оператором.

thefergi
здесь недавно
здесь недавно
Сообщения: 12
Зарегистрирован: 10 мар 2022, 15:38
Имя: Роман
Страна: Россия
город/регион: Тверь
Благодарил (а): 1 раз

Изменение программы пастеризатора с целью устранения неучтённой ошибки

Сообщение thefergi »

Вам для понятия принципа алгоритма программы необходимо, либо во время работы в режиме мониторинга посмотреть как оно устроено, либо же просимулировать в plcsim. Одно из очевидных первых действий

makesstr
освоился
освоился
Сообщения: 222
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 38 раз

Изменение программы пастеризатора с целью устранения неучтённой ошибки

Сообщение makesstr »

Не работает клапан - грузить контроллер?
У вас на автомобиле когда лампочка поворотника перегорает и реле начинает щелкать в два раза быстрее - вы меняете лампочку или меняете прошивку на мозгах? :icon_rant:
WinCC 7.4 SP1 Upd15, Step5.6

Barsukovm
здесь недавно
здесь недавно
Сообщения: 53
Зарегистрирован: 15 мар 2023, 21:57
Имя: Михаил
Страна: Россия
город/регион: Волгоградская область / г. Волжский
Благодарил (а): 1 раз
Поблагодарили: 14 раз

Изменение программы пастеризатора с целью устранения неучтённой ошибки

Сообщение Barsukovm »

Alex80 писал(а): 19 июл 2024, 15:48 4) Далее мы используем это как смещение чтобы загрузить из DB 120? " L DBW [#PStatoAl]" - так в DB 120 такого адреса даже нет. Там всего 520 слов... И я вот и не пойму - что это и зачем?
41 аларм имеет адрес в блоке данных 41*2 = 82 ("STATE_ALARM".ALARM[41] = DB120.DBW 82)- вы можете это проверить добавив все адреса блока данных D120 в таблицу (Variable Table). Итого у вас всего в системе всего 260 алармов.
обратите внимание на тип переменной #PStatoAl - она типа DWORD - так что вся эта конструкция по факту = умножение номера аларма на 2 в виде указателя S7 Pointer format.
На скриншоте вбил в переменную MD360 значение 656 (L#656) - она же строкой выше в ввиде указателя это 82.0
Снимок.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

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