FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Суббота, 16.12.2017, 21:55
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: support, Сергей 
Форум » Баг - Трекер » Новые » Ошибка с Long Integer
Ошибка с Long Integer
eugeneb Дата: Пятница, 01.12.2017, 15:12 | Сообщение # 1
Подполковник
Группа: Проверенные
Сообщений: 226
Награды: 4
Репутация: 1
Статус: Offline
Столкнулся с неприятным эффектом самопроизвольного изменения типа данных(!).

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

А получаю Unsigned Long Integer(!):
Если я вместо потенциометра поставлю константу Integer со значением 0, то всё будет нормально:

Эффект наблюдается в FLProg 2.5.1 и в 3.0.0.

И как жить дальше?
Прикрепления: 3927008.png(6Kb) · 9444727.png(3Kb) · 6179061.png(3Kb) · 2568153.flp(101Kb)


Сообщение отредактировал eugeneb - Пятница, 01.12.2017, 15:14
 
support Дата: Пятница, 01.12.2017, 15:23 | Сообщение # 2
Автор программы
Группа: Администраторы
Сообщений: 1003
Награды: 46
Репутация: 28
Статус: Offline
Положите значение с выхода блока вычитания в переменную типа longInteger, и далее импользуйте её. Все должно заработать нормально. Дело в том что для экономии памяти, я не везде использовал переменные для выходов блоков, и кое какие блоки расчитываются на лету, и как там компилятор определит тип - не всегда известно. Создавая переменную, вы четко указываете компилятору какой тип Вам нужен.

Разработчик программы FLProg
 
eugeneb Дата: Пятница, 01.12.2017, 21:09 | Сообщение # 3
Подполковник
Группа: Проверенные
Сообщений: 226
Награды: 4
Репутация: 1
Статус: Offline
Спасибо! Маневр с промежуточной переменной решил проблему:

Однако, это пенальти надёжности FLProg.
Может ну её нафиг экономию памяти, бо надёжность всегда важнее?
Прикрепления: 3349745.png(6Kb) · 7183822.png(9Kb)
 
pan Дата: Пятница, 01.12.2017, 21:17 | Сообщение # 4
Генерал-полковник
Группа: Проверенные
Сообщений: 1279
Награды: 42
Репутация: 40
Статус: Offline
Цитата eugeneb ()
Может ну её нафиг экономию памят
 ближе к 80% загрузки, дуню начинает плющить. с чем сам недавно столкнулся. пришлось выискивать как освободить драгоценные байты...
 
eugeneb Дата: Пятница, 01.12.2017, 23:31 | Сообщение # 5
Подполковник
Группа: Проверенные
Сообщений: 226
Награды: 4
Репутация: 1
Статус: Offline
Согласен, что память очень ценный ресурс. Но надёжность программирования я ценю больше. Мне вообще очень нравится наглядность FLProg. Всегда есть уверенность в правильности работы контроллера. Это и язык FBD и разбиение на платы. (Правда не хватает ещё языка SFC. Я писал уже об этом http://flprog.ru/forum/10-1988-1). Я спокойно ставлю свои поделки в Продакшн на производство своим друзьям. Но вот такие косячки подрезают эту уверенность. Они увеличивают необходимый объём тестирования.
 
pan Дата: Пятница, 01.12.2017, 23:39 | Сообщение # 6
Генерал-полковник
Группа: Проверенные
Сообщений: 1279
Награды: 42
Репутация: 40
Статус: Offline
это не косячки, а тонкости программы) их нужно просто знать и принимать во внимание
 
eugeneb Дата: Пятница, 01.12.2017, 23:51 | Сообщение # 7
Подполковник
Группа: Проверенные
Сообщений: 226
Награды: 4
Репутация: 1
Статус: Offline
Да-да, это не баги, это фичи smile
 
support Дата: Суббота, 02.12.2017, 03:16 | Сообщение # 8
Автор программы
Группа: Администраторы
Сообщений: 1003
Награды: 46
Репутация: 28
Статус: Offline
Цитата eugeneb ()
Спасибо! Маневр с промежуточной переменной решил проблему:Однако, это пенальти надёжности FLProg.

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


Разработчик программы FLProg
 
Сергей Дата: Вторник, 12.12.2017, 04:59 | Сообщение # 9
Модератор
Группа: Администраторы
Сообщений: 535
Награды: 18
Репутация: 7
Статус: Offline
support, если никто не против задам вопрос здесь.
Колупаюсь со своим автоматом. Хочу сделать систему скидок при продажах. Процент скидки будет привязан к брелку пользователя, вместе с балансом. Проблема с умножением. Вопрос на фото.

Может я в 3 ночи чего то не догоняю?
Прикрепления: 8582819.jpg(123Kb)


Выгодные покупки на AliExpress в Cashback ePN! Возврат до 12 % от стоимости ЛЮБОГО товара!
 
eugeneb Дата: Вторник, 12.12.2017, 11:09 | Сообщение # 10
Подполковник
Группа: Проверенные
Сообщений: 226
Награды: 4
Репутация: 1
Статус: Offline
На Due ошибка не воспроизводится:

А если результат деления пропустить через вспомогательную переменную?
Прикрепления: 0077293.png(11Kb)


Сообщение отредактировал eugeneb - Вторник, 12.12.2017, 11:11
 
Сергей Дата: Вторник, 12.12.2017, 13:25 | Сообщение # 11
Модератор
Группа: Администраторы
Сообщений: 535
Награды: 18
Репутация: 7
Статус: Offline
Цитата eugeneb ()
А если результат деления пропустить через вспомогательную переменную?
то же самое. Да и у вас работает, и у меня раньше таких глюков не было. У меня в таких ситуациях мозг ломается. Вижу что черное, а все говорят белое)))


Выгодные покупки на AliExpress в Cashback ePN! Возврат до 12 % от стоимости ЛЮБОГО товара!
 
eugeneb Дата: Вторник, 12.12.2017, 13:54 | Сообщение # 12
Подполковник
Группа: Проверенные
Сообщений: 226
Награды: 4
Репутация: 1
Статус: Offline
Надо повнимательнее разглядеть С-код, который генерится.
А может это какая-нибудь шняга с Модбасом?


Сообщение отредактировал eugeneb - Вторник, 12.12.2017, 13:59
 
Sancho Дата: Вторник, 12.12.2017, 16:07 | Сообщение # 13
Генерал-майор
Группа: Проверенные
Сообщений: 582
Награды: 16
Репутация: 19
Статус: Offline
Сергей, Попробуйте константу 100 объявить тем-же типом, что и делимое.
smile


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Вторник, 12.12.2017, 16:10
 
Сергей Дата: Вторник, 12.12.2017, 16:24 | Сообщение # 14
Модератор
Группа: Администраторы
Сообщений: 535
Награды: 18
Репутация: 7
Статус: Offline
Цитата eugeneb ()
Надо повнимательнее разглядеть С-код
Та там проект как "Война и мир", это кусочек проекта. Попробую. Модбас просто отображает. Не должен влиять.
Цитата Sancho ()
Сергей, Попробуйте константу 100 объявить тем-же типом, что и делимое
Это я изначально делал, что бы все вычисления были с одним типом.
Позже попробую вообще на другую плату вынести и заодно код посмотрю + сделаю свой блок для вычисления процентов.
Интересный глюк получился.


Выгодные покупки на AliExpress в Cashback ePN! Возврат до 12 % от стоимости ЛЮБОГО товара!
 
nalnik Дата: Вторник, 12.12.2017, 16:58 | Сообщение # 15
Полковник
Группа: Проверенные
Сообщений: 341
Награды: 8
Репутация: 2
Статус: Offline
Сергей
Ваши слова:  Интересный глюк получился.

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

cool


Я не злопамятный, Я записываю.

Сообщение отредактировал nalnik - Вторник, 12.12.2017, 16:58
 
Форум » Баг - Трекер » Новые » Ошибка с Long Integer
Страница 1 из 212»
Поиск:

FLProg © 2017
Яндекс.Метрика