Страница 4 из 8 ПерваяПервая ... 23456 ... ПоследняяПоследняя
Показано с 31 по 40 из 80

Тема: Функциональный блок таймер с задержкой включения TON (TOF, TP)

  1. #31
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Фатон, если я вам вместо механического секундомера точностью 0,1 сек дам электронный 0,001 сек, вы своими руками время все равно точнее не засечете. Потому что у вас реакция ограничена и палец так быстро не двигается. С ПЛК то же самое - нет смысла отслеживать ход времени в пределах одного рабочего цикла, потому что ввод-вывод все равно происходит не чаще вызова всей программы.

  2. #32

    По умолчанию

    Цитата Сообщение от Faton Посмотреть сообщение
    Capzap, Так как мне научиться писать как профи, если примеров нет?
    Научиться можно через практику.
    Придумываешь себе задачу -- решаешь. Придумываешь -- решаешь. И так далее.

    В этом плане OSCAT может выступать как вариант "сборника задач". Например, берём какую-нибудь функцию оттуда, и пробуем написать сами. Потом сравниваем "что у них" с тем "что получилось".
    Если получилось короче -- пишем на форум. Вполне может оказаться, что в OSCAT что-то не самым лучшим образом написано.

    Совершенство достигнуто не тогда, когда нечего добавить, а когда нечего убрать.
    delete your code и т.п.

    Ещё вариант: попробуйте в исходной программе убрать строки, чтобы она ещё работала. Смысл не в том, чтобы всё в одну строку записать, а в том, чтобы оставить минимально необходимое понятное.

  3. #33

    По умолчанию

    1) capzap , время берется от так тактового генератора (резонатора), колебания которого не стабильны во времени и зависят от очень многих факторов . А Вы знаете, что и атомные часы в г. Москве подводят раз в сутки? Потому что есть среднее время между атомными часами. Я не настолько глуп... Для того, чтобы обеспечить точность времени или RTC (реальное время) нужно применять микросхемы сторонних производителей
    2) «Чтоб таймер работал точно вовсе не надо его вызывать за каждым поворотом. Не обязательно его даже в каждом рабочем цикле вызывать.»
    Здесь показан общий принцип применения таймера. В конкретном случае пустой вызов таймера не нужен,а в общем Я СЧИТАЮ нужен (ЛУЧШЕ ЗАЩИТИТЬСЯ ОТ БЕСКОНЕЧНЫХ ИЛИ ДОЛГИХ ЦИКЛОВ). А что если условие будет долгим и ПЛК прервет выполнение цикла по wath dog и в таком плане….
    «Ну и на картинке из поста 1, традиционный косяк в 33й строке - прибавлять нужно было не 7, а 11.» Я там 33 строки не вижу…
    3) Yegor, точности времени я представляю. Но что делает процессор в этот момент ни Вы, ни я не знаем.
    4) vladimirisitnikov, спасибо. Я так и живу. У меня есть выбор могу искать день нужную функцию в OSCAT, а могу написать её сам и еще как дополнительная тренировка будет. Конечно есть сложные функции куда лучше не лезть, а звонок это просто. Чем меньше в проекте не известного кода (закрытых библиотек), тем яснее для разработчика алгоритм работы. Я стараюсь максимально избегать. Хочу вот в совершенстве овладеть работой с указателями/ памятью. У кого можно проконсультироваться?
    Последний раз редактировалось Faton; 23.05.2016 в 14:32.

  4. #34
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Faton Посмотреть сообщение
    Чем меньше в проекте не известного кода (закрытых библиотек), тем яснее для разработчика алгоритм работы.
    золотые слова, еще остается добавить не только не известный но и не нужный. Нам например тяжело понять зачем в Вашем коде бесполезные вызовы ФБ. которые ни какой роли не играют
    А что если условие будет долгим и ПЛК прервет выполнение цикла по wath dog
    да хоть бы и чуть не доберется до злой собаки, что это даст, проверка на сработку таймера (переменная .Q)в любом случае уже будет в следующем очередном цикле
    Поймите, что таймеры запоминают время в момент его пуска и далее при вызовах берут текущее время полученную разность сравнивают с PT, если больше, именно больше а не равно, то включают выход
    Последний раз редактировалось capzap; 23.05.2016 в 14:41.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #35
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,317

    По умолчанию

    Цитата Сообщение от Faton Посмотреть сообщение
    В конкретном случае пустой вызов таймера не нужен,а в общем Я СЧИТАЮ нужен (ЛУЧШЕ ЗАЩИТИТЬСЯ ОТ БЕСКОНЕЧНЫХ ИЛИ ДОЛГИХ ЦИКЛОВ).
    Не в конкретном, а в общем случае любой вызов таймера "просто так" - бессмыслица. Вы предполагаете что он с пружиной которую нужно периодически заводить ? И в чём защита-то ?
    В общем Вы так и не разобрались в работе таймера.
    Но т.к. NOP'ами кашу не испортишь - делайте что хотите.

  6. #36

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    У меня тоже мягко говоря не идеальный код и я на данном этапе не рекомендую по нему учиться кодить. Попробуйте "Совершенный код", например. Её по порядку не обязательно читать.
    Почитал книгу "Совершенный код". там примеры для с++, а не для паскаля. Это идеи для паскаля, а мне нужен практический подход. про таймеры там нет ничего. Yegor зря мне посоветовали книгу, она не для совершенного кода в Codesys

  7. #37
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

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

    Есть книги, руководства и статьи, в которых показывают способы заставить работать ту или иную вещь в ST, а вот о том, как эту вещь к реальной проблеме красиво и правильно применить — нету. Берите материал для других языков, обобщайте, находите сходства и различия. Даже по части компиляции — почитайте как работают компиляторы вообще. Когда я обнаружил, что второму кодесису можно подсунуть выражение i.TRUE := i.FALSE (где i: INT) и он это съест, то я понял, почему он это делает не из какого-то руководства именно по ST, а просто знал из разных источников, что лексер криво сделан. Кстати толк от знания таких жутких тонкостей в программировании ПЛК сомнительный.

    Если я вам про организацию игрового цикла в компьютерных играх скажу почитать, вы меня совсем пошлёте? А между тем очень похожий подход к программированию, тоже в бесконечном цикле, тоже куча таймеров, которые лишний раз вызывать не надо.

  8. #38

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Кстати толк от знания таких жутких тонкостей в программировании ПЛК сомнительный.
    Вопрос на собеседовании "i := 42; i.TRUE := i.FALSE; чему станет равно i?"
    Или так "переменная I имеет тип DATE. Чему будет равно i := BOOL_TO_DATE(TRUE);?"

    В курилке смеяться над подобными вопросами очень большой смысл.
    А в реальном АСУТП, конечно, никакого.

    И, да, если кто-то реально спросит подобное на собеседовании стоит 42 раза подумать "а стоит ли туда идти".

    Цитата Сообщение от Yegor Посмотреть сообщение
    Если я вам про организацию игрового цикла в компьютерных играх скажу почитать, вы меня совсем пошлёте? А между тем очень похожий подход к программированию, тоже в бесконечном цикле, тоже куча таймеров, которые лишний раз вызывать не надо.
    +1

  9. #39

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Если я вам про организацию игрового цикла в компьютерных играх скажу почитать, вы меня совсем пошлёте? А между тем очень похожий подход к программированию, тоже в бесконечном цикле, тоже куча таймеров, которые лишний раз вызывать не надо.
    Рассказывать можно и про корабли, которые бороздят ... Если это имеет отношение к делу, то можно и поведать о цикла в компьютерных играх.
    Основная проблема это недостаточно ресурсов (времени и денег), с которой встречается инженер. Я не могу просто читать про компиляторы. В своё время я уже начитался - и про ошибки округления и т.д.. Практическое применение прочитанного в чем? Версии компиляторов изменились, снова искать описания тестов или самим начать тестировать компиляторы? Книга "Совершенный код" неплохая, но для решения моих задач -красиво писать код на ST языке - не подходит. Даже возможности ООП в Delphi я не могу перенести в Codesys. Из какого источника вы узнали о проблеме интерпретации компилятором "i.TRUE"?
    Любая технология(практические знания) с течением времени приходит к ширпотребу и для её реализации требуется все меньше ресурсов(времени и денег).Поэтому инженеру приходится изучать новые технологии.
    Я вспомнил откуда я про таймер взял, это была тема в журнале СТА. Я могу повспоминать и найти ссылку.

  10. #40

    По умолчанию

    Цитата Сообщение от Faton Посмотреть сообщение
    В своё время я уже начитался - и про ошибки округления и т.д.. Практическое применение прочитанного в чем?
    Практическое применение: знать узкие места при работе с числами с плавающей точкой в программировании.
    Если Вы не работаете с такими числами, то применения, безусловно, нет.
    Цитата Сообщение от Faton Посмотреть сообщение
    Книга "Совершенный код" неплохая, но для решения моих задач -красиво писать код на ST языке - не подходит.
    Можно подробнее? Что именно не подходит?
    Цитата Сообщение от Faton Посмотреть сообщение
    Даже возможности ООП в Delphi я не могу перенести в Codesys.
    С какими проблемами столкнулись здесь? Давайте помогу.

Страница 4 из 8 ПерваяПервая ... 23456 ... ПоследняяПоследняя

Похожие темы

  1. Функциональный блок PID
    от Hemann в разделе Программируемые реле
    Ответов: 78
    Последнее сообщение: 04.05.2017, 08:57
  2. LD + функциональный блок
    от дрю в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 26.04.2014, 09:47
  3. Функциональный блок для МЭ110-224.1М
    от rustam_m в разделе ПЛК3хх
    Ответов: 10
    Последнее сообщение: 10.03.2013, 20:07
  4. Пользовательский функциональный блок
    от fill-forty в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 17.08.2009, 09:49

Ваши права

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