1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Замер времени между импульсами

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)

Модератор: Глоб.модераторы

Ответить
Аватара пользователя

Автор темы
VADR
администратор
администратор
Сообщения: 4909
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 236 раз
Поблагодарили: 425 раз

Замер времени между импульсами

Сообщение VADR »

Приветствую, коллеги.

Имеем: контролер S7-1200. Конкретную модель и версию софта посмотрю позже, если это критично.
Планируем дополнительно подключить 2 дискретных индукционных датчика (приближение металла). С этих датчиков будут приходить импульсы с периодом 500-1000 мс и длительностью 100-200 мс. Задача - определить разницу между появлением импульсов с первого и второго датчиков с точностью порядка 2-3 мс. Такое в принципе на 1200 возможно? Если, к примеру, запрограммировать OB40 и брать из него время возникновения прерывания (там ведь до 1 мс точность?) - получится?

Физический смысл этой затеи: есть некоторое количество стальных балок, перетаскиваемых за оба конца. Хочется замерить перекос этой конструкции, если он возникнет.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
Аватара пользователя

den_vish
освоился
освоился
Сообщения: 233
Зарегистрирован: 11 апр 2013, 13:22
Имя: Вишневский Денис
Благодарил (а): 11 раз
Поблагодарили: 13 раз

Замер времени между импульсами

Сообщение den_vish »

имхо - через встроенные счетные входы, по первому сигналу включать счетчик, по второму выключать, у них заявленное
разрешение 100кГц
"- Знаешь, дружище, в чем истинный смысл второго закона термодинамики?
Как ни упирайся, а бардака все больше. И чем серьезнее ты упираешься, тем страшнее неразбериха."(с)
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Замер времени между импульсами

Сообщение megavolt86 »

В 1200 циклические прерывания с ов30 сейчас начинаются и время в них выставляется какое необходимо.
Если суть затеи следить чтобы за 2-3 мс сработали оба датчика то все получится.
А вот воздействие какое должно быть при такой скорости?
:ext_secret:
Аватара пользователя

den_vish
освоился
освоился
Сообщения: 233
Зарегистрирован: 11 апр 2013, 13:22
Имя: Вишневский Денис
Благодарил (а): 11 раз
Поблагодарили: 13 раз

Замер времени между импульсами

Сообщение den_vish »

megavolt86 писал(а): 30 дек 2019, 04:49 В 1200 циклические прерывания с ов30 сейчас начинаются и время в них выставляется какое необходимо.
Если суть затеи следить чтобы за 2-3 мс сработали оба датчика то все получится.
А вот воздействие какое должно быть при такой скорости?
то есть весь плк будет работать на один цикл в 1мс? причем в сам цикл тут уже ничего не напихаешь,
иначе время исполнения цикла превысит 1 мс
"- Знаешь, дружище, в чем истинный смысл второго закона термодинамики?
Как ни упирайся, а бардака все больше. И чем серьезнее ты упираешься, тем страшнее неразбериха."(с)

Михайло
эксперт
эксперт
Сообщения: 3643
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 8 раз
Поблагодарили: 286 раз

Замер времени между импульсами

Сообщение Михайло »

VADR писал(а): 30 дек 2019, 01:59 Если, к примеру, запрограммировать OB40 и брать из него время возникновения прерывания (там ведь до 1 мс точность?) - получится?
С версии 4.1 или 4.2 появился новый режим работы высокоскоростных счетчиков Period, который с точностью наносекунд измеряет период между импульсами.

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

Замер времени между импульсами

Сообщение rwg »

Точность определения задержки прихода фронта второго импульса относительно первого - 2 времени цикла работы программы контроллера + 2 нестабильности задержки времени между приходом импульса и его фиксацией программой. В сумме при цикличности работы контроллера 1мсек может набраться до 4 мсек и более. Если в коллективе есть какой-нибудь старый рационализатор, проще всего его руками собрать на коленках генератор импульсов например 10 кГц, который включается на время определения задержки и считать эти импульсы на высокочастотном счётном входе контроллера.

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5790
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 673 раза
Поблагодарили: 841 раз

Замер времени между импульсами

Сообщение Ryzhij »

rwg писал(а): 30 дек 2019, 07:05 Точность определения задержки прихода фронта второго импульса относительно первого - 2 времени цикла работы программы контроллера + 2 нестабильности задержки времени между приходом импульса и его фиксацией программой. В сумме при цикличности работы контроллера 1мсек может набраться до 4 мсек и более.
Это если использовать вызов API из тела цикла программы. Разве после настройки OB40 обработка входа идёт не по прерыванию? :ges_hmm:
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Михайло
эксперт
эксперт
Сообщения: 3643
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 8 раз
Поблагодарили: 286 раз

Замер времени между импульсами

Сообщение Михайло »

HSC_Period structure element definitions
● ElapsedTime returns the elapsed time in nanoseconds between the last pulse in the current period measurement interval and the last pulse in the previous period measurement interval. If EdgeCount = 0, then the ElapsedTime is the cumulative time since the last pulse. ElapsedTime has a range from 0 to 4,294,967,280 nanoseconds (0x0000 0000 to 0xFFFF FFF0). Period overflow is indicated by the return value 4,294,96,295 (0xFFFF FFFF. The values from 0xFFFF FFF1 to 0xFFFF FFFE are reserved. If ElapsedTime is either 0 (no input pulses received) or 0xFFFF FFFF (Period overflow), then EdgeCount is not valid.
● EdgeCount returns the number of input pulses of the most recent measurement interval. The EdgeCount must be "1" or more in order to be able to calculate the period between pulses. The period is calculated using the forumula: Period = ElapsedTime/EdgeCount.
Аватара пользователя

Автор темы
VADR
администратор
администратор
Сообщения: 4909
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 236 раз
Поблагодарили: 425 раз

Замер времени между импульсами

Сообщение VADR »

Уточняю: контроллер CPU 1214FC DC/DC/DC, firmware V4.2, 6ES7 214-1AF40-0XB0. Проект под TIA 15.1. Есть запас по дискретным входам на самом контроллере. На дополнительных модулях запаса нет, но при необходимости можно докупить ещё модуль.
megavolt86 писал(а): 30 дек 2019, 04:49 А вот воздействие какое должно быть при такой скорости?
Если время между импульсами превысит допустимый предел, значит пошёл перекос и надо тормозить установку.

Отправлено спустя 15 минут 44 секунды:
Михайло писал(а): 30 дек 2019, 06:15 С версии 4.1 или 4.2 появился новый режим работы высокоскоростных счетчиков Period, который с точностью наносекунд измеряет период между импульсами.
А этот счётчик можно запускать одним сигналом, а останавливать другим?
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 372
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 50 раз

Замер времени между импульсами

Сообщение v0v »

VADR писал(а): 30 дек 2019, 01:59 Физический смысл этой затеи: есть некоторое количество стальных балок, перетаскиваемых за оба конца. Хочется замерить перекос этой конструкции, если он возникнет
Я правильно понимаю,что датчики двигаются вместе с балками? Если так, то может лучше использовать датчики которые ловят горизонталь и вертикаль и подавать на аналоговый сигнал или настроить дискретный.
Аватара пользователя

Автор темы
VADR
администратор
администратор
Сообщения: 4909
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 236 раз
Поблагодарили: 425 раз

Замер времени между импульсами

Сообщение VADR »

v0v писал(а): 30 дек 2019, 10:04 Я правильно понимаю,что датчики двигаются вместе с балками?
Нет. Датчики предполагается ставить на неподвижной конструкции, реагировать они будут на проход балок над ними.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

Михайло
эксперт
эксперт
Сообщения: 3643
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 8 раз
Поблагодарили: 286 раз

Замер времени между импульсами

Сообщение Михайло »

VADR писал(а): 30 дек 2019, 08:48 А этот счётчик можно запускать одним сигналом, а останавливать другим?
Не могу сообразить, зачем вообще останавливать?
Это высокоскоростной аппаратный счетчик, работает вне ЦПУ. ЦПУ работает медленнее и лишь получает готовый результат работы (в данном случае - период между импульсами) и, да, управляет счетчиком, но в своем ритме (в цикле ЦПУ). Вы должны использовать для работы счетчика свободный вход на самом ЦПУ.

Отправлено спустя 3 минуты 21 секунду:
Михайло писал(а): 30 дек 2019, 06:15 с точностью наносекунд
Но вообще обольщаться не стоит. Да, результат с дискретой 1 наносекунда, но по факту от счетчика прилетают значения, кратные то ли сотням, то ли тысячам наносекунд. Ну по-крайней мере микросекунды он ловит и для организации тахометра это весьма неплохая точность.

ZuElecRu
освоился
освоился
Сообщения: 290
Зарегистрирован: 09 авг 2016, 13:49
Имя: Чистилин Андрей Анатольевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 31 раз
Поблагодарили: 36 раз

Замер времени между импульсами

Сообщение ZuElecRu »

Какова скорость движения балок? Датчики индуктивные? Оптические? Какова неровность поверхности или кромки балок?
Может излишне заморачиваетесь точностью?

Михайло
эксперт
эксперт
Сообщения: 3643
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 8 раз
Поблагодарили: 286 раз

Замер времени между импульсами

Сообщение Михайло »

Я бы взял индуктивники с выходом ИЛИ. НО-контакты подключил параллельно, а НЗ-контакты отдельно. Итого три входа ЦПУ: первый для измерения перекоса, другие два для ловли событий (прерывания).
Аватара пользователя

Автор темы
VADR
администратор
администратор
Сообщения: 4909
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 236 раз
Поблагодарили: 425 раз

Замер времени между импульсами

Сообщение VADR »

Михайло писал(а): 30 дек 2019, 11:20 Не могу сообразить, зачем вообще останавливать?
Я имею в виду - по одному сигналу запускать счёт, по другому - остановить. То есть: фронт первого сигнала - начало отсчёта, фронт второго - конец. Хотя, вполне возможно, отключать (в смысле - выводить из работы) счётчик тоже иногда имеет смысл. Например, когда привод отключен, нет смысла измерять перекос.
Михайло писал(а): 30 дек 2019, 11:20 Но вообще обольщаться не стоит. Да, результат с дискретой 1 наносекунда, но по факту от счетчика прилетают значения, кратные то ли сотням, то ли тысячам наносекунд. Ну по-крайней мере микросекунды он ловит
Этого более, чем достаточно. Я рассчитываю на погрешность порядка 1 мс, более точно вряд ли получится даже по механике: скорость движения балок порядка 1 м/с, разница менее 1 мм (то есть по времени - 1 мс) может быть вызвана не только перекосом, но и точностью установки, и скорее всего допустима (это я у механиков уточню, конечно).
Михайло писал(а): 30 дек 2019, 11:37 Я бы взял индуктивники с выходом ИЛИ. НО-контакты подключил параллельно, а НЗ-контакты отдельно. Итого три входа ЦПУ: первый для измерения перекоса, другие два для ловли событий (прерывания).
Вот тут уже я не понял, от слова совсем :). Два датчика, на которых НО контакты подключены параллельно. По сработке любого из них - контакт замкнут. То есть замыкается, когда первый по ходу конец балки подходит к своему датчику, размыкается, когда второй уходит от своего. Какой смысл в этом сигнале?
И, кстати: эти самые счётчики монополизируют используемые входные сигналы или нет? То есть (тут у меня уже фантазия начинает играть), если я эти два датчика использую в одном счётчике для измерения перекоса, а во втором один из них - для измерения времени между соседними балками (т.е. скорости движения) - такое будет работать?
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Замер времени между импульсами

Сообщение megavolt86 »

den_vish писал(а): 30 дек 2019, 05:13 То есть весь плк будет работать на один цикл в 1мс? причем в сам цикл тут уже ничего не напихаешь,
иначе время исполнения цикла превысит 1 мс
дык у плк ос не реального времени же... Цикл основной программы будет прерываться на время выполнения выполнения циклической программы.
[+]
в моих проектиках дискретные сигналы обрабатываются в цикле 100мс, аналоговые в 1с, процессы не очень быстрые (такое решение и в PCS7 используется)при таком распределении основной цикл программы у меня обычно не превышал 7-8 мс
:ext_secret:

Михайло
эксперт
эксперт
Сообщения: 3643
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 8 раз
Поблагодарили: 286 раз

Замер времени между импульсами

Сообщение Михайло »

VADR писал(а): 30 дек 2019, 12:27Какой смысл в этом сигнале?
Да, согласен. Но учтите, что функция HSC_Period работает только с одним входом, как ни крути. Там есть новый функционал у счетчиков HSC - Gate, который вроде как раз позволяет быстро отключать счет, но я им не пользовался, не знаю.
VADR писал(а): 30 дек 2019, 12:27И, кстати: эти самые счётчики монополизируют используемые входные сигналы или нет?
К сожалению, монополизируют, да. Придется распараллеливать сигнал, если что, но быстрых входов в ЦПУ, по-моему максимум 6.
Аватара пользователя

den_vish
освоился
освоился
Сообщения: 233
Зарегистрирован: 11 апр 2013, 13:22
Имя: Вишневский Денис
Благодарил (а): 11 раз
Поблагодарили: 13 раз

Замер времени между импульсами

Сообщение den_vish »

[+] ОФФ
megavolt86 писал(а): 30 дек 2019, 13:01 в моих проектиках дискретные сигналы обрабатываются в цикле 100мс, аналоговые в 1с, процессы не очень быстрые (такое решение и в PCS7 используется)при таком распределении основной цикл программы у меня обычно не превышал 7-8 мс
так я почему спросил, одно дело в более медленную обработку запихивать
(редко опрашиваем, часто обрабатываем), а в том варианте то наоборот - часто часто опрашиваем (1мс),
и редко редко обрабатываем(100мс?), или просто исключать исполняемый код если нет условий?
"- Знаешь, дружище, в чем истинный смысл второго закона термодинамики?
Как ни упирайся, а бардака все больше. И чем серьезнее ты упираешься, тем страшнее неразбериха."(с)

WolfJoker
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 23 янв 2020, 12:11
Имя: Дмитрий

Замер времени между импульсами

Сообщение WolfJoker »

Добрый день. По рукой ПЛЦ нет опробовать... Настроить на ПЛЦ дискретный выход в режим импульсного выхода, там до 100 кГц. Его же подать на дискретный скоростной вход а сигналы датчиков на входа ГЕЙТ. Разница в показаниях HSC и будет Ваше время.
Аватара пользователя

Автор темы
VADR
администратор
администратор
Сообщения: 4909
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 236 раз
Поблагодарили: 425 раз

Замер времени между импульсами

Сообщение VADR »

Кстати, вариант интересный. В данном конкретном проекте проблема была бы в том, что скоростные входные каналы (первые 6, которые до 100 кГц) уже все заняты, свободны остальные, а с ними такая скорость не получится. Вторая проблема - из-за того, что счётчики монополизируют используемые каналы, каждый из них пришлось бы сажать на два канала - ведь перекос может быть как в одну сторону, так и в другую, и тогда можно поймать одним датчиком сигнал одной балки, а вторым - уже следующей. Можно, конечно, вычесть из времени между проходами соседних балок, но в таком случае пришлось бы замерять время между проходами соседних балок.
Но в любом случае - вся затея отменилась: хотели измерять перекос из предположения, что он возникает постепенно, до каких-то значений допустим, его можно измерить на нескольких балках подряд. Оказалось (записали видео и анализировали), что всё не так: перекос начинается внезапно и измерять его в каком-то конкретном месте нет смысла.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
Ответить

Вернуться в «Simatic TIA Portal»