Столкнулся с такой проблемой. Есть задание изменяется один параметр в данном случае скорость линии, есть фиксированные значения 3 длин при проходе которых должен включаться таймер с соответсвующим временем, которое вычисляется соответсвенно исходя из скорости и длины. Подскажите пожалуйста каким образом таймеру можно будет присваивать каждый раз новое значение времени автоматически=)
P.S. Зараннее благодарен!
Как присвоить значение таймеру
-
- Posts: 501
- Joined: Tue Jun 27, 2006 5:52 am
- Location: Russia
Re: Как присвоить значение таймеру
Если будете использовать таймер S5, то базу времени можно задать в виде:
константы - например, S5T#2s320ms
целого (integer) - например MW200, но, тут есть нюансы
Биты 12 и 13 переменной MW200 должны содержать базу времени (множитель) в виде числа в двоичном коде:
база времени 0 (бит 13 = 0, бит 12 = 0) = 10 мс
база времени 1 (бит 13 = 0, бит 12 = 1) = 100 мс
база времени 2 (бит 13 = 1, бит 12 = 0) = 1 с
база времени 3 (бит 13 = 1, бит 12 = 1) = 10 с
А вот в остальных битах представляется число в формате BCD.
Пример, 2s320ms будут выглядеть в двоично-десятичном коде:
Номер бита-Значение:
15 -х
14-х
13-0
12-0
11-0
10-0
9-1
8-0
7-0
6-0
5-1
4-1
3-0
2-0
1-1
0-1
т.е. число 232 умножить на базу 10 миллисекунд. Биты 14 и 15 не используются.
максимальное время в формате S5T можно задать до 2h46m30s0ms
Выходит, что Вы должны в своем расчете привести нужное значение в число от 0 до 999 и выставить нужный множитель в 12 и 13 бите.
константы - например, S5T#2s320ms
целого (integer) - например MW200, но, тут есть нюансы
Биты 12 и 13 переменной MW200 должны содержать базу времени (множитель) в виде числа в двоичном коде:
база времени 0 (бит 13 = 0, бит 12 = 0) = 10 мс
база времени 1 (бит 13 = 0, бит 12 = 1) = 100 мс
база времени 2 (бит 13 = 1, бит 12 = 0) = 1 с
база времени 3 (бит 13 = 1, бит 12 = 1) = 10 с
А вот в остальных битах представляется число в формате BCD.
Пример, 2s320ms будут выглядеть в двоично-десятичном коде:
Номер бита-Значение:
15 -х
14-х
13-0
12-0
11-0
10-0
9-1
8-0
7-0
6-0
5-1
4-1
3-0
2-0
1-1
0-1
т.е. число 232 умножить на базу 10 миллисекунд. Биты 14 и 15 не используются.
максимальное время в формате S5T можно задать до 2h46m30s0ms
Выходит, что Вы должны в своем расчете привести нужное значение в число от 0 до 999 и выставить нужный множитель в 12 и 13 бите.
-
- Posts: 38
- Joined: Wed Feb 10, 2010 8:00 am
Re: Как присвоить значение таймеру
Спасибо смысл приблизительно уловил. Но интересен вопрос как это реализовать програмно..?просто есть такой момент что исходное время я вычисляю после деления двух велечин в формате Real(вещественный) и на выходе получается тоже самое Real.Если подумать то мне остаётся только занести это значение в память и закинуть на таймер, но проблема встаёт иная(( сам таймер воспринимает входной параметр времени как WORD либо S5Time...
Я в этом деле новичок, прости если задаю совсем глупые и очевидные вопросы..просто хотелось бы разобраться с этим моментом)
Я в этом деле новичок, прости если задаю совсем глупые и очевидные вопросы..просто хотелось бы разобраться с этим моментом)
-
- Posts: 501
- Joined: Tue Jun 27, 2006 5:52 am
- Location: Russia
Re: Как присвоить значение таймеру
Надо выделить целое число и затолкать в слово, что-то типа такого:
есть попроще ход - FC40 из стандартной библиотеки "IEC Function Blocks" конвертируют формат TIME в формат S5TIME.
Формат TIME, это двойное целое - DINT. Т.е. выделяете в результат расчета целое
И, с учетом, что в формате TIME - число это миллисекунды, используете FC40, на выходе будет в формате S5TIME.
Code: Select all
L MD100
TRUNC
T MW104
Формат TIME, это двойное целое - DINT. Т.е. выделяете в результат расчета целое
Code: Select all
L MD100
TRUNC
T MD104
-
- Posts: 38
- Joined: Wed Feb 10, 2010 8:00 am
Re: Как присвоить значение таймеру
сейчас буду пробовать)) а возможно ли програмно реализовать такой переход REAL \REAL =REAL
далее перевести в какой нибудь формат и присвоить его к времени таймера..просто уже много времени бьюсь ничего не выходит..подскажи если можешь по полочкам..
Пишу на LAD..по функциональности он более ограничен?
далее перевести в какой нибудь формат и присвоить его к времени таймера..просто уже много времени бьюсь ничего не выходит..подскажи если можешь по полочкам..
Пишу на LAD..по функциональности он более ограничен?
-
- Site Admin
- Posts: 1122
- Joined: Wed Sep 06, 2006 12:03 pm
- Location: CIS
Re: Как присвоить значение таймеру
There are no impossible dreams...HMIWINCC wrote:сейчас буду пробовать)) а возможно ли програмно реализовать такой переход REAL \REAL =REAL
далее перевести в какой нибудь формат и присвоить его к времени таймера..
Пишу на LAD..по функциональности он более ограничен?
Например, как-то так:
-
- Posts: 38
- Joined: Wed Feb 10, 2010 8:00 am
Re: Как присвоить значение таймеру
Спасибо большое за терпение выслушать))!Вчера разобрался сделал несколько иначе но смысл тот же)) Очень благодарен!)