Страница 1 из 1

Как записать промежуточную переменную для дальнейшей работы

Добавлено: 25 апр 2018, 18:30
Nikol
Добрый день, суть задачи такова: есть фиксированная константа которая сравнивается с изменяемой регулятором(Numeric Contol) величиной, первый раз сравнивается константа и первое значение регулятора(если равны выдать лог. сигнал True), затем нужно куда то записать первое значение регулятора для последующей проверки на равенство со вторым значением регулятора, после записать куда то второе значение для проверки с третьим и так далее.
Помогите пожалуйста разобраться как это реализовать. В голове мысль что нужно использовать локальную переменную и сдвиговые регистры но как не могу понять..

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 26 апр 2018, 09:18
Kosist
Сдвиговый регистр (shift register) Вам в помощь - http://www.ni.com/getting-started/labvi ... -registers.

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 26 апр 2018, 12:25
Nikol
Kosist писал(а):Сдвиговый регистр (shift register) Вам в помощь - <!-- m --><a class="postlink" href="http://www.ni.com/getting-started/labvi ... rted/labvi ... -registers</a><!-- m -->.
Сдвиговый регистр (shift register) Вам в помощь
Спасибо за отклик, про сдвиговые регистры я знаю(передача данных из прошлой интерации) я не могу сообразить как Сохранить результат прошлой интерации для работы в следующей( Это из сдвигового регистра внутри цикла нужно подать на структуру Case?( например при условии что следующее значение интерации больше 0) но откуда результат прошлой интерации взять? Тоже из Shift register?

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 26 апр 2018, 13:00
Nikol
Или здесь нужно цикл в цикле организовать в одном из которых сохранялись бы данные(вопросы скорее всего глупые, ну в зависимости от того насколько я понял принцип работы сдвиговых регистров).
PS: Как я понял при создании регистра Numeric Control создаются две стрелки первая это куда подаются данные с контроля, в о вторую записывается результат операции в цикле(однако при изменении значения на контроле будет меняться и значения в регистре

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 27 апр 2018, 08:55
MagisterLudi
То, что вы подаёте на правый терминал сдвигового регистра в итерации n, выходит из левого в итерации n+1. А значит для вашей задачи необходимо на правый терминал сдвигового регистра подавать Изменяемую велечину. После этого пример из первого поста заработает за исключением первой итерации цикла, т.к. вы будите сравнивать текущее значение Изменяемой велечины с самим собой. Для того, чтобы разрешить эту проблему, я бы внёс в цикл структуру кейс по номеру итерации, в которой сравнение с константой оставил бы только для первой (нулевой) итерации.

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 27 апр 2018, 20:12
Nikol
MagisterLudi писал(а):То, что вы подаёте на правый терминал сдвигового регистра в итерации n, выходит из левого в итерации n+1.
Огроооомное спасибо за объяснение алгоритма работы сдвиговых регистров :super: :1stplace: .
Единственный вопрос а если то же сделать в бесконечном цикле Loop While работать будет также?
И если не сложно можете сказать правильно ли я вас понял с подключением терминалов?(Картинка ниже)

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 27 апр 2018, 20:56
Alex Dem
Nikol, на мой взгляд, лучше будет, если Вы опишите решаемую задачу целиком, так проще понять, в чем нужна помощь.
Возможно PID регулятор сам по себе достаточен и не нужно велосипед изобретать заново?

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 27 апр 2018, 21:05
Nikol
Alex Dem писал(а):Nikol, на мой взгляд, лучше будет, если Вы опишите решаемую задачу целиком, так проще понять, в чем нужна помощь.
Возможно PID регулятор сам по себе достаточен и не нужно велосипед изобретать заново?
Задача: На вход подается изменяющийся с течением времени сигнал, в начале цикла первое значение сигнала сравнивается с максимальным значением, после чего выдается управляющий логический сигнал T/F, далее происходит поэтапное сравнение входного сигнала с самим собой а именно следующего значения с предыдущим с выдачей логического сигнала, с последующей его записью в массив.

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 10 май 2018, 14:47
Artem.spb
Странно, что никто не написал
compare.png
compare.png (14.39 КБ) 7448 просмотров

Re: Как записать промежуточную переменную для дальнейшей раб

Добавлено: 10 май 2018, 20:37
Nikol
Странно, что никто не написал
Спасибо