У меня на версии Owen Logic2.10.366 всё заработало, на Виндовс 7 (32 бит)
Вид для печати
У меня на версии Owen Logic2.10.366 всё заработало, на Виндовс 7 (32 бит)
Версия 2.10.366.0 проект для ПР225:
Константа (целочисленное) - связь - сетевая переменная(целочисленное)
При установленном значении более 9999 преобразуется (переполняется) и в окне просмотра переменных другое число.
Пример 9999 ->9999, а 99999 -> 34463
Скрин:
Сетевые переменные - 2-х байтные. Максимальное значение = 65535. 99999 - 65536 = 34463
Да - это такой прикол. В программе целочисленные значения типа UDINT(4 байта), а в сетевых переменных целочисленные UINT(2 байта). Причем если из программы переменную привязать в сетевые, то никакой ошибки не будет, просто при значении больше 65535 будет в сетевой переменной мусор.
Нигде про это не написано, разбирайтесь сами с такими багами.
Для меня ПР исчезли навсегда как приборы после обнаружении такой фичи.
Насколько знаю: в режиме мастер ПР умеет работать с 32 битными сетевыми переменными, в режиме слейв - надо вручную разделять 32 битную переменную на два смежных регистра!
В справке написано что есть три типа данных - булевые, целочисленные и вещественные, так же написано что нет неявного преобразования из одного типа в другой.
Значит если одну переменную можно привязать к другой и проект компилируется без ошибок, значит они имеют одинаковый тип, но это не так, в слейве целочисленные это UINT.
Значит это баг и притом нигде про него не написано (возможно ошибаюсь, поправьте).
В режиме слейв 32 битная целочисленная внутренняя переменная обрежется до 16 младших бит, для правильной передачи надо вручную разделить на два смежных регистра, вроде об этом много разговоров было, поэтому я запомнил, где это написано не знаю, может потом допишут, если ещё не написали или добавят поддержку работы с такими переменными в режиме слейв.
Извините, я не хочу к вам цепляться, но как разделить одну переменную 4 байта на две по 2 байта если в ПР нет переменных по 2 байта?))
Получается мы делим VAR1 (UDINT) на две VAR2 и VAR3 тоже UDINT и потом так же через баг лоджика присваиваем к сетевым переменным UINT.
Далее выходит "обновление" (которые уже стали выходить каждую неделю) и все проекты полетят.
Что значит нет, 1 регистр это и есть 2 байта. Вы это должны знать как никто другой.
Передаёте сетевую целочисленную 1 или 2 регистрами, то есть передаёте WORD (65535) или DWORD (4294967295).
Отправляя число больше 65535 надо выбирать 2 регистра, для программиста это как азбука.
Так же как типы переменных, разборка и сборка 32 битных переменных на две 16 битных и это не меняется при обновлении ОЛ.