Как присвоить значение таймеру

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
HMIWINCC
Posts: 38
Joined: Wed Feb 10, 2010 8:00 am

Как присвоить значение таймеру

Post by HMIWINCC »

Столкнулся с такой проблемой. Есть задание изменяется один параметр в данном случае скорость линии, есть фиксированные значения 3 длин при проходе которых должен включаться таймер с соответсвующим временем, которое вычисляется соответсвенно исходя из скорости и длины. Подскажите пожалуйста каким образом таймеру можно будет присваивать каждый раз новое значение времени автоматически=)
P.S. Зараннее благодарен!
CHANt
Posts: 501
Joined: Tue Jun 27, 2006 5:52 am
Location: Russia

Re: Как присвоить значение таймеру

Post by CHANt »

Если будете использовать таймер 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 бите.
HMIWINCC
Posts: 38
Joined: Wed Feb 10, 2010 8:00 am

Re: Как присвоить значение таймеру

Post by HMIWINCC »

Спасибо смысл приблизительно уловил. Но интересен вопрос как это реализовать програмно..?просто есть такой момент что исходное время я вычисляю после деления двух велечин в формате Real(вещественный) и на выходе получается тоже самое Real.Если подумать то мне остаётся только занести это значение в память и закинуть на таймер, но проблема встаёт иная(( сам таймер воспринимает входной параметр времени как WORD либо S5Time...

Я в этом деле новичок, прости если задаю совсем глупые и очевидные вопросы..просто хотелось бы разобраться с этим моментом)
CHANt
Posts: 501
Joined: Tue Jun 27, 2006 5:52 am
Location: Russia

Re: Как присвоить значение таймеру

Post by CHANt »

Надо выделить целое число и затолкать в слово, что-то типа такого:

Code: Select all

L MD100
TRUNC
T MW104
есть попроще ход - FC40 из стандартной библиотеки "IEC Function Blocks" конвертируют формат TIME в формат S5TIME.
Формат TIME, это двойное целое - DINT. Т.е. выделяете в результат расчета целое

Code: Select all

L MD100
TRUNC
T MD104
И, с учетом, что в формате TIME - число это миллисекунды, используете FC40, на выходе будет в формате S5TIME.
HMIWINCC
Posts: 38
Joined: Wed Feb 10, 2010 8:00 am

Re: Как присвоить значение таймеру

Post by HMIWINCC »

сейчас буду пробовать)) а возможно ли програмно реализовать такой переход REAL \REAL =REAL
далее перевести в какой нибудь формат и присвоить его к времени таймера..просто уже много времени бьюсь ничего не выходит..подскажи если можешь по полочкам..
Пишу на LAD..по функциональности он более ограничен?
Schtiel
Site Admin
Posts: 1122
Joined: Wed Sep 06, 2006 12:03 pm
Location: CIS

Re: Как присвоить значение таймеру

Post by Schtiel »

HMIWINCC wrote:сейчас буду пробовать)) а возможно ли програмно реализовать такой переход REAL \REAL =REAL
далее перевести в какой нибудь формат и присвоить его к времени таймера..
Пишу на LAD..по функциональности он более ограничен?
There are no impossible dreams...

Например, как-то так:
Image
HMIWINCC
Posts: 38
Joined: Wed Feb 10, 2010 8:00 am

Re: Как присвоить значение таймеру

Post by HMIWINCC »

Спасибо большое за терпение выслушать))!Вчера разобрался сделал несколько иначе но смысл тот же)) Очень благодарен!)