PDA

Просмотр полной версии : Работа с блоком Write to FB



Orbes
11.08.2016, 19:42
Здравствуйте!

Возникла следующая задача необходимо с помощью вещественной константы поместить в блок TOF1 время задержки 0,001 если вручную прописывать в TOF то всё нормально получается, а почему нельзя записать из FB такие маленькие значения? как мне быть если я хочу сделать задержку 0.001 сек? это значение будете вводиться по этому нужно реализовать через блоки FB и TOF.

rovki
11.08.2016, 20:37
1 целочисленная это и есть 1 мс .умножьте 0,001 на 1000 и сделайте целочисленной и на блок записи фб.

Алексей Геннадьевич
12.08.2016, 06:51
Orbes как мне быть если я хочу сделать задержку 0.001 сек? В любом случае у вас минимальная длительность будет выполнена равной длительности прогона программы(среднего времени исполнения), а она зависит от сложности программы.
В вашем случае (ввод вещественной переменной) - сначала преобразуйте её в целочисленную, а потом уже вводите в блок записи ФБ.

Сергей0308
12.08.2016, 07:03
В любом случае у вас минимальная длительность будет выполнена равной длительности прогона программы(среднего времени исполнения), а она зависит от сложности программы.
В вашем случае (ввод вещественной переменной) - сначала преобразуйте её в целочисленную, а потом уже вводите в блок записи ФБ.

Ему правильно посоветовали сначала х 1000, так как стандартный блок преобразования из ОЛ(преобразователь в целочисленное значение), преобразует вещественную переменную, меньше единицы(у него 0,001) в "0"!
С Вами согласен, меньше времени цикла не получится, так что если параметр критичный, можно и впросак попасть! Да и проблем с этим блоком в последнее время что-то многовато, я бы предпочёл вообще от него отказаться, но это моё личное мнение, понимаю для многих будет тяжело, это как бросить курить!

melky
12.08.2016, 08:52
0,001 секунды это и есть 1 мс, блок записи в FB на данный момент всегда пишет параметр в мс.

зачем там что-то умножать ?
Это когда через FB надо секунды записывать, умножаем на 1000 значения....

Сергей0308
12.08.2016, 08:55
0,001 секунды это и есть 1 мс, блок записи в FB на данный момент всегда пишет параметр в мс.

зачем там что-то умножать ?

Попробуйте запишите в секундах 0,001!

melky
12.08.2016, 09:07
Сергей0308 при установке блока записи в FB любые параметры таймера в свойствах игнорируются, запись идет в мс, даже тестировать программу потом мучение...

Других способов менять таймер с экрана или по сети, кроме как через блок записи в FB все равно нет.


Речь ведь не о установке параметров таймера через свойства, верно ведь ?

Сергей0308
12.08.2016, 09:16
Сергей0308 при установке блока записи в FB любые параметры таймера в свойствах игнорируются, запись идет в мс, даже тестировать программу потом мучение...

Других способов менять таймер с экрана или по сети, кроме как через блок записи в FB все равно нет.


Речь ведь не о установке параметров таймера через свойства, верно ведь ?

Для начала прочитайте вопрос ТС, это у него там как-то очень мудрёно, если честно, я сам не совсем понимаю, зачем так мудрить!

melky
12.08.2016, 09:23
Да ничего мудреного, просто он через блок записи в FB пытается записать 1 мс в том же виде, как записывал в свойствах TOF.

Если переменные в программе идут в секундах в вещественном виде, то да, надо умножить на 1000, преобразовать в INT и подать через блок записи в TOF

Сергей0308
12.08.2016, 09:27
Да ничего мудреного, просто он через блок записи в FB пытается записать 1 мс в том же виде, как записывал в свойствах TOF.

Если переменные в программе идут в секундах в вещественном виде, то да, надо умножить на 1000, преобразовать в INT и подать через блок записи в TOF

Ну так об этом(один к одному), я и сказал!

Алексей Геннадьевич
12.08.2016, 15:41
Да и проблем с этим блоком в последнее время что-то многовато, я бы предпочёл вообще от него отказаться,
Вы покажите, где с ним проблемы?:confused:
Сколько времени уже им пользуюсь, полёт нормальный.

но это моё личное мнение, понимаю для многих будет тяжело, это как бросить курить!
Если по ходу исполнения программы несколько выдержек, то использую свой блок ПЗУ /ЕЕPROM, и обхожусь одним таймером. Вообщем не с куревом надо сравнивать, а с опиатными как минимум:D

melky
12.08.2016, 16:01
Были проблемы после обновления версии выше .62, просто перестают работать

Сергей0308
12.08.2016, 16:31
Вы покажите, где с ним проблемы?:confused:
Сколько времени уже им пользуюсь, полёт нормальный.

Если по ходу исполнения программы несколько выдержек, то использую свой блок ПЗУ /ЕЕPROM, и обхожусь одним таймером. Вообщем не с куревом надо сравнивать, а с опиатными как минимум:D

Пост #2429: http://www.owen.ru/forum/showthread.php?t=9398&page=243
Ваше мнение есть по этому поводу, как записать, чтобы было правильно, где об этом написано?

Orbes
12.08.2016, 17:22
Ничего себе, сколько понаписать успели пока меня не было) Всем большое спасибо. Так, если он целочисленную 1 интерпретирует как 1 мс, как бы проверить реальное время импульса?

Ему правильно посоветовали сначала х 1000, так как стандартный блок преобразования из ОЛ(преобразователь в целочисленное значение), преобразует вещественную переменную, меньше единицы(у него 0,001) в "0"!
С Вами согласен, меньше времени цикла не получится, так что если параметр критичный, можно и впросак попасть! Да и проблем с этим блоком в последнее время что-то многовато, я бы предпочёл вообще от него отказаться, но это моё личное мнение, понимаю для многих будет тяжело, это как бросить курить!
Отказаться в моём случае не очень хорошая идея, так как с их помощью программа уменьшается. и как вообще с маленькими временами быть если всё так неопределённо.

Сергей0308
12.08.2016, 17:31
Ничего себе, сколько понаписать успели пока меня не было) Всем большое спасибо. Так, если он целочисленную 1 интерпретирует как 1 мс, как бы проверить реальное время импульса?

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

Вам же сказали, меньше времени цикла программы - никак! Цикл можно посмотреть в ОЛ, когда всю программу состряпаете и ПР подключите!

Алексей Геннадьевич
12.08.2016, 17:35
Пост #2429: http://www.owen.ru/forum/showthread.php?t=9398&page=243
Ваше мнение есть по этому поводу, как записать, чтобы было правильно, где об этом написано?
http://www.owen.ru/forum/showthread.php?t=23201&page=5&p=211086&viewfull=1#post211086
Я про эти макросы. Делаем небольшую обвязку, и хоть светофор, хоть гирлянду...

Ничего себе, сколько понаписать успели пока меня не было) Всем большое спасибо. Так, если он целочисленную 1 интерпретирует как 1 мс, как бы проверить реальное время импульса?
Можно усреднённо посмотреть. Но даже минимальный импульс (1мс) - проходит.

Отказаться в моём случае не очень хорошая идея, так как с их помощью программа уменьшается. и как вообще с маленькими временами быть если всё так неопределённо.
Значит придётся программу писать так, чтобы она укладывалась в 1-2мс.
А что за задача такая критичная?

Сергей0308
12.08.2016, 17:54
http://www.owen.ru/forum/showthread.php?t=23201&page=5&p=211086&viewfull=1#post211086
Я про эти макросы. Делаем небольшую обвязку, и хоть светофор, хоть гирлянду...

Можно усреднённо посмотреть. Но даже минимальный импульс (1мс) - проходит.

Значит придётся программу писать так, чтобы она укладывалась в 1-2мс.
А что за задача такая критичная?

Похоже Вы тоже, как и я не в теме, вот мне посоветовали, правда не Вы, что надо мол правильно синхронизировать блок записи в функциональный блок, если это нигде не прописано, как Вы можете быть уверены, что у Вас завтра не получится какая-нибудь лабуда, вроде той, что я показал! Спасибо, что показали свои макросы, если это будет меня интересовать, я обязательно у Вас спрошу!

sau7777
09.09.2016, 16:55
Что то не работает у меня write to FB
Ни в эмуляторе ни в реальной ПРке
Гляньте люди добрые - может я чего не так делаю?

Ревака Юрий
09.09.2016, 17:01
Что то не работает у меня write to FB
Ни в эмуляторе ни в реальной ПРке
Гляньте люди добрые - может я чего не так делаю?

Обновите OL до последней версии.

sau7777
09.09.2016, 17:34
Обновление не помогло.
Причем именно в TON не пишет, в BLINK нормально, даже до обновления.

rovki
09.09.2016, 18:38
Что то не работает у меня write to FB
Ни в эмуляторе ни в реальной ПРке
Гляньте люди добрые - может я чего не так делаю?
Что значит не работает ?Работает так как запроектировали - с задержкой включается и тут же сбрасывается ....

rovki
09.09.2016, 18:42
Что то не работает у меня write to FB
Ни в эмуляторе ни в реальной ПРке
Гляньте люди добрые - может я чего не так делаю?
Что значит не работает ?Работает так как запроектировали - с задержкой включается и тут же сбрасывается ....

Pavel_
09.09.2016, 18:50
Обновление не помогло.
Причем именно в TON не пишет, в BLINK нормально, даже до обновления.

у меня, ваш проект в симуляторе нормально отрабатывает запись во все TONы.

Orbes
09.09.2016, 18:56
Что значит не работает ?Работает так как запроектировали - с задержкой включается и тут же сбрасывается ....
Да нет, тут в режиме симулятора видно, что блок FB, не воспринимает информацию, нету у него на входе ничего, по этому стоит значение по умолчанию на таймере.
Недавно обнаружил такой косяк у Owen Logic, при копировании из одного проекта в другой, да даже при копировании в одном проекте блоков или узлов блоки могут работать некорректно, а связки вообще почему-то не работают. 26257
Вот, блок умножения отработал а FB не хотит...

Orbes
09.09.2016, 18:57
у меня, ваш проект в симуляторе нормально отрабатывает запись во все TONы.

Да как же? У Вас тоже не отрабатывает блок FB, видно же....
Вот так должно быть...
26258

Orbes
09.09.2016, 19:09
Вы наверное копировали части, а это не очень хорошо, особенно из других проектов
Вот... Тут должно всё работать..26259

Pavel_
09.09.2016, 19:16
Да как же? У Вас тоже не отрабатывает блок FB, видно же....
Вот так должно быть...
26258
а, точно, не записываются, не обратил внимание, что уставки по умолчанию, совпадают с уставками для записи...
тогда вот так:

sau7777
10.09.2016, 13:55
Вы наверное копировали части, а это не очень хорошо, особенно из других проектов
Вот...

Да, копировал, отрисовал первый блок с MUL и сделал 3 его копии.


Большое спасибо всем за помощь!

Orbes
10.09.2016, 14:10
Всегда пожалуйста ;)

subbotinanton
23.01.2017, 10:33
Скажите пожалуйста, почему не записываются значения из нескольких переменных в таймеры, а только из последней созданной? Есть ли какой то вариант реализовать?28849
переменная b не задаёт значение в tof1

Алексей Геннадьевич
23.01.2017, 10:51
Скажите пожалуйста, почему не записываются значения из нескольких переменных в таймеры, а только из последней созданной? Есть ли какой то вариант реализовать?28849
переменная b не задаёт значение в tof1
Потому, что через мультиплексор надо.
Один блок ФБ на один тип доступной переменной в одном блоке. Несколько работать не будут.
Вот пример записи нескольких переменных в один модуль через блок write to ФБ:
http://www.owen.ru/forum/showthread.php?t=25068&page=12&p=233746&viewfull=1#post233746

starmos
13.02.2017, 13:46
Не стал новую тему создавать. Ситуация: блок PID, надо вводить коэффициенты, сделал ввод с экрана в переменную, из переменной в блок Write to FB. Так же есть механизм автонастройки, при этом полученные коэффициенты читаются через Read from FB в ту же переменную. В итоге блок Write... подсвечивается красным и выводится ошибка: "Блоки WriteToFb не могут записывать в один и тот же FB и в одну и ту же переменную". Начать с того, что указанный блок пишет только в FB, а ни в какую не переменную. А во-вторых - в чем может быть причина? Блок PID у меня один, ошибиться невозможно.

Алексей Геннадьевич
13.02.2017, 14:24
starmos "Блоки WriteToFb не могут записывать в один и тот же FB и в одну и ту же переменную"
А программу выложить?
Скорее всего ваша невнимательность.

Василий Кашуба
13.02.2017, 14:37
Не стал новую тему создавать. Ситуация: блок PID, надо вводить коэффициенты, сделал ввод с экрана в переменную, из переменной в блок Write to FB. Так же есть механизм автонастройки, при этом полученные коэффициенты читаются через Read from FB в ту же переменную. В итоге блок Write... подсвечивается красным и выводится ошибка: "Блоки WriteToFb не могут записывать в один и тот же FB и в одну и ту же переменную". Начать с того, что указанный блок пишет только в FB, а ни в какую не переменную. А во-вторых - в чем может быть причина? Блок PID у меня один, ошибиться невозможно.
Если хотите записывать значения из двух источников в один блок WriteToFb, примените один из макросов от AI!.
29449 29450.

starmos
14.02.2017, 07:43
А программу выложить?
Скорее всего ваша невнимательность.

Вот программа, я выделил все что относится к ошибке.

Ревака Юрий
14.02.2017, 10:07
Вот программа, я выделил все что относится к ошибке.

У Вас переменная УсТпод берется из ниоткуда, ее никто не формирует, она подсвечивалась, поставил ее в режим энергонезависимости, ошибки все пропали, FB тут скорее всего не причем.

Василий Кашуба
14.02.2017, 10:16
Вот программа, я выделил все что относится к ошибке.
Это БАГ или ФИЧА нового релиза. Я открыл старую рабочую программу с библиотечным макросом ПИД в новом релизе и получил те же предуприждения.

Василий Кашуба
14.02.2017, 10:20
Вот смотрите.
29471

starmos
14.02.2017, 10:54
У Вас переменная УсТпод берется из ниоткуда, ее никто не формирует, она подсвечивалась, поставил ее в режим энергонезависимости, ошибки все пропали, FB тут скорее всего не причем.

Эта переменная не берется ниоткуда, её в полном варианте программы формирует специальный макрос, я просто удалил все лишнее, чтобы уменьшить объем. Энергонезависимость этой переменной мне не нужна.
Поставил туда константу - ошибка осталась.

starmos
14.02.2017, 10:55
Это БАГ или ФИЧА нового релиза. Я открыл старую рабочую программу с библиотечным макросом ПИД в новом релизе и получил те же предуприждения.

У меня похожие подозрения, т.к. ошибку я заметил после обновления - раньше её не было. Чего делать-то?

Ревака Юрий
14.02.2017, 11:04
У меня похожие подозрения, т.к. ошибку я заметил после обновления - раньше её не было. Чего делать-то?

А какой версией открываете, я открывал не последней, может в этом дело, но то что у меня высветилось, относилось к неназначенной переменной, видимо из-за удаления лишнего так получилось.

Василий Кашуба
14.02.2017, 11:14
У меня похожие подозрения, т.к. ошибку я заметил после обновления - раньше её не было. Чего делать-то?

Оставить релиз ОЛ 1.8.93

wal79
17.02.2017, 14:40
Вот программа, я выделил все что относится к ошибке.

Исправлено. В ближайшее время выйдет критическое обновление (hotfix).

SA104
12.06.2019, 15:25
Доброго времени
Подскажите, после операции Write_to_FB должно же значение записанного параметра в Read_From_FB измениться?
В симуляторе почему то не меняется.43134

Василий Кашуба
12.06.2019, 16:40
Доброго времени
Подскажите, после операции Write_to_FB должно же значение записанного параметра в Read_From_FB измениться?
В симуляторе почему то не меняется.43134

А программу приложить, мы здесь не ясновидящие и не экстрасенсы.

SA104
12.06.2019, 19:08
Разобрался. Там чтение рассчитанных коэффициентов при автонастройке, а не тех, которые записываются в фб.