Занимательные задачи, №35, Длительность межсканового промежутка. |
Здравствуйте, гость ( Вход | Регистрация )
Занимательные задачи, №35, Длительность межсканового промежутка. |
15.03.2014 - 22:41
Сообщение
#1
|
|
Гигант мысли Группа: Пользователи Сообщений: 377 Регистрация: 30.12.2004 Пользователь №: 108 |
Найдите способ и замерьте длительность межсканового промежутка, с максимальной доступной точностью, на любом живом FX.
-------------------- Делать надо сразу хорошо. Плохо само получится.
|
|
|
15.03.2014 - 23:44
Сообщение
#2
|
|
Гуру Группа: Пользователи Сообщений: 1000 Регистрация: 19.08.2009 Пользователь №: 9149 |
Найдите способ и замерьте длительность межсканового промежутка, с максимальной доступной точностью, на любом живом FX. Уважаемый Sergei Troizky, даже если сам принцип измерения времени межсканового промежутка программно будет реализован правильно, результаты лабораторной работы у разных исследователей будут отличаться, причем серьезно, потому что Вы не хуже меня знаете, какие процессы оказывают существенное влияние на эту длительность. В связи с этим, логично было бы задаться вопросами, что Вы ожидаете от такой лабораторной работы, что ею хотите показать, какие теоретические выкладки она может и должна подтвердить, и, наконец, каких практических результатов позволит достичь решение задачи, и проведение лабораторной к ней. Или эта лабораторная является частью очень очень глубокого стратегического плана, который я не распознал? -------------------- Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
|
|
|
16.03.2014 - 00:04
Сообщение
#3
|
|
Гигант мысли Группа: Пользователи Сообщений: 377 Регистрация: 30.12.2004 Пользователь №: 108 |
Главной целью задачи является создание правильной и максимально возможно точной методики измерения,
в-основном, с целью лучшего понимания процессов на стыке обычных и высокоскоростных операций. Да и порядок измеренных величин небезинтересно узнать. По сравнению с измерением коротких интервалов времени между прерываниями по входу, описанным в руководстве по программированию, данная задача имеет свою специфику. А дальше будет пара задач-продолжений, которые Вы, по обыкновению, предвосхищаете. Но- после ответов на эту. Сообщение отредактировал Sergei Troizky - 16.03.2014 - 06:58 -------------------- Делать надо сразу хорошо. Плохо само получится.
|
|
|
16.03.2014 - 07:02
Сообщение
#4
|
|
Гуру Группа: Пользователи Сообщений: 1000 Регистрация: 19.08.2009 Пользователь №: 9149 |
Из Вашего ответа прояснилось два момента:
1) Мое представление о том, как грамотно реализовать программно измерение времени межсканового промежутка, диаметрально противоположное Вашему 2) Представление о том, на что это время тратится и какие операции в это время выполняются, у нас с Вами также различны От ответа воздержусь, дабы другие активно поучаствовали. С другой стороны, вижу, что в конце целесообразно обменяться мнениями по вопросу, подвести некоторый итог и постараться привести взгляды на вопрос к общему знаменателю. Сообщение отредактировал inntele - 16.03.2014 - 07:02 -------------------- Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
|
|
|
16.03.2014 - 11:58
Сообщение
#5
|
|
Гигант мысли Группа: Пользователи Сообщений: 459 Регистрация: 5.02.2014 Пользователь №: 10203 |
Найдите способ и замерьте длительность межсканового промежутка, с максимальной доступной точностью, на любом живом FX. Если я правильно понял - имеется в виду, замерить время перехода между концом предыдущего и началом нового скана? -------------------- Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
|
|
|
16.03.2014 - 19:31
Сообщение
#6
|
|
Гигант мысли Группа: Пользователи Сообщений: 377 Регистрация: 30.12.2004 Пользователь №: 108 |
Да, с максимально возможной точностью.
-------------------- Делать надо сразу хорошо. Плохо само получится.
|
|
|
17.03.2014 - 09:16
Сообщение
#7
|
|
Гигант мысли Группа: Пользователи Сообщений: 252 Регистрация: 15.11.2007 Пользователь №: 6407 |
Если на "живом", как вариант, тезисно ...
- выдать импульсы на выход (с высокой частотой) - завести выход на вход аппаратного счетчика - получить значение в конце и в начале скана |
|
|
19.03.2014 - 09:45
Сообщение
#8
|
|
Гигант мысли Группа: Пользователи Сообщений: 459 Регистрация: 5.02.2014 Пользователь №: 10203 |
Прежний свой вариант удалил, т.к. в нем много подводных камней...
Попробовал еще тремя разными способами, в последнем - попытка подсчета импульсов именно в перерыве между сканами: Цитата LD 8000 DMOV C235 D10 LD 8000 OUT C235 PLSY K5000 K0 Y0 LD 8000 DMOV K0 C235 И в этом случае, при частоте в 5 кГц (T=200мкс), счетчик отлавливает 3 импульса во время перехода скана в начало (3х200=600мкс). При f=10 кГц (T=100мкс) - уже 6 импульсов, что в итоге дает тот же результат (6х100=600мкс). Но все же, что-то мне в этом всем не нравиться... Сообщение отредактировал ivgtrk - 21.03.2014 - 08:40 -------------------- Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
|
|
|
20.03.2014 - 07:47
Сообщение
#9
|
|
Гигант мысли Группа: Пользователи Сообщений: 377 Регистрация: 30.12.2004 Пользователь №: 108 |
Вы не указали модель контроллера.
Для максимальной точности нужно было использовалась максимальную для однофазного счетчика частоту 10кГц (FX1S/N, FX2N) и даже 100кГц (FX3). Результат нужно регистрировать в самом начале скана, чтобы не добавлять к измерению время выполнения предшествующих в скане инструкций. А главная изюминка задачи заключалась в том, чтобы не забыть учесть (и вычесть из измеренного времени) время выполнения минимально неизбежных инструкций между началом отсчета и регистрацией результата. Предлагаю результат моего теста на FX1S. Interscan.JPG ( 38.9 килобайт ) Кол-во скачиваний: 23 Y0 заведен на X4. Единицы измерения- 100мксек. Регистрация результата измерения в D4 происходит при активном X0, равно как и запоминания минимального (D6) и максимального (D8) результатов. Это сделано для исключения влияния коммуникаций. X0 активировался на некоторое время в отсутствие связи с компьютером, затем отключался, и лишь после этого результат измерения мониторился. Как видно из скриншота, зафиксированы измерения в диапазоне от 300 до 500мксек. И если последнее значение хорошо объяснимо, то первое- весьма странно. Ведь после записи в D2 в последней строке программы, и до регистрации результата в первой строке следующего скана должны быть выполнены инструкции END,LD,DMOV (450+0.7+22=472.7мксек). Это- теоретический минимум, и то лишь предполагая, что под временем выполнения инструкции END/FEND понимается собственно выполнение межскановых процедур. В таком случае, результат 300мксек серьезно расходится с теоретически ожидаемым. Не находя ошибок в моей методологии, могу предположить, что время выполнения инструкции END/FEND дано в руководстве с серьезным запасом, возможно, из расчета на обновление максимально возможного количества входов-выходов. Вряд ли частота генератора отличается от ожидаемой, поскольку речь идет о погрешности в десятки процентов. При замерах во время мониторинга, результат колеблется больше, достигая максимума в 900мксек, но по-прежнему регистрируется минимум в 300мксек. Строки с инструкциями сравнения вставлялись online редактированием, и сразу после этого было зарегистрировано значение 86мсек (неожиданно много), подтвержденное значением 890 в ловушке максимального времени цикла D8012. Попытки произвести те же замеры, пользуясь внутренним счетчиком D8140, успеха не имели. В D4 всегда ноль. По-видимому, D8140 не обновляется непрерывно. Сообщение отредактировал Sergei Troizky - 25.03.2014 - 06:44 -------------------- Делать надо сразу хорошо. Плохо само получится.
|
|
|
20.03.2014 - 08:50
Сообщение
#10
|
|
Гуру Группа: Пользователи Сообщений: 1000 Регистрация: 19.08.2009 Пользователь №: 9149 |
Для максимальной точности нужно было использовалась максимальную для однофазного счетчика частоту 10кГц (FX1S/N, FX2N) и даже 100кГц (FX3). Результат нужно регистрировать в самом начале скана, чтобы не добавлять к измерению время выполнения предшествующих в скане инструкций. А главная изюминка задачи заключалась в том, чтобы не забыть учесть (и вычесть из измеренного времени) время выполнения минимально неизбежных инструкций между началом отсчета и регистрацией результата. В контроллерах FX2N и FX3U для измерения времени межсканового промежутка с точно такой же точностью, с которой это реализовано в Вашем примере, можно воспользоваться встроенным 100мкс счетчиком D8099. Соединять выход контроллера со входом быстрого счета в этом случае не требуется. Более того, в случае контроллера FX2N, разрешив работу счетчика D8099 в любом месте текущего скана, в самом начале следующего получим в нем непосредственно значение длительности межсканового промежутка. Сообщение отредактировал inntele - 20.03.2014 - 12:23 -------------------- Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
|
|
|
20.03.2014 - 09:56
Сообщение
#11
|
|
Гигант мысли Группа: Пользователи Сообщений: 252 Регистрация: 15.11.2007 Пользователь №: 6407 |
По мануалам, которые есть у меня в наличии, только на 3G можно измерять длительность входного импульса, с точностью до 10мкс, с использованием спец. регистров. Взято на заметку.
Для остальных контроллеров серии FX диапазон D8074...D8098 используются для "Sampling Trace". |
|
|
20.03.2014 - 10:37
Сообщение
#12
|
|
Гигант мысли Группа: Пользователи Сообщений: 459 Регистрация: 5.02.2014 Пользователь №: 10203 |
Предлагаю результат моего теста на FX1S. Я экспериментировал на FX1N. Мой первый вариант, за исключением отлова max и min значений практически совпадал с Вашим. И так же, фиксировались промежутки между 500 - 700мкс. Менее 500 не было. Но я не сильно поверил в правдивость результата и попробовал иные методы. Но они лишь подтвердили результат. Хотя мне показалось, что 500 мкс для перехода в начало - это как то многовато, что ли... Цитата Результат нужно регистрировать в самом начале скана, чтобы не добавлять к измерению время выполнения предшествующих в скане инструкций. Это само собой. Я регистрировал еще до переноса DMOV. Цитата А главная изюминка задачи заключалась в том, чтобы не забыть учесть (и вычесть из измеренного времени) время выполнения минимально неизбежных инструкций между началом отсчета и регистрацией результата. Им. в виду флуктуация времени на "системные издержки" ? Или время выполнения последней команды DMOV, когда в счетчик записывается "0"? Сообщение отредактировал ivgtrk - 20.03.2014 - 11:08 -------------------- Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
|
|
|
20.03.2014 - 10:49
Сообщение
#13
|
|
Гигант мысли Группа: Пользователи Сообщений: 459 Регистрация: 5.02.2014 Пользователь №: 10203 |
В контроллерах FX2N и FX3U для измерения времени межсканового промежутка с точно такой же точностью, с которой это реализовано в Вашем примере, можно воспользоваться встроенным 100мкс счетчиком D8088. Соединять выход контроллера со входом быстрого счета в этом случае не требуется. Более того, в случае контроллера FX2N, разрешив работу счетчика D8088 в любом месте текущего скана, в самом начале следующего получим в нем непосредственно значение длительности межсканового промежутка. Равно, как и присутствие в них инстр. DHCMOV. Конечно соблазнительно применить D8088, что облегчает задачу, но это лишь для 2N/3U серии. -------------------- Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
|
|
|
21.03.2014 - 07:08
Сообщение
#14
|
|
Гигант мысли Группа: Пользователи Сообщений: 377 Регистрация: 30.12.2004 Пользователь №: 108 |
... в случае контроллера FX2N, разрешив работу счетчика D8099 в любом месте текущего скана, в самом начале следующего получим в нем непосредственно значение длительности межсканового промежутка. Не в любом месте. Разрешить надо именно последней строкой, чтобы не добавлять выполнения лишних инструкций к измерению . К сожалению, FX2N нет под рукой, чтобы попробовать. Хотя мне показалось, что 500 мкс для перехода в начало - это как то многовато, что ли... Да нет, как раз нормально, если одна лишь END требует 450 мксек. Результат нужно регистрировать в самом начале скана, чтобы не добавлять к измерению время выполнения предшествующих в скане инструкций. Это само собой. Я регистрировал еще до переноса DMOV. Нет. Единственный приведенный Вами код вообще замеряет время цикла, а не межскановый промежуток, поскольку отрабатывает за время замера все строки. DMOV C235 D10 надо было делать в первой же строке. А главная изюминка задачи заключалась в том, чтобы не забыть учесть (и вычесть из измеренного времени) время выполнения минимально неизбежных инструкций между началом отсчета и регистрацией результата. Им. в виду флуктуация времени на "системные издержки" ? Или время выполнения последней команды DMOV, когда в счетчик записывается "0"? Время выполнения, но не только последней команды, а всех команд между началом замера и считыванием результата. Я их все перечислил в комментариях к моему коду. Сообщение отредактировал Sergei Troizky - 21.03.2014 - 07:21 -------------------- Делать надо сразу хорошо. Плохо само получится.
|
|
|
21.03.2014 - 08:04
Сообщение
#15
|
|
Гуру Группа: Пользователи Сообщений: 1000 Регистрация: 19.08.2009 Пользователь №: 9149 |
... в случае контроллера FX2N, разрешив работу счетчика D8099 в любом месте текущего скана, в самом начале следующего получим в нем непосредственно значение длительности межсканового промежутка. Не в любом месте. Разрешить надо именно последней строкой, чтобы не добавлять выполнения лишних инструкций к измерению . К сожалению, FX2N нет под рукой, чтобы попробовать. Именно, что в любом. В отличие от контроллера FX3U, где счет стартует сразу с момента активации флага M8099, в FX2N счет начинается только после выполнения команды END. Об этой особенности поведения FX2N сказано в Руководстве по программированию, в частности, в JY997D16601 (FX3G/FX3U/FX3UC Programming Manual - Basic & Applied Instruction). Сообщение отредактировал inntele - 21.03.2014 - 08:05 -------------------- Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
|
|
|
Текстовая версия | Сейчас: 29.04.2024 - 02:28 |