|
SMArt Разработка интерфейсов пользователя |
|
Опции темы | Поиск в этой теме |
29.08.2014, 16:52 | #1 |
Новичок
Регистрация: May 2014
Сообщения: 13
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Суть проблемы: при определенной достаточно простой последовательности действий в SMArt зависает работа с внутренней памятью (флаг "память не готова" не снимается до перезагрузки питания)
Контроллер Pixel 2511-02-00 Прикладываю FBD для воспроизведения проблемы. - прошить (тип компоновки значения не имеет) - запустить (запуск или под отладкой значения не имеет) - нажать F1 (запускает нужную последовательность действий) - загорится светодиод который привязан в FBD к флагу "память не готова" - попытки вручную отредактировать любое число на экране после этого ни к чему не приведут Проблема воспроизводится на двух разных экземплярах контроллерах. Тест памяти по ячейками хранения контроллера показывает норму (ARRAY пишет всю память различными числами и верно читает записанное) Обновился полностью перед проверкой: Версия прошивки контроллера 3.293.000 Версия SMLogix 3.25.0132 Прошу помощи разработчиков. |
01.09.2014, 13:18 | #2 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
02.09.2014, 13:10 | #3 |
Новичок
Регистрация: May 2014
Сообщения: 13
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Вероятно, есть еще одна ошибка, в разборе числа
воспроизведение еще более простое. 1) прошить приложенный файл (там нет ничего сложнее чем поле LONG!) 2) попытаться в первое из полей ввести число 738328586 - введется число 738328576 Другие числа вводятся успешно, хотя не все.. причем числа бОльшие - тоже обычно вводятся успешно. Границы чисел заданы от 0 до максимума.n |
02.09.2014, 16:50 | #4 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Цитата:
Показанный вами пример - это ошибка округления. В СМАрте не предполагается хранение более, чем пятиразрядных чисел. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
02.09.2014, 18:32 | #5 |
Новичок
Регистрация: May 2014
Сообщения: 13
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Эмм. Не ожидал.. Ладно, примем как есть. Для любых чисел кроме LONG такое решение по крайней мере это не вызывает ошибок..
Мне нужно вводить много различных коротких настроечных целочисленных переменных. Я предполагал получать их распаковывая LONG переменные SMArt'а на биты, и потом собирая обратно в нужных мне длинах. Используя INT я потеряю 50% памяти благодаря тому же подходу, а памяти и так мало. При декларируемом наличии "графической среды" будет странно писать интерфейсные макросы на FBD, но поскольку графическая среда не выполняет заявленные функции придется писать на FBD |
02.09.2014, 19:51 | #6 | |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Цитата:
Засим и получается, что проще организовать силами SMArt несколько "пустых" экранов (благо переходы между ними "программировать" просто), которые уже и заполнять своими конструкциями на FBD... P.S. Есть у SMArt, если я в другой теме правильно понял Arsie, и еще одна подстава, а именно: он всегда размещается ПЕРЕД FBD. То есть, если вы делаете в СМАрте что-то, достаточно часто пишушееся в память - вы будете тупо убивать память контроллера, а не "внешнюю" FRAM или флешку. Для настроек и тому подобной фигни это, наверное, мелочи - но задачи разные бывают, иногда СМАртовский "журнал" может словить под сотню записей за считанные секунды... |
|
03.09.2014, 11:21 | #7 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Цитата:
Ещё ни в одном контроллере, включая самые ранние SMH1010, журнал не высосал весь ресурс памяти. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
03.09.2014, 13:47 | #8 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
В задачах АВОК - да, авария - это штука, редко случающаяся.
Впрочем, журнал может фиксировать не только аварии, но и события (да-да, я помню, что Сегнетиксы - они как бы для вентиляции-отопления, а не для всего на свете, и я их юзаю в "нештатных" устройствах) - а события могут возникать в разы чаще... Вот и приходится конструировать свои "журналы" для событий (благо, это несложно), оставляя смартовский журнал для действительно серьезных аварий... P.S. В задаче, которую "от нефиг делать" (больше чтоб мозги не засохли) пытаюсь решить сейчас - возможны "цепочные" аварии, когда аварийные сообщения посыпятся по 70-80 сразу (жуткая ситуация, но в любом случае уменьшить - не выходит)... Вот и получится, что в журнале смарта "ждём" несколько секунд окончания этого "аварие-пада" и просто фиксируем сам факт, а сами аварии - просматриваем в самописном журнале (кстати, Arsie: можно ли при выборе аварии в жрнале СМАрт ддля её "подтверждения" переходить на другой экран (с самописным журналом, в частности), возврат с коротого и будет считаться подтверждением? |
03.09.2014, 15:32 | #9 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Цитата:
А журнал в Конструкторе это именно журнал аварий. Да и в СМАрте это журнал аварий и ничего другого. В журнале СМАрта нет квитирования. Там нечего подтверждать. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
03.09.2014, 17:25 | #10 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
03.09.2014, 18:15 | #11 |
Новичок
Регистрация: May 2014
Сообщения: 13
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
|
16.09.2014, 15:23 | #12 |
Сотрудник Segnetics
Регистрация: Apr 2008
Сообщения: 146
Благодарил(а): 13 раз(а)
Поблагодарили:
21 раз(а) в 20 сообщениях
|
Ответ: Ошибки алгоритма SMArt работы с памятью при вводе числа / Pixel
выложили версию 3.25.0136
__________________ Инженер "Сегнетикс" |