Ошибка с Long Integer

В данный форум Вы можете заносить найденные Вами ошибки.При добавления ошибки пожалуйста приложите файлик error.log который находится в папке с установленной программой
Ответить
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 18
Откуда: Нижний Новгород
Имя: Евгений

Ошибка с Long Integer

#1

Сообщение eugeneb » 01.12.2017{, 15:12}

Столкнулся с неприятным эффектом самопроизвольного изменения типа данных(!).

Вот тестовая схема:
СпойлерПоказать
На верхнем входе вычитателя тип данных Integer(синий). Данные идут с потенциометра. Я держу там 0.
На нижнем входе тип Long Integer(серый).
На выходе я ожидаю Long Integer(серый).

А получаю Unsigned Long Integer(!):
СпойлерПоказать
Если я вместо потенциометра поставлю константу Integer со значением 0, то всё будет нормально:
СпойлерПоказать
Эффект наблюдается в FLProg 2.5.1 и в 3.0.0.

И как жить дальше?
Вложения
2568153.flp
(100.76 КБ) 39 скачиваний
6179061.png
9444727.png
3927008.png
Последний раз редактировалось eugeneb 01.12.2017{, 15:14}, всего редактировалось 1 раз.

Аватара пользователя
support
Супермодератор
Сообщения: 1838
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 687
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Ошибка с Long Integer

#2

Сообщение support » 01.12.2017{, 15:23}

Положите значение с выхода блока вычитания в переменную типа longInteger, и далее импользуйте её. Все должно заработать нормально. Дело в том что для экономии памяти, я не везде использовал переменные для выходов блоков, и кое какие блоки расчитываются на лету, и как там компилятор определит тип - не всегда известно. Создавая переменную, вы четко указываете компилятору какой тип Вам нужен.
Автор программы FLProg.

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 18
Откуда: Нижний Новгород
Имя: Евгений

Ошибка с Long Integer

#3

Сообщение eugeneb » 01.12.2017{, 21:09}

Спасибо! Маневр с промежуточной переменной решил проблему:
СпойлерПоказать
СпойлерПоказать
Однако, это пенальти надёжности FLProg.
Может ну её нафиг экономию памяти, бо надёжность всегда важнее?
Вложения
7183822.png
3349745.png

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Ошибка с Long Integer

#4

Сообщение pan » 01.12.2017{, 21:17}

eugeneb писал(а):Может ну её нафиг экономию памят
 ближе к 80% загрузки, дуню начинает плющить. с чем сам недавно столкнулся. пришлось выискивать как освободить драгоценные байты...

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 18
Откуда: Нижний Новгород
Имя: Евгений

Ошибка с Long Integer

#5

Сообщение eugeneb » 01.12.2017{, 23:31}

Согласен, что память очень ценный ресурс. Но надёжность программирования я ценю больше. Мне вообще очень нравится наглядность FLProg. Всегда есть уверенность в правильности работы контроллера. Это и язык FBD и разбиение на платы. (Правда не хватает ещё языка SFC. Я писал уже об этом http://forum.flprogwiki.ru/viewtopic.php?f=10&t=1988 Я спокойно ставлю свои поделки в Продакшн на производство своим друзьям. Но вот такие косячки подрезают эту уверенность. Они увеличивают необходимый объём тестирования.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Ошибка с Long Integer

#6

Сообщение pan » 01.12.2017{, 23:39}

это не косячки, а тонкости программы) их нужно просто знать и принимать во внимание

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 18
Откуда: Нижний Новгород
Имя: Евгений

Ошибка с Long Integer

#7

Сообщение eugeneb » 01.12.2017{, 23:51}

Да-да, это не баги, это фичи

Аватара пользователя
support
Супермодератор
Сообщения: 1838
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 687
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Ошибка с Long Integer

#8

Сообщение support » 02.12.2017{, 03:16}

eugeneb писал(а):Спасибо! Маневр с промежуточной переменной решил проблему:Однако, это пенальти надёжности FLProg.
Этот манёвр - это временное решение. В принципе это бага (я то же не знаю всех тонкостей низкоуровнего компилятора), как её устранить, я уже знаю, так что эта проблема будет решена. К сожалению в версии которая сегодня выйдет я уже не смогу исправит (релиз уже выпущен и загружен на сервер), а в следующей всё будет нормально
Автор программы FLProg.

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

Ошибка с Long Integer

#9

Сообщение Сергей » 12.12.2017{, 04:59}

support, если никто не против задам вопрос здесь.
Колупаюсь со своим автоматом. Хочу сделать систему скидок при продажах. Процент скидки будет привязан к брелку пользователя, вместе с балансом. Проблема с умножением. Вопрос на фото.

Может я в 3 ночи чего то не догоняю?
Вложения
8582819.jpg

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 18
Откуда: Нижний Новгород
Имя: Евгений

Ошибка с Long Integer

#10

Сообщение eugeneb » 12.12.2017{, 11:09}

На Due ошибка не воспроизводится:
СпойлерПоказать
А если результат деления пропустить через вспомогательную переменную?
Вложения
0077293.png
Последний раз редактировалось eugeneb 12.12.2017{, 11:11}, всего редактировалось 1 раз.

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

Ошибка с Long Integer

#11

Сообщение Сергей » 12.12.2017{, 13:25}

eugeneb писал(а):А если результат деления пропустить через вспомогательную переменную?
то же самое. Да и у вас работает, и у меня раньше таких глюков не было. У меня в таких ситуациях мозг ломается. Вижу что черное, а все говорят белое)))

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 18
Откуда: Нижний Новгород
Имя: Евгений

Ошибка с Long Integer

#12

Сообщение eugeneb » 12.12.2017{, 13:54}

Надо повнимательнее разглядеть С-код, который генерится.
А может это какая-нибудь шняга с Модбасом?
Последний раз редактировалось eugeneb 12.12.2017{, 13:59}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Ошибка с Long Integer

#13

Сообщение Sancho » 12.12.2017{, 16:07}

Сергей, Попробуйте константу 100 объявить тем-же типом, что и делимое.
Последний раз редактировалось Sancho 12.12.2017{, 16:10}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

Ошибка с Long Integer

#14

Сообщение Сергей » 12.12.2017{, 16:24}

eugeneb писал(а):Надо повнимательнее разглядеть С-код
Та там проект как "Война и мир", это кусочек проекта. Попробую. Модбас просто отображает. Не должен влиять.
Sancho писал(а):Сергей, Попробуйте константу 100 объявить тем-же типом, что и делимое
Это я изначально делал, что бы все вычисления были с одним типом.
Позже попробую вообще на другую плату вынести и заодно код посмотрю + сделаю свой блок для вычисления процентов.
Интересный глюк получился.

Аватара пользователя
nalnik
Подполковник
Сообщения: 1305
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 95
Откуда: Кисловодск
Имя: Александр

Ошибка с Long Integer

#15

Сообщение nalnik » 12.12.2017{, 16:58}

Сергей
Ваши слова:  Интересный глюк получился.

Никогда не говори: "Я ошибся", лучше скажи: "Надо же, как интересно получилось..." Николай II, 1905 год.

Последний раз редактировалось nalnik 12.12.2017{, 16:58}, всего редактировалось 1 раз.
Я хочу быть добрее, но люди сами нарываются.

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

Ошибка с Long Integer

#16

Сообщение CraCk » 12.12.2017{, 19:41}

Сергей писал(а):Модбас просто отображает. Не должен влиять.
 Чтоб убедиться что не модбас. Замените модбас на отправку переменной в uart.

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

Ошибка с Long Integer

#17

Сообщение Сергей » 12.12.2017{, 20:45}

nalnik писал(а):"Надо же, как интересно получилось..."

Ответить

Вернуться в «Новые»