- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Сравнение значений в step 7
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 29 мар 2024, 15:58
- Имя: Михаил
- Страна: Россия
- город/регион: Смоленск
- Поблагодарили: 1 раз
Сравнение значений в step 7
Здравствуйте уважаемые форумчане. Я только изучаю способности step 7. Подскажите пожалуйста как решить такую задачу... Есть 10 показаний температуры. Нужно сравнить эти показания, и если какая то температура отличается более чем на 3 градуса, то RLO должен стать 1.Спасибо всем кто поможет. Желательно на языке LAD.
-
- не первый раз у нас
- Сообщения: 372
- Зарегистрирован: 12 дек 2018, 14:47
- Имя: Влад
- Благодарил (а): 1 раз
- Поблагодарили: 50 раз
-
- здесь недавно
- Сообщения: 94
- Зарегистрирован: 29 окт 2017, 19:52
- Имя: Дмитрий
- Благодарил (а): 5 раз
- Поблагодарили: 18 раз
Сравнение значений в step 7
Такое лучше писать на 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;
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;
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Сравнение значений в step 7
Что с чем сравнить-то?mikerap77791 писал(а): ↑03 июн 2024, 11:57 Есть 10 показаний температуры. Нужно сравнить эти показания, и если какая то температура отличается более чем на 3 градуса
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 29 мар 2024, 15:58
- Имя: Михаил
- Страна: Россия
- город/регион: Смоленск
- Поблагодарили: 1 раз
Сравнение значений в step 7
Нужно сравнить между собой все эти 10 значений. Когда всё хорошо, они должны быть примерно одинаковы (+-2 градуса), если какая то емпература отличается на большее значение, то это нужно знать, и вывести на визуализацию сообщение. С визуализацией у меня проблем нет.Nicolayy писал(а): ↑03 июн 2024, 15:05Что с чем сравнить-то?mikerap77791 писал(а): ↑03 июн 2024, 11:57 Есть 10 показаний температуры. Нужно сравнить эти показания, и если какая то температура отличается более чем на 3 градуса
-
- не первый раз у нас
- Сообщения: 372
- Зарегистрирован: 12 дек 2018, 14:47
- Имя: Влад
- Благодарил (а): 1 раз
- Поблагодарили: 50 раз
Сравнение значений в step 7
Не понятно зачем сравнивать между собой. Есть какая то уставка для каждой температуры. Сделать сравнение +-3 и выход на бит. Потом параллельно биты на выход.
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 29 мар 2024, 15:58
- Имя: Михаил
- Страна: Россия
- город/регион: Смоленск
- Поблагодарили: 1 раз
Сравнение значений в step 7
Дело в том что температура в установке может плавать, но главное что бы она плавала везде равномерно, уставки нет. Для удобства оператору будет удобнее, если будет появляться предупреждение, а то постоянно смотреть, контролировать температуру на мониторе глаза на лоб вылезут.
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 29 мар 2024, 15:58
- Имя: Михаил
- Страна: Россия
- город/регион: Смоленск
- Поблагодарили: 1 раз
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Сравнение значений в step 7
mikerap77791,
Ну, как-то так. А потом вызовешь эту функцию 10 раз - хочешь в цикле, хочешь просто, и их результаты операцией ИЛИ сложишь...
Ну, как-то так. А потом вызовешь эту функцию 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
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 29 мар 2024, 15:58
- Имя: Михаил
- Страна: Россия
- город/регион: Смоленск
- Поблагодарили: 1 раз
Сравнение значений в step 7
Но здесь только 2 таймера. Или я не понимаю как функцию вызвать 10 раз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
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Сравнение значений в step 7
mikerap77791, это не таймеры )) это две температуры, которые сравниваются, и если результат больше 3, то тогда is_alarm = true. Это типа отдельная функция FC. А ты дальше ее вызывай, где тебе надо и подставляй свои температуры, а все результаты этих вызовов командой ИЛИ. Если хоть один такой вызов вернет true, значит авария.
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 29 мар 2024, 15:58
- Имя: Михаил
- Страна: Россия
- город/регион: Смоленск
- Поблагодарили: 1 раз
Сравнение значений в step 7
Спасибо я понял. По поводу таймеров опечатался))) но в этой функции сравнивается 2 таймера, значит вызывать эту функцию придется не 10 раз, а 45, что бы сравнить каждый с каждымNicolayy писал(а): ↑03 июн 2024, 19:37 mikerap77791, это не таймеры )) это две температуры, которые сравниваются, и если результат больше 3, то тогда is_alarm = true. Это типа отдельная функция FC. А ты дальше ее вызывай, где тебе надо и подставляй свои температуры, а все результаты этих вызовов командой ИЛИ. Если хоть один такой вызов вернет true, значит авария.
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Сравнение значений в step 7
mikerap77791, почему 45? у вас же 10 показаний, значит, 19 раз, у тебя же сравнивать как? 1-ое значение со 2-ым, потом 2-ое с 3-им и т.д., правильно? И в чем тогда проблема? Ну, либо если они в массиве, тогда можно циклом их вызвать. Либо если они в одном DB подряд - то смещением адресов. Или использовать цикл не программный, а самого контроллера... Да как угодно можно. Но я бы просто скопировал CALL 19 раз и не парился )))
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 29 мар 2024, 15:58
- Имя: Михаил
- Страна: Россия
- город/регион: Смоленск
- Поблагодарили: 1 раз
Сравнение значений в step 7
Сравнить надо каждый с каждый, то есть 1й не только со вторым, но и с 3,4,5 и ТД. То же самое 2й и остпльныеNicolayy писал(а): ↑03 июн 2024, 20:18 mikerap77791, почему 45? у вас же 10 показаний, значит, 19 раз, у тебя же сравнивать как? 1-ое значение со 2-ым, потом 2-ое с 3-им и т.д., правильно? И в чем тогда проблема? Ну, либо если они в массиве, тогда можно циклом их вызвать. Либо если они в одном DB подряд - то смещением адресов. Или использовать цикл не программный, а самого контроллера... Да как угодно можно. Но я бы просто скопировал CALL 19 раз и не парился )))
-
- не первый раз у нас
- Сообщения: 372
- Зарегистрирован: 12 дек 2018, 14:47
- Имя: Влад
- Благодарил (а): 1 раз
- Поблагодарили: 50 раз
Сравнение значений в step 7
Какая то странная задача. Если нет уставки то и нет автоматического регулирования температуры. Может лучше выбрать один из датчиков (например в самом ответственном месте) и сравнивать с ним, а не каждую температуру с каждой.
-
- здесь недавно
- Сообщения: 94
- Зарегистрирован: 29 окт 2017, 19:52
- Имя: Дмитрий
- Благодарил (а): 5 раз
- Поблагодарили: 18 раз
Сравнение значений в step 7
Чем Вам код на 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
Отправлено спустя 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
-
- здесь недавно
- Сообщения: 16
- Зарегистрирован: 29 мар 2024, 15:58
- Имя: Михаил
- Страна: Россия
- город/регион: Смоленск
- Поблагодарили: 1 раз
Сравнение значений в step 7
Спасибо всем большое за советы!!! Решение найдено вот такое...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Сравнение значений в step 7
mikerap77791, о господи... вместо того, чтоб написать цикл перебора массива на 10 строк, в котором вызывается функция еще на 10 строк, столько много ненужных операций. ну, в принципе, контроллер всё стерпит )))
-
- здесь недавно
- Сообщения: 94
- Зарегистрирован: 29 окт 2017, 19:52
- Имя: Дмитрий
- Благодарил (а): 5 раз
- Поблагодарили: 18 раз
Сравнение значений в step 7
Ну вот, а то просили на LAВ. А сами то на STL, да еще через косвенную адресациюhttps://asutpforum.ru/viewtopic.php?t=19703&sid=288bec08736a8a6b4e911b0a8b8d04bc# .