IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в эту темуОткрыть новую тему
> Занимательные задачи, №35, Длительность межсканового промежутка.
Sergei Troizky
сообщение 15.03.2014 - 22:41
Сообщение #1


Гигант мысли
****

Группа: Пользователи
Сообщений: 377
Регистрация: 30.12.2004
Пользователь №: 108



Найдите способ и замерьте длительность межсканового промежутка, с максимальной доступной точностью, на любом живом FX.


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 15.03.2014 - 23:44
Сообщение #2


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(Sergei Troizky @ 16.03.2014 - 00:41) *
Найдите способ и замерьте длительность межсканового промежутка, с максимальной доступной точностью, на любом живом FX.


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


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 16.03.2014 - 00:04
Сообщение #3


Гигант мысли
****

Группа: Пользователи
Сообщений: 377
Регистрация: 30.12.2004
Пользователь №: 108



Главной целью задачи является создание правильной и максимально возможно точной методики измерения,
в-основном, с целью лучшего понимания процессов на стыке обычных и высокоскоростных операций.
Да и порядок измеренных величин небезинтересно узнать.
По сравнению с измерением коротких интервалов времени между прерываниями по входу, описанным в руководстве по программированию, данная задача имеет свою специфику.
А дальше будет пара задач-продолжений, которые Вы, по обыкновению, предвосхищаете.
Но- после ответов на эту.

Сообщение отредактировал Sergei Troizky - 16.03.2014 - 06:58


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 16.03.2014 - 07:02
Сообщение #4


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Из Вашего ответа прояснилось два момента:
1) Мое представление о том, как грамотно реализовать программно измерение времени межсканового промежутка, диаметрально противоположное Вашему
2) Представление о том, на что это время тратится и какие операции в это время выполняются, у нас с Вами также различны
От ответа воздержусь, дабы другие активно поучаствовали. С другой стороны, вижу, что в конце целесообразно обменяться мнениями по вопросу, подвести некоторый итог и постараться привести взгляды на вопрос к общему знаменателю.

Сообщение отредактировал inntele - 16.03.2014 - 07:02


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ivgtrk
сообщение 16.03.2014 - 11:58
Сообщение #5


Гигант мысли
****

Группа: Пользователи
Сообщений: 459
Регистрация: 5.02.2014
Пользователь №: 10203



Цитата(Sergei Troizky @ 16.03.2014 - 02:41) *
Найдите способ и замерьте длительность межсканового промежутка, с максимальной доступной точностью, на любом живом FX.

Если я правильно понял - имеется в виду, замерить время перехода между концом предыдущего и началом нового скана?


--------------------
Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 16.03.2014 - 19:31
Сообщение #6


Гигант мысли
****

Группа: Пользователи
Сообщений: 377
Регистрация: 30.12.2004
Пользователь №: 108



Да, с максимально возможной точностью.


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
m_by
сообщение 17.03.2014 - 09:16
Сообщение #7


Гигант мысли
****

Группа: Пользователи
Сообщений: 252
Регистрация: 15.11.2007
Пользователь №: 6407



Если на "живом", как вариант, тезисно ...
- выдать импульсы на выход (с высокой частотой)
- завести выход на вход аппаратного счетчика
- получить значение в конце и в начале скана
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ivgtrk
сообщение 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


--------------------
Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 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


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 20.03.2014 - 08:50
Сообщение #10


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(Sergei Troizky @ 20.03.2014 - 09:47) *
Для максимальной точности нужно было использовалась максимальную для однофазного счетчика частоту 10кГц (FX1S/N, FX2N) и даже 100кГц (FX3).
Результат нужно регистрировать в самом начале скана, чтобы не добавлять к измерению время выполнения предшествующих в скане инструкций.
А главная изюминка задачи заключалась в том, чтобы не забыть учесть (и вычесть из измеренного времени) время выполнения минимально неизбежных инструкций между началом отсчета и регистрацией результата.


В контроллерах FX2N и FX3U для измерения времени межсканового промежутка с точно такой же точностью, с которой это реализовано в Вашем примере, можно воспользоваться встроенным 100мкс счетчиком D8099. Соединять выход контроллера со входом быстрого счета в этом случае не требуется. Более того, в случае контроллера FX2N, разрешив работу счетчика D8099 в любом месте текущего скана, в самом начале следующего получим в нем непосредственно значение длительности межсканового промежутка.

Сообщение отредактировал inntele - 20.03.2014 - 12:23


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
m_by
сообщение 20.03.2014 - 09:56
Сообщение #11


Гигант мысли
****

Группа: Пользователи
Сообщений: 252
Регистрация: 15.11.2007
Пользователь №: 6407



По мануалам, которые есть у меня в наличии, только на 3G можно измерять длительность входного импульса, с точностью до 10мкс, с использованием спец. регистров. Взято на заметку.
Для остальных контроллеров серии FX диапазон D8074...D8098 используются для "Sampling Trace".
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ivgtrk
сообщение 20.03.2014 - 10:37
Сообщение #12


Гигант мысли
****

Группа: Пользователи
Сообщений: 459
Регистрация: 5.02.2014
Пользователь №: 10203



Цитата(Sergei Troizky @ 20.03.2014 - 11:47) *
Предлагаю результат моего теста на FX1S.

Я экспериментировал на FX1N.
Мой первый вариант, за исключением отлова max и min значений практически совпадал с Вашим. И так же, фиксировались промежутки между 500 - 700мкс. Менее 500 не было. Но я не сильно поверил в правдивость результата и попробовал иные методы. Но они лишь подтвердили результат.
Хотя мне показалось, что 500 мкс для перехода в начало - это как то многовато, что ли...

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

Это само собой. Я регистрировал еще до переноса DMOV.

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

Им. в виду флуктуация времени на "системные издержки" ? Или время выполнения последней команды DMOV, когда в счетчик записывается "0"?

Сообщение отредактировал ivgtrk - 20.03.2014 - 11:08


--------------------
Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ivgtrk
сообщение 20.03.2014 - 10:49
Сообщение #13


Гигант мысли
****

Группа: Пользователи
Сообщений: 459
Регистрация: 5.02.2014
Пользователь №: 10203



Цитата(inntele @ 20.03.2014 - 12:50) *
В контроллерах FX2N и FX3U для измерения времени межсканового промежутка с точно такой же точностью, с которой это реализовано в Вашем примере, можно воспользоваться встроенным 100мкс счетчиком D8088. Соединять выход контроллера со входом быстрого счета в этом случае не требуется. Более того, в случае контроллера FX2N, разрешив работу счетчика D8088 в любом месте текущего скана, в самом начале следующего получим в нем непосредственно значение длительности межсканового промежутка.

Равно, как и присутствие в них инстр. DHCMOV.
Конечно соблазнительно применить D8088, что облегчает задачу, но это лишь для 2N/3U серии.


--------------------
Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 21.03.2014 - 07:08
Сообщение #14


Гигант мысли
****

Группа: Пользователи
Сообщений: 377
Регистрация: 30.12.2004
Пользователь №: 108



Цитата(inntele @ 20.03.2014 - 08:50) *
... в случае контроллера FX2N, разрешив работу счетчика D8099 в любом месте текущего скана, в самом начале следующего получим в нем непосредственно значение длительности межсканового промежутка.

Не в любом месте. Разрешить надо именно последней строкой, чтобы не добавлять выполнения лишних инструкций к измерению .
К сожалению, FX2N нет под рукой, чтобы попробовать.


Цитата(ivgtrk @ 20.03.2014 - 10:37) *
Хотя мне показалось, что 500 мкс для перехода в начало - это как то многовато, что ли...

Да нет, как раз нормально, если одна лишь END требует 450 мксек.


Цитата(ivgtrk @ 20.03.2014 - 10:37) *
Цитата(Sergei Troizky @ 20.03.2014 - 11:47) *

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

Это само собой. Я регистрировал еще до переноса DMOV.

Нет. Единственный приведенный Вами код вообще замеряет время цикла, а не межскановый промежуток,
поскольку отрабатывает за время замера все строки.
DMOV C235 D10 надо было делать в первой же строке.


Цитата(ivgtrk @ 20.03.2014 - 10:37) *
Цитата(Sergei Troizky @ 20.03.2014 - 11:47) *

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

Им. в виду флуктуация времени на "системные издержки" ? Или время выполнения последней команды DMOV, когда в счетчик записывается "0"?

Время выполнения, но не только последней команды, а всех команд между началом замера и считыванием результата. Я их все перечислил в комментариях к моему коду.

Сообщение отредактировал Sergei Troizky - 21.03.2014 - 07:21


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 21.03.2014 - 08:04
Сообщение #15


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(Sergei Troizky @ 21.03.2014 - 09:08) *
Цитата(inntele @ 20.03.2014 - 08:50) *
... в случае контроллера FX2N, разрешив работу счетчика D8099 в любом месте текущего скана, в самом начале следующего получим в нем непосредственно значение длительности межсканового промежутка.

Не в любом месте. Разрешить надо именно последней строкой, чтобы не добавлять выполнения лишних инструкций к измерению .
К сожалению, FX2N нет под рукой, чтобы попробовать.

Именно, что в любом. В отличие от контроллера FX3U, где счет стартует сразу с момента активации флага M8099, в FX2N счет начинается только после выполнения команды END. Об этой особенности поведения FX2N сказано в Руководстве по программированию, в частности, в JY997D16601 (FX3G/FX3U/FX3UC Programming Manual - Basic & Applied Instruction).

Сообщение отредактировал inntele - 21.03.2014 - 08:05


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

2 страниц V   1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 29.04.2024 - 02:28