SIEMENS, DF&PD

Предыдущее посещение: Сб июн 18, 2016 16:30 Текущее время: Сб июн 18, 2016 16:30

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




 [ Сообщений: 91 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 13:57 
Не в сети
Известный Писатель

Зарегистрирован: Ср июн 01, 2011 7:53
Сообщения: 147
Что русскому хорошо, то немцу - смерть! (с)
Ну вы поняли...))))))


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

Зарегистрирован: Вт июл 06, 2010 11:44
Сообщения: 314
Откуда: Газ-Система-Сервис Пермь
To CAM:
организовать отсчеты времени (задержек, длительности) можно разными способами. Наиболее "деревянный" - тупо инкрементировать/декрементировать статическую переменную или меркер при каждом вызове циклического ОВ. Кстати, в данном случае могла бы "набегать" ошибка, но этого не происходит так как ОВ вызываются от "сквозного" таймера. Клок-биты, в принципе такой же быдлокод.

Недостатки системных таймеров:
- невнятная реализация сброса,
- невнятное поведение при двойном вызове (например, нельзя задать "положительный фронт" для начала счета вызвав вподряд функцию s_pext сначала с 1, потом c 0)
- заморочки с убогим форматом s5time

ну и главный недостаток: это привязка к НОМЕРУ таймера. Соответственно невозможно написать подпрограмму задвижки использующую системный таймер, а затем размножить ее вызовы по количеству задвижек. вернее, можно извращаться с пропихиванием номера таймера в FB через in_out но это еще больший быдлокод чем вышеуказанные подходы.

Остается использовать функцию time_tck, и с помощью статических (инстансных) переменных реализовывать любые отсчеты времени (с фиксацией, обратные, задержки, шим и пр) и все это в натуральном масштабе - младший разряд двойного целого - миллисекунда.


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

Зарегистрирован: Чт мар 01, 2012 13:36
Сообщения: 205
Откуда: Украина, Киев
BETEP59, спасибо!
Наконецто - коротко и по сути.
(в дополнение читал о еще одном недостатке системных таймеров - не каждый может уверенно сказать как они поведут себя после разных режимов рестарта).

Еще бы кто толком объяснил чем хороши IEC-таймеры (у меня в симуляторе они почему то не заводятся)...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 15:28 
Не в сети
Возможно это нечеловек

Зарегистрирован: Пн авг 15, 2011 9:44
Сообщения: 2241
BETEP59 писал(а):
Недостатки системных таймеров:...
999 иногда главный недостаток - в 21-м веке можно было бы увеличить разрядность штатных счётчиков и таймеров.
Остальное внятно в соответствующих применениях - не надо каждый раз выдумывать свою функцию для выполнения наипростейшей операции.
FC105 тоже не идеальна и иногда народ её тоже переписывает под свои потребности, но это не значит, что функция невнятная.
Надо принимать инструменты как данное и использовать их в соответствующих местах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 15:32 
Не в сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7493
Откуда: Украина
2 ВЕТЕР59:
1. При помощи названного Вами "наиболее деревянным" механизма работают блоки ПИД-регуляторов. Из-за того, что они вызываются в циклических OB и "знают" свой период вызова, работа со временем сводится к подсчёту этих самых периодов, что требует меньше вычислительных ресурсов.
2. Помимо системных таймеров существуют IEC-таймеры, реализованные в виде SFB в операционной системе PLC. Можно реализовать собственные FB таймеров на основе упомянутой SFC 64 TIME_TCK, наконец. Таким образом легко обойти ограничения и недостатки системных таймеров.
3. Как же только TIME_TCK - не быдлокод, если надо запоминать начало отсчёта, учитывать переход через 0 при превышении 2^31 - 1 и т.д.?

Как я понял, быдлокод - это то, как не кодируете лично Вы:-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 15:42 
Не в сети
Писатель со стажем

Зарегистрирован: Пн июл 06, 2009 9:37
Сообщения: 851
Откуда: Санкт-Петербург
Cerberus писал(а):
далее в программе использовался передний фронт для каждого бита из этого байта, поэтому сколько там будет "висеть" эта "1" без разницы....

мы ведь о таймере говорим?
если таймер на основе 5го бита (1Гц) тактового меркера, и единица в нем висит больше 0,5 секунды - таймер будет работать неправильно

ну это так, к слову


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 15:43 
Не в сети
Возможно это нечеловек

Зарегистрирован: Пн авг 15, 2011 9:44
Сообщения: 2241
Eugene1974 писал(а):
Как я понял, быдлокод - это то, как не кодируете лично Вы:-)
быдлокод это Зебра на ЛАДе из состояния поставки :)
А ведь это можно написать на Языке высокого уровня, где непонятный быдлокод прячется в папке сурс.
Есть 2 школы - универсальная с использованием всех предоставляемых возможностей STL/LAD/FBD/SCL
и узкоспециализированная SCL, которые и плавают в рассуждениях об STL/LAD/FBD .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 16:10 
Не в сети
Возможно это нечеловек

Зарегистрирован: Пн окт 30, 2006 16:27
Сообщения: 2250
Откуда: Украина, Днепродзержинск
Александр В.. писал(а):
Cerberus писал(а):
далее в программе использовался передний фронт для каждого бита из этого байта, поэтому сколько там будет "висеть" эта "1" без разницы....

мы ведь о таймере говорим?
.....
Эммм, нет, я вероятно не уточнил, в моём случае биты использовались не для таймера, так что особого смысла, приведенного мной кода не было.
А так - конечно согласен с Вашим уточнением.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 16:56 
Не в сети
Возможно это нечеловек

Зарегистрирован: Пн авг 15, 2011 9:44
Сообщения: 2241
Cerberus писал(а):
в моём случае биты использовались не для таймера, так что особого смысла, приведенного мной кода не было.


По незнанию языка народ умудряется вот такие конструкции использовать
Код:
A m1.0
AN m1.0
= m1.0

- логическая единица
Код:
O m1.1
ON m1.1
= m1.1

Вместо
Код:
CLR //сбросить RLO в 0
=M 1.0 // присвоить значение RLO меркеру = логический ноль
SET //установить RLO в 1
=M 1.1 // присвоить значение RLO меркеру = логическая единица
так как назначение команд CLR / SET было подвергнуто сомнением неопытного читателя - "я где то слышал, я где то читал", типа
Цитата:
в дополнение читал о еще одном недостатке системных таймеров - не каждый может уверенно сказать как они поведут себя после разных режимов рестарта
Читайте документацию,а не слухи в форумах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 17:23 
Не в сети
Возможно это нечеловек

Зарегистрирован: Пн окт 30, 2006 16:27
Сообщения: 2250
Откуда: Украина, Днепродзержинск
Оффтоп, конечно, но разве не будет это
Код:
A m1.0
AN m1.0
= m1.0
всегда "0", а это
Код:
O m1.1
ON m1.1
= m1.1
всегда "1"?
Какая разница, как написал (используя SET, CLR или логику) - работает, значит работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 01, 2013 17:56 
Не в сети
Писатель со стажем

Зарегистрирован: Вт мар 01, 2005 12:10
Сообщения: 592
proskur писал(а):

По незнанию языка народ умудряется вот такие конструкции использовать
Код:
A m1.0
AN m1.0
= m1.0

- логическая единица
Код:
O m1.1
ON m1.1
= m1.1

Вместо
Код:
CLR //сбросить RLO в 0
=M 1.0 // присвоить значение RLO меркеру = логический ноль
SET //установить RLO в 1
=M 1.1 // присвоить значение RLO меркеру = логическая единица
так как назначение команд CLR / SET было подвергнуто сомнением неопытного читателя - "я где то слышал, я где то читал", типа
Читайте документацию,а не слухи в форумах.


те кто умудряется использовать такие конструкции - возможно просто хотят иметь возможность переносить программы на контроллеры других производителей, так как аналоги команды сименса SET CLR есть не на всех средах разработки.


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

Зарегистрирован: Ср апр 09, 2008 13:41
Сообщения: 417
Откуда: Питер
"Вставлю пять копеек"

Некоторым недостатком системных таймеров является изменяющаяся точность таймера в зависимости от величины уставки таймера (4-ре степени точности). Но согласен с писателями, которые считают, что лучше иметь лишний инструмент в арсенале (зная его плюсы и минусы), чем всегда пользоваться неким шаблоном.
Богу - богово, а Кесарю - кесарево.


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

Зарегистрирован: Сб ноя 01, 2008 9:53
Сообщения: 247
Откуда: Новгород
САМ писал(а):
BETEP59, спасибо!
Наконецто - коротко и по сути.

Сдается мне что Вы для себя уже решили что готовые таймеры Step7 не заслуживают внимания, и в этой теме просто ждете от других одобрения выбранной позиции. Вы всерьез считаете что разработчики от Siemens непрофессиональны и делали эти функции абы как?

Если вся программа контроллера состоит, образно говоря, из 5 строк, то нет надобности вносить туда еще 130 строк кода самописного таймера. Это к тому что каждое решение должно быть оправданным.

Если в будущем будете реализовывать проекты, а затем их обслуживать (эксплуатировать), то в полевых условиях, где-нибудь в щитовой, и в условиях ограничения времени, стратегию не только выработаете но и прочувствуете.


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

Зарегистрирован: Ср дек 05, 2012 10:52
Сообщения: 1455
SNike писал(а):
Если в будущем будете реализовывать проекты, а затем их обслуживать (эксплуатировать), то в полевых условиях, где-нибудь в щитовой, и в условиях ограничения времени, стратегию не только выработаете но и прочувствуете.
Сидя на пиве где-нибудь в щитовой типа
http://iadt.siemens.ru/forum/viewtopic.php?t=7897
Изображение

Судя по http://iadt.siemens.ru/forum/viewtopic.php?t=22101
можно понять тягу некоторых авторов к многострочным самописным опусам с запутанной логикой алгоритмообразования
BETEP59 писал(а):
Код:
FUNCTION Clever: WORD
VAR_INPUT
  n: INT;
END_VAR
VAR_TEMP
    w1, w2: WORD;
END_VAR
    w1:=w#16#0000;
    w2:=w#16#0000;
    IF (n>0)THEN
            w1:=SHR(in:=w#16#8000, n:=n-1);
        IF (n>8) THEN
            w2:=SHR(in:=w#16#0080, n:=n-8);
        ELSE
            w2:=SHL(in:=w#16#0001, n:=n-1);
        END_IF;
    END_IF;
    Clever := w1 OR w2;
END_FUNCTION

вместо использования простых логичных однострочных решений
GoshaM писал(а):
Код:
SHL(in:=w#16#0001, n:=16-x) OR SHR(in:=w#16#0080, n:=ABS(8-x))


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

Зарегистрирован: Ср июн 01, 2005 11:03
Сообщения: 293
Откуда: NRW
То, что человек не смог придумать один отдельно взятый алгоритм (тем более, что никто на этом форуме тоже не догадался), ни в коей мере не говорит о его некомпетентности в вопросах программирования. То, что пишет ВЕТЕР59, вполне добротно и заслуживает уважения, по крайней у меня лично.


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

Зарегистрирован: Вт мар 01, 2005 12:10
Сообщения: 592
Valery_Bobekh писал(а):
То, что человек не смог придумать один отдельно взятый алгоритм (тем более, что никто на этом форуме тоже не догадался), ни в коей мере не говорит о его некомпетентности в вопросах программирования. То, что пишет ВЕТЕР59, вполне добротно и заслуживает уважения, по крайней у меня лично.


Согласен на все 100, хаять таким способом, по меньшей мере не красиво.


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

Зарегистрирован: Сб ноя 01, 2008 9:53
Сообщения: 247
Откуда: Новгород
Да, не всегда удается придумать красивое решение. Но в общем и целом, я придерживаюсь того что программа должна быть понятна не только тому кто её написал, но и другим. А на счет красивого решения - так это из оперы "нет предела совершенству".

Касательно стратегии таймеров - остаюсь при прежнем мнении, что без надобности не стоит "городить свой огород".


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

Зарегистрирован: Вт янв 20, 2009 13:44
Сообщения: 343
Внесу свои пять копеек. Для того чтобы определиться, какая реализация таймера подойдёт, необходимо, учитывать: где будет использоваться таймер, как часто будет вызываться, необходимо ли менять уставку во время работы, какая точность будет приемлемой и другие. Также, не малый фактор на выбор способа реализации таймера сказываются субъективные факторы, такие как склонность написания в определённом языке, принятый стиль оформления проекта, величина эго автора. Необходимость в самописных таймерах в обычных проектах крайне мала, имеется ввиду функционал таймера (отличие от стандартного), так как львиную долю потребности в таймерах удовлетворяют системные таймера (SFB), малое за S5, главное грамотно применять. Применение перманентных маркеров для использования фиксированных интервалов времени также является оправданным, а вот использовать счётчики для подсчёта интервалов времени, когда уставка времени не превышает размерности стандартных таймеров, является сомнительным решением (ИМХО).


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

Зарегистрирован: Сб апр 07, 2012 20:52
Сообщения: 62
Откуда: Гомель
Да немцы это немцы


Последний раз редактировалось Koralex Вт мар 05, 2013 8:02, всего редактировалось 1 раз.

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

Зарегистрирован: Сб апр 07, 2012 20:52
Сообщения: 62
Откуда: Гомель
Да немцы это немцы


Последний раз редактировалось Koralex Вт мар 05, 2013 8:05, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 91 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

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


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

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


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

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