Глупые вопросы новичка

Инженерное программное обеспечение
Drahtor
Дилетант
Сообщения: 17
Зарегистрирован: 01 июл 2013, 13:42

Глупые вопросы новичка

Сообщение Drahtor »

Предлагаю создать тему, в которой можно будет задавать глупые вопросы, подобно этому:
если к обоим входным переменным прибавлять одинаковое число, к примеру, 150.0, то при условии равенства взводится только первый меркер, в нашем случае М30.0. М30.1 даже при выполнении равенства не взводится. Если же к одной переменной прибавлять, допустим, 150.0, а к другой 150.1, то взведутся оба. Почему?
STL_Code.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка

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

Если я правильно понял ситуацию, то проблема заключается в представлении переменной типа REAL. Если складывать слишком большое число и слишком маленькое, то маленькое число может быть "незамечено". Например, число 0.1 намного меньше 100000.

Немного изменил тему, чтобы было понятнее. ;)

Drahtor
Дилетант
Сообщения: 17
Зарегистрирован: 01 июл 2013, 13:42

Re: Вопросы новичка

Сообщение Drahtor »

Михайло писал(а):Если я правильно понял ситуацию, то проблема заключается в представлении переменной типа REAL. Если складывать слишком большое число и слишком маленькое, то маленькое число может быть "незамечено".
.
Нет. Значения переменных изменяются в пределах от 1000 до 3000. Скорость изменения также не большая. Имел ввиду следующее: при DBD26+150 = DBD18 M30.0=1; а при DB30+150 = DBD22, M30.1=0

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Глупые вопросы новичка

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

Я не очень силен в STL, но проблема может быть в попытке сразу после команды +R грузить в аккумулятор ACCU2 командой L. Вероятно команда L сразу после +R затирает результат операции сложения. Нужно после +R сохранить результат командой T, а затем грузить заново.

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Глупые вопросы новичка

Сообщение mr_Frodo »

Drahtor писал(а):Предлагаю создать тему, в которой можно будет задавать глупые вопросы, подобно этому:
если к обоим входным переменным прибавлять одинаковое число, к примеру, 150.0, то при условии равенства взводится только первый меркер, в нашем случае М30.0. М30.1 даже при выполнении равенства не взводится. Если же к одной переменной прибавлять, допустим, 150.0, а к другой 150.1, то взведутся оба. Почему?
STL_Code.JPG
А где это видно?
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Глупые вопросы новичка

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

Drahtor писал(а):Если же к одной переменной прибавлять, допустим, 150.0, а к другой 150.1, то взведутся оба. Почему?
Это еще может быть случайным процессом, никак не связанным с тем, что к чему прибавляется. Дело в том, что команда проверки на равенство двух значений типа REAL - это конь в сферическом вакууме. Если эти значения приходят с датчиков, то вероятность практически равна нулю, что когда-то они будут равны. Обычно для вещественных чисел сравнение делают следующим образом: вычисляют модуль разницы и сравнивают с некоторым пороговым значением. Допустим отклонение не должно быть более 0,05 попугаев, тогда величины считаются равными.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Глупые вопросы новичка

Сообщение Автоматизатор »

mr_Frodo писал(а):А где это видно?
Да. Почему картинки "без очков" отладчика?

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Глупые вопросы новичка

Сообщение CHANt »

Drahtor писал(а):Почему?
Это просто не внимательность :D
У Вас меркер взводится по команде SET!!!!! Reset где? Т.е один раз взвелся, а потом хоть #головойобстену

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Глупые вопросы новичка

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

CHANt писал(а):Reset где?
Да не, нормально все. Просто фиксируем факт равенства... Наверное...

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Глупые вопросы новичка

Сообщение CHANt »

:D меняем S на = и все работает

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Глупые вопросы новичка

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

А может правда проблема в понимании того, как работает S?

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Глупые вопросы новичка

Сообщение mr_Frodo »

CHANt писал(а):
Drahtor писал(а):Почему?
Это просто не внимательность :D
У Вас меркер взводится по команде SET!!!!! Reset где? Т.е один раз взвелся, а потом хоть #головойобстену
Так в том то и дело, что топикстартер имеет претезии к неадекватной установке сигнала или даже невозможности, хотя не аргументирует представлением процесса онлайн, а только своими рассуждениями, которые не совсем последовательны и понятны.
Но раз уж тема идет в таком ключе, то необходимо досконально разобраться в ситуации, хотя я думаю, что Ваше объяснение вполне выявляет причину неверного трактования работы алгоритма, представленного автором темы. Ждем его рецензии.-
Вот моя подпись...

Drahtor
Дилетант
Сообщения: 17
Зарегистрирован: 01 июл 2013, 13:42

Re: Глупые вопросы новичка

Сообщение Drahtor »

CHANt писал(а): Это просто не внимательность :D
У Вас меркер взводится по команде SET!!!!! Reset где? Т.е один раз взвелся, а потом хоть #головойобстену
Меркеры сбрасываются в следующем нетворке. Проблема в том, что они не взводятся.
Автоматизатор писал(а):
mr_Frodo писал(а):А где это видно?
Да. Почему картинки "без очков" отладчика?
Процесс динамический, поэтому если только видео выложу.
Это подъемник. Соответственно левая и правая сторона. Считываются сигналы с энкодера (100 имп=0.1 мм), на скрине - значения в миллиметрах. Нажимаем кнопку пуск, мне надо, чтобы на высоте 150мм от пола подъемник остановился. Ставлю SET, потому что по инерции счетчик проскакивает заданное значение. Скорость вращения движков 1500 об/мин, энкодер 1024. Энкодер подключен к приводу. Данный в ПЛК идут по Profinet. Неужели ПЛК просто не успевает зафиксировать равенство или это происходит между циклами?
Если да, то наверно придется сравнивать как было предложено выше по модулю. Как это сделать компактно и без объявления дополнительных переменных?

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Глупые вопросы новичка

Сообщение mr_Frodo »

Равенство в реальных данных?!? :no:
Ставьте сравнение: больше или меньше и равно, вот тогда все будет работать.
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Глупые вопросы новичка

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

Михайло писал(а):Дело в том, что команда проверки на равенство двух значений типа REAL - это конь в сферическом вакууме. Если эти значения приходят с датчиков, то вероятность практически равна нулю, что когда-то они будут равны. Обычно для вещественных чисел сравнение делают следующим образом: вычисляют модуль разницы и сравнивают с некоторым пороговым значением. Допустим отклонение не должно быть более 0,05 попугаев, тогда величины считаются равными.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Глупые вопросы новичка

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

Объясняю совсем просто: допустим на входе ID1000 в динамике были получены значения 0, 12, 28, 62, 122, 167, 201, 225. Чтобы перевести в миллиметры мы (допустим) умножаем на коэффициент 0.15. Тогда реальные значения будут такие: 0, 1.8, 4.2, 9.3, 18.3, 25.05, 30.15, 33.75 мм. Если прямо сравнивать со значением 32.0 мм, то как видно бит не взведется. Причина - дискретность обработки информации с энкодера.

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Глупые вопросы новичка

Сообщение CHANt »

И это не особенность Симатика, это принципы работы с ПЛК и т.д.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Глупые вопросы новичка

Сообщение Автоматизатор »

Drahtor писал(а):Процесс динамический, поэтому если только видео выложу.
Математику можно тестировать отдельно от алгоритма управления механизмами. Самому задавать циферки (минимальные, максимальные, средние, граничные и пр. значения) в отладчике и проверять результат.

Drahtor
Дилетант
Сообщения: 17
Зарегистрирован: 01 июл 2013, 13:42

Re: Глупые вопросы новичка

Сообщение Drahtor »

Очередной глупый вопрос: один и тот же бит в одно и тоже время в редакторе равен "1", в VAT - "0". Предугадывая ответ, что он сбрасывается в другом месте, скажу, что больше он нигде не записывается.
LAD.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: Глупые вопросы новичка

Сообщение CHANt »

Я бы проверил четыре случая:
- сохранена и загружена в контроллер сама программа;
- сохранен и загружен в контроллер DB41;
- сохранена и загружена в контроллер таблица VAT;
- характеристики ЦПУ на предмет ограничения областей адресации, как для переменных, так для номеров DB, FC, FB и прочее.

Надо исходить из того что где-то Вы неверно задали параметр или не корректно выполнили операции, или это связано с ограничением этого ЦПУ (это же не полноценный контроллер), а не с позиции глюкавости Симатика, он то как раз и избавлен от глюкавости давно.

Ответить