Просмотр полной версии : Зафиксировать значение температуры
Помогите пожалуйста, возникла проблема. Имеется ПЛК150, на аналоговый вход подключен датчик температуры, необходимо зафиксировать значение температуры в момент срабатывания устройства, как реализовать это программно
if current and current<>oldValue then
fixResult:=realTemp;
end if
oldValue:=current
Sergey666
22.12.2013, 10:54
Помогите пожалуйста, возникла проблема. Имеется ПЛК150, на аналоговый вход подключен датчик температуры, необходимо зафиксировать значение температуры в момент срабатывания устройства, как реализовать это программно
Что значит "в момент срабатывания устройства"???
Задавайте простые вопросы не так размыто.
По любому "срабатывание устройства" фиксировать триггером (по фронту) и в момент срабатывания фиксировать значение температуры , куда угодно , хоть в переменную , хоть в массив переменных.
Сигнальное устройство, реагирующее на изменение замыканием/размыканием контактной группы, подключенное на дискретный вход ПЛК, так вот при его срабатывании,т.е замыкании контактов, необходимо зафиксировать температуру
Sergey666
22.12.2013, 14:28
Выше был дан исчерпывающий ответ , как это сделать.
а можете по подробнее объяснить про выше указанный код программы, а то не понятно по первой строчке
а можете по подробнее объяснить про выше указанный код программы, а то не понятно по первой строчке
первая строчка олицетворяет собой постоянное слежение за вашим дискретным входом и как только он станет TRUE, условие выделит передний фронт перехода в это состояние, в следующий цикл хоть и переменная current будет высокого потенциала, она будет равна переменной oldValue, которая в свою очередь, в каждом цикле после условия принимает значение состояния входа :) как то так
Вариант capzapа другими словами :):
R_TRIG1(IN:=current);
if R_TRIG1.Q then
fixResult:=realTemp;
end if
Вариант capzapа другими словами :):
R_TRIG1(IN:=current);
if R_TRIG1.Q then
fixResult:=realTemp;
end if
В Вашем варианте дополнительно целый ФБ, в моем одна лишь булева переменная :)
В Вашем варианте дополнительно целый ФБ, в моем одна лишь булева переменная :)
Я это заметил, но Вы так оригинально литературно описали, что вопрошающий мог не сразу понять :)
Sergey666
23.12.2013, 20:24
if current and current<>oldValue then
fixResult:=realTemp;
end if
oldValue:=current
Фиксация будет происходить по изменению , как с 0-1 , так и с 1-0 .
Для переднего фронта надо писать:
if current and (not oldValue) then
...
Фиксация будет происходить по изменению , как с 0-1 , так и с 1-0 .
Для переднего фронта надо писать:
if current and (not oldValue) then
...
ну насмешили, попробуйте проверить если переменная current будет равна TRUE это первое условие, то чему должна быть равна oldValue чтоб выполнилось неравенство, это вторая часть условия
Sergey666
23.12.2013, 21:46
Нууу.... не знаю , в лом код в исполнение запускать...
Current переходит из true в False:
Ежели False and False <> True (*Еще не переключилось ОлдВэлью:o*)Тады
...Само-собой
усе
Переключаем ОлдВэлью
Кажись так
Можете не ломаться, я брал из оската, не отрицаю что и по Вашему варианту можно, это тоже самое, просто на любителя
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot