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

Сравнение значений в step 7

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

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

Ответить

Автор темы
mikerap77791
здесь недавно
здесь недавно
Сообщения: 16
Зарегистрирован: 29 мар 2024, 15:58
Имя: Михаил
Страна: Россия
город/регион: Смоленск
Поблагодарили: 1 раз

Сравнение значений в step 7

Сообщение mikerap77791 »

Здравствуйте уважаемые форумчане. Я только изучаю способности step 7. Подскажите пожалуйста как решить такую задачу... Есть 10 показаний температуры. Нужно сравнить эти показания, и если какая то температура отличается более чем на 3 градуса, то RLO должен стать 1.Спасибо всем кто поможет. Желательно на языке LAD.

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 372
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 50 раз

Сравнение значений в step 7

Сообщение v0v »

mikerap77791 писал(а): 03 июн 2024, 11:57 Нужно сравнить эти показания
Сравнить с чем? Каждую с каждой все 10?

Dmitriy1983
здесь недавно
здесь недавно
Сообщения: 94
Зарегистрирован: 29 окт 2017, 19:52
Имя: Дмитрий
Благодарил (а): 5 раз
Поблагодарили: 18 раз

Сравнение значений в step 7

Сообщение Dmitriy1983 »

Такое лучше писать на scl или Stl. Если сравнивать друг с другом, то типа такого...
Tmax:=Tmin:=0;
For i:= 1 to 10 do
If T<Tmin then
Tmin:=T;
end_if;
If T>Tmax then
Tmax:=T;
end_if;
end_for;
If ((Tmax-Tmin)>3) then
result:=true;
else
result:=false;
end_if;
Аватара пользователя

Nicolayy
не первый раз у нас
не первый раз у нас
Сообщения: 318
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 16 раз
Поблагодарили: 72 раза

Сравнение значений в step 7

Сообщение Nicolayy »

mikerap77791 писал(а): 03 июн 2024, 11:57 Есть 10 показаний температуры. Нужно сравнить эти показания, и если какая то температура отличается более чем на 3 градуса
Что с чем сравнить-то?

Автор темы
mikerap77791
здесь недавно
здесь недавно
Сообщения: 16
Зарегистрирован: 29 мар 2024, 15:58
Имя: Михаил
Страна: Россия
город/регион: Смоленск
Поблагодарили: 1 раз

Сравнение значений в step 7

Сообщение mikerap77791 »

Nicolayy писал(а): 03 июн 2024, 15:05
mikerap77791 писал(а): 03 июн 2024, 11:57 Есть 10 показаний температуры. Нужно сравнить эти показания, и если какая то температура отличается более чем на 3 градуса
Что с чем сравнить-то?
Нужно сравнить между собой все эти 10 значений. Когда всё хорошо, они должны быть примерно одинаковы (+-2 градуса), если какая то емпература отличается на большее значение, то это нужно знать, и вывести на визуализацию сообщение. С визуализацией у меня проблем нет.

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 372
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 50 раз

Сравнение значений в step 7

Сообщение v0v »

mikerap77791 писал(а): 03 июн 2024, 16:14 Нужно сравнить между собой все эти 10 значений
Не понятно зачем сравнивать между собой. Есть какая то уставка для каждой температуры. Сделать сравнение +-3 и выход на бит. Потом параллельно биты на выход.

Автор темы
mikerap77791
здесь недавно
здесь недавно
Сообщения: 16
Зарегистрирован: 29 мар 2024, 15:58
Имя: Михаил
Страна: Россия
город/регион: Смоленск
Поблагодарили: 1 раз

Сравнение значений в step 7

Сообщение mikerap77791 »

v0v писал(а): 03 июн 2024, 16:39
mikerap77791 писал(а): 03 июн 2024, 16:14 Нужно сравнить между собой все эти 10 значений
Не понятно зачем сравнивать между собой. Есть какая то уставка для каждой температуры. Сделать сравнение +-3 и выход на бит. Потом параллельно биты на выход.
Дело в том что температура в установке может плавать, но главное что бы она плавала везде равномерно, уставки нет. Для удобства оператору будет удобнее, если будет появляться предупреждение, а то постоянно смотреть, контролировать температуру на мониторе глаза на лоб вылезут.
Аватара пользователя

Nicolayy
не первый раз у нас
не первый раз у нас
Сообщения: 318
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 16 раз
Поблагодарили: 72 раза

Сравнение значений в step 7

Сообщение Nicolayy »

mikerap77791, какой контроллер?

Автор темы
mikerap77791
здесь недавно
здесь недавно
Сообщения: 16
Зарегистрирован: 29 мар 2024, 15:58
Имя: Михаил
Страна: Россия
город/регион: Смоленск
Поблагодарили: 1 раз

Сравнение значений в step 7

Сообщение mikerap77791 »

Nicolayy писал(а): 03 июн 2024, 17:22 mikerap77791, какой контроллер?
Siemens S-300
Аватара пользователя

Nicolayy
не первый раз у нас
не первый раз у нас
Сообщения: 318
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 16 раз
Поблагодарили: 72 раза

Сравнение значений в step 7

Сообщение Nicolayy »

mikerap77791,

Ну, как-то так. А потом вызовешь эту функцию 10 раз - хочешь в цикле, хочешь просто, и их результаты операцией ИЛИ сложишь...

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

Name          Data Type  Address
IN
t1              Real       0.0
t2              Real       4.0
OUT
is_alarm        Bool       8.0


L #t1
L #t2
-R
ABS
L 3.000000e+000
-R
L 0.000000e+000
>R
= #is_alarm

Автор темы
mikerap77791
здесь недавно
здесь недавно
Сообщения: 16
Зарегистрирован: 29 мар 2024, 15:58
Имя: Михаил
Страна: Россия
город/регион: Смоленск
Поблагодарили: 1 раз

Сравнение значений в step 7

Сообщение mikerap77791 »

Nicolayy писал(а): 03 июн 2024, 19:15 mikerap77791,

Ну, как-то так. А потом вызовешь эту функцию 10 раз - хочешь в цикле, хочешь просто, и их результаты операцией ИЛИ сложишь...

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

Name          Data Type  Address
IN
t1              Real       0.0
t2              Real       4.0
OUT
is_alarm        Bool       8.0


L #t1
L #t2
-R
ABS
L 3.000000e+000
-R
L 0.000000e+000
>R
= #is_alarm
Но здесь только 2 таймера. Или я не понимаю как функцию вызвать 10 раз
Аватара пользователя

Nicolayy
не первый раз у нас
не первый раз у нас
Сообщения: 318
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 16 раз
Поблагодарили: 72 раза

Сравнение значений в step 7

Сообщение Nicolayy »

mikerap77791, это не таймеры )) это две температуры, которые сравниваются, и если результат больше 3, то тогда is_alarm = true. Это типа отдельная функция FC. А ты дальше ее вызывай, где тебе надо и подставляй свои температуры, а все результаты этих вызовов командой ИЛИ. Если хоть один такой вызов вернет true, значит авария.

Автор темы
mikerap77791
здесь недавно
здесь недавно
Сообщения: 16
Зарегистрирован: 29 мар 2024, 15:58
Имя: Михаил
Страна: Россия
город/регион: Смоленск
Поблагодарили: 1 раз

Сравнение значений в step 7

Сообщение mikerap77791 »

Nicolayy писал(а): 03 июн 2024, 19:37 mikerap77791, это не таймеры )) это две температуры, которые сравниваются, и если результат больше 3, то тогда is_alarm = true. Это типа отдельная функция FC. А ты дальше ее вызывай, где тебе надо и подставляй свои температуры, а все результаты этих вызовов командой ИЛИ. Если хоть один такой вызов вернет true, значит авария.
Спасибо я понял. По поводу таймеров опечатался))) но в этой функции сравнивается 2 таймера, значит вызывать эту функцию придется не 10 раз, а 45, что бы сравнить каждый с каждым
Аватара пользователя

Nicolayy
не первый раз у нас
не первый раз у нас
Сообщения: 318
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 16 раз
Поблагодарили: 72 раза

Сравнение значений в step 7

Сообщение Nicolayy »

mikerap77791, почему 45? у вас же 10 показаний, значит, 19 раз, у тебя же сравнивать как? 1-ое значение со 2-ым, потом 2-ое с 3-им и т.д., правильно? И в чем тогда проблема? Ну, либо если они в массиве, тогда можно циклом их вызвать. Либо если они в одном DB подряд - то смещением адресов. Или использовать цикл не программный, а самого контроллера... Да как угодно можно. Но я бы просто скопировал CALL 19 раз и не парился )))

Автор темы
mikerap77791
здесь недавно
здесь недавно
Сообщения: 16
Зарегистрирован: 29 мар 2024, 15:58
Имя: Михаил
Страна: Россия
город/регион: Смоленск
Поблагодарили: 1 раз

Сравнение значений в step 7

Сообщение mikerap77791 »

Nicolayy писал(а): 03 июн 2024, 20:18 mikerap77791, почему 45? у вас же 10 показаний, значит, 19 раз, у тебя же сравнивать как? 1-ое значение со 2-ым, потом 2-ое с 3-им и т.д., правильно? И в чем тогда проблема? Ну, либо если они в массиве, тогда можно циклом их вызвать. Либо если они в одном DB подряд - то смещением адресов. Или использовать цикл не программный, а самого контроллера... Да как угодно можно. Но я бы просто скопировал CALL 19 раз и не парился )))
Сравнить надо каждый с каждый, то есть 1й не только со вторым, но и с 3,4,5 и ТД. То же самое 2й и остпльные

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 372
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 50 раз

Сравнение значений в step 7

Сообщение v0v »

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

Dmitriy1983
здесь недавно
здесь недавно
Сообщения: 94
Зарегистрирован: 29 окт 2017, 19:52
Имя: Дмитрий
Благодарил (а): 5 раз
Поблагодарили: 18 раз

Сравнение значений в step 7

Сообщение Dmitriy1983 »

Чем Вам код на SCL не угодил? И вызывать 10 раз ничего не нужно.

Отправлено спустя 16 минут 24 секунды:
Если хотите на STL? то можно все в одной функции.
L T1
T MD0
T MD4

L T2
L MD0
>R
JCN Mi_2
L T2
T MD0
Mi_2: nop 0
TAK
L MD4
<R
JCN Ma_2
L T2
T MD4
Ma_2 : NOP0

L T3
L MD0
>R
JCN Mi_3
L T3
T MD0
Mi_3: nop 0
TAK
L MD4
<R
JCN Ma_3
L T2
T MD4
Ma_3 : NOP0

//И так до 10 датчика

L MD4
L MD0
-R
L 3.0
>R
= Result

Автор темы
mikerap77791
здесь недавно
здесь недавно
Сообщения: 16
Зарегистрирован: 29 мар 2024, 15:58
Имя: Михаил
Страна: Россия
город/регион: Смоленск
Поблагодарили: 1 раз

Сравнение значений в step 7

Сообщение mikerap77791 »

Спасибо всем большое за советы!!! Решение найдено вот такое...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

Nicolayy
не первый раз у нас
не первый раз у нас
Сообщения: 318
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 16 раз
Поблагодарили: 72 раза

Сравнение значений в step 7

Сообщение Nicolayy »

mikerap77791, о господи... вместо того, чтоб написать цикл перебора массива на 10 строк, в котором вызывается функция еще на 10 строк, столько много ненужных операций. ну, в принципе, контроллер всё стерпит )))

Dmitriy1983
здесь недавно
здесь недавно
Сообщения: 94
Зарегистрирован: 29 окт 2017, 19:52
Имя: Дмитрий
Благодарил (а): 5 раз
Поблагодарили: 18 раз

Сравнение значений в step 7

Сообщение Dmitriy1983 »

Ну вот, а то просили на LAВ. А сами то на STL, да еще через косвенную адресациюhttps://asutpforum.ru/viewtopic.php?t=19703&sid=288bec08736a8a6b4e911b0a8b8d04bc# .
Ответить

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