SIEMENS, DF&PD

Предыдущее посещение: Чт янв 07, 2016 17:05 Текущее время: Чт янв 07, 2016 17:05

Часовой пояс: UTC + 3 часа




 [ Сообщений: 17 ] 
Автор Сообщение
 Заголовок сообщения: Step 7, stl , timer
СообщениеДобавлено: Пт мар 22, 2013 14:40 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Задача, написать программу автоматизации стеклоподъемника. Управление кнопками вверх, вниз и стоп. Нужно разделить процессы по времени. Если кнопки "вверх" или "вниз" удерживаются нажатыми более 3 секунд, то окно закрывается или открывается автоматически до упора. Если кнопки нажаты менее 3 секунд, то окно работает только пока работает кнопка. Какой таймер лучше использовать ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 22, 2013 15:19 
Не в сети
Начинающий писатель

Зарегистрирован: Пт окт 05, 2012 15:38
Сообщения: 71
Откуда: Полтава
Можно организовать следующим образом (первое, что пришло в голову):
1. По сигналу от кнопки запускать соответствующий таймер задержки по включению (с уставкой, например, в 3 сек.);
2. По срабатыванию таймера устанавливать вспомогательную переменную разрешения открытия (или закрытия) до предела;
3. Поднимать (или опускать) стекло при наличии ИЛИ сигнала с кнопки ИЛИ вспом. сигнала разрешения открытия (или закрытия) до предела;
4. При полном открытии (закрытии) сбрасывать соотв. вспом. переменную разрешения;
5. Вспомогательную переменную разрешения открытия (закрытия) до предела также можно сбрасывать при нажатии кнопки стоп или при изменении направления (например, если в процессе открытия до предела была нажата кнопка закрытия).

Как-то так. Можно додумать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 22, 2013 16:42 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Павел Грушецкий писал(а):
1. По сигналу от кнопки запускать соответствующий таймер задержки по включению (с уставкой, например, в 3 сек.);


Хорошие мысли! А мог бы обьяснить выбор данного таймера ? Почему именно с задержкой по включению ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 22, 2013 16:46 
Не в сети
Начинающий писатель

Зарегистрирован: Пт окт 05, 2012 15:38
Сообщения: 71
Откуда: Полтава
При нажатии кнопки таймер начинает отсчёт. Если кнопка удерживается менее 3 сек., то таймер при отпускании кнопки сбрасывается. При удержании более 3 сек. - устанавливается через 3 сек. после нажатии, и при отпускании опять же сбрасывается. Выход таймера использовать для установки оговоренного вспомогательного сигнала.

В общем, по-моему этот таймер в данном случае больше всего подходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 22, 2013 16:48 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Надо теперь это понять, смотря на графики в хелпаре=)
реализовал этот таймер в симуляторе, всё стало на свои места. Немного запутался в словах сбрасывается и устанавливается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 23, 2013 17:29 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Павел Грушецкий писал(а):
При нажатии кнопки таймер начинает отсчёт. Если кнопка удерживается менее 3 сек., то таймер при отпускании кнопки сбрасывается. При удержании более 3 сек. - устанавливается через 3 сек. после нажатии, и при отпускании опять же сбрасывается. Выход таймера использовать для установки оговоренного вспомогательного сигнала.

В общем, по-моему этот таймер в данном случае больше всего подходит.


Написал пока без кнопки стоп:

A "button_up"
FR "taimer"
L S5T#3S
SD "taimer"

A "button_down"
FR "taimer1"
L S5T#3S
SD "taimer1"


A "taimer"
= "temp"

A "taimer1"
= "temp1"


O "button_up"
O "temp"
AN "sensor_up"
= "motor_up"

O "button_down"
O "temp1"
AN "sensor_down"
= "motor_down"


Проблема в том, что есть нажать кнопку и держать её более 3 секунд и отпустить, то вспомогательная переменная тоже скидывается, а мне нужно, чтобы после 3 секунд нажатия, когда я отпускаю кнопку, переменная временная переменная должна быть активна до последующих условий. Что я неправильно сделал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 23, 2013 18:00 
Не в сети
Известный Писатель

Зарегистрирован: Пн май 16, 2005 9:10
Сообщения: 126
A "taimer"
S "temp"

O "sensor_up"
O "button_down"
R "temp"

P.S. FR не нужен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 23, 2013 18:39 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Всем спасибо за помощь в написании моей первой программки. Всё работает, ваши замечания усвоил.

FR "taimer"
A "button_up"
L S5T#3S
SD "taimer"

A "button_down"
FR "taimer1"
L S5T#3S
SD "taimer1"


A "taimer"
S "temp"

A "taimer1"
S "temp1"

O "sensor_up"
O "button_down"
O "button_stop"
R "temp"

O "sensor_down"
O "button_up"
O "button_stop"
R "temp1"


O "button_up"
O "temp"
AN "sensor_up"
= "motor_up"

O "button_down"
O "temp1"
AN "sensor_down"
= "motor_down"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 04, 2013 2:42 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Продолжение обучения. Теперь нужно немного расширить программу. Нужно сделать так, чтобы окно открывалось на заданный отрезок. Допустим мотор работает равномерно и полное открытие займёт 20 сек. Оператор может ввести процент открытия.

Идея такая:

1.)Оператор вводит процент в целых числах от 0 до 100, это число сохраняется в DB как int_1.

2.)Дальше мы делим int_1 на 100 и получаем коэффициент, который сохраняем в DB как real_1 .

3.)Этот real_1 умножаем на 20 и получаем real_2, что и есть время, которое будет работать мотор.

4.)И чтобы использовать S5TIME таймер, нужно real_2 c помощью команды RND преобразовать в DINT.

5.)Затем DINT через FC40 time-S5time преобразовываем в S5TIME и загоняем это значение в таймер.


Очень интересно узнать мнение гуру по поводу моих мыслей. К реализации пока не преступил, пока только теория. Практикой планирую завтра заняться. Буду очень благодарен за ваши мысли и время.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 04, 2013 7:09 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Пн фев 20, 2012 8:35
Сообщения: 1049
стеклоподъемники в двенашке автоматизируешь?) Мож систему управления движком сделаешь?)


Последний раз редактировалось inzhener Пт апр 05, 2013 12:58, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 04, 2013 11:41 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Извините, что за двенашка? На счёт движка тоже очень интересно, но там уже точно нужна помощь с описанием системы. Будете моим учителем?=)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 04, 2013 12:26 
Не в сети
Писатель со стажем

Зарегистрирован: Пн июл 06, 2009 9:37
Сообщения: 850
Откуда: Санкт-Петербург
задача, написать большую и сложную программу

идея такая

1.) включить компьютер, дождаться загрузки, войти в систему

2.) нажать Пуск -> Все программы -> SIMATIC -> Simatic Manager

3.) создать новый проект и написать программу

Очень интересно узнать мнение гуру по поводу моих мыслей. К реализации пока не преступил, пока только теория. Практикой планирую завтра заняться. Буду очень благодарен за ваши мысли и время

по теме:
1. почему решили на stl писать сразу? попробуйте LAD - для начала будет проще
2. напишите имитатор работы стеклоподъемника: FB, внутри счетчик вниз/вверх секундного тактового бита от 0 до 30 (допустим). при входном сигнале открыть счетчик считает вверх до 30, останавливается и выдает выходной сигнал "открыто". вниз так же
3. "оператор вводит процент" а открываете по таймеру. а если не было полностью закрыто? добавьте в имитатор выходной сигнал положение (пропорцию от значения счетчика составите сами, думаю)
4. раз работаете в stl, зачем сохранять промежуточные данные при преобразовании? есть аккумулятор
5. "сохраняем в DB" - у меня личная непереносимость таких действий
6. S5TIME и FC40 - спорный вопрос


Последний раз редактировалось Александр В.. Чт апр 04, 2013 12:34, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 04, 2013 12:31 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Я только недавно начал изучать step 7 stl. Написал ход мыслей, по которым буду писать программу. Думаю моё вопрос вполне уместен. Вдруг из-за нехватки знаний, я бреда надумал. А тут сразу троли набежали=)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 04, 2013 12:38 
Не в сети
Писатель со стажем

Зарегистрирован: Пн июл 06, 2009 9:37
Сообщения: 850
Откуда: Санкт-Петербург
shargon писал(а):
Я только недавно начал изучать step 7 stl. Написал ход мыслей, по которым буду писать программу. Думаю моё вопрос вполне уместен. Вдруг из-за нехватки знаний, я бреда надумал. А тут сразу троли набежали=)

читайте Бергера (но не тупо следуйте), придумывайте алгоритмы, боритесь, дерзайте и не слазьте с PLCSim сутками - тогда что-то получится
если вы на каждый чих будете спрашивать мнение и решение на форуме - не потроллить вас будет сложно удержаться


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 04, 2013 15:24 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Следуя информации полученной от сюда:

"Для преобразования из REAL в S5TIME сначала надо преобразовать REAL в DINT (TIME). А потом как уже было сказано с использованием TIM_S5TI FC 40 в S5TIME.
Однако стоит помнить, что начальная величина в REAL задается в милисекундах и не должна быть больше чем 9990000 мсек.

P.S. из REAL в DINT (TIME) можно преобразовать командой RND."

http://iadt.siemens.ru/forum/viewtopic. ... ght=s5time

Написал следующее: Использовал DB , брал данные от туда и сохранял туда же, извините за кощунство, кто используя STL не терпит подобного. Произвёл деления числа на 100, а потом результат от деления умножил на 20000 мс. Полученный результат от умножения преобразовал из REAL в DINT и за писал его в DB1.DBD 16. Но когда пытаюсь использовать FC 40, появилась ошибка, входной параметр не подходит. Пишет, что не совпадают форматы. ( Actual data type DINT does not fit the format type TIME of the format parameter IN)

Не могу понять почему так? Вроде в DB1.DBd16 после RND должен быть нужный формат.


L DB1.DBD 2 // число от 1 до 100
L DB1.DBD 20 // число 100
/R
T DB1.DBD 6 // результат деления

L DB1.DBD 6 // результат деления
L DB1.DBD 24 // 20000 мс
*R
T DB1.DBD 12 // результат умножения

L DB1.DBD 12 // результат умножения
RND // REAL ->DINT (TIme)
T DB1.DBD 16 // результат преобразования


CALL FC 40
IN :=DB1.DBd16
RET_VAL:=DB1.DBW10

DB1:

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 05, 2013 11:56 
Не в сети
Известный Писатель

Зарегистрирован: Пн мар 25, 2013 16:00
Сообщения: 117
Откуда: Ступино М.О.
shargon писал(а):

L DB1.DBD 12 // результат умножения
RND // REAL ->DINT (TIme)
T DB1.DBD 16 // результат преобразования




После округления будет именно Dint, но не как не Time. Смотри инструкцию ROUND !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 05, 2013 13:50 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 18, 2013 23:40
Сообщения: 40
Откуда: Tallinn
Всё заработало. Первоначально я сразу указал в DB результат округления в DINT формате, как сказано в хелпе, и сразу понял, что мне нужен TIME, сменил на TIME. Но почему-то ничего не сменилось. И только сейчас я заметил, что изменения вступают в силу после того, как я закрыл DB. То есть сохранил и нажал на крестик. Во как. Но все замечания по поводу кода были тоже очень полезными.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group