Dword в два Word и обратно (обратно можно и Add использовать вместо OR)
Dword в два Word и обратно (обратно можно и Add использовать вместо OR)
Borserg Если подать целочисленные на OR то сравниваются ВСЕ биты. вот и все.
То же самое и для AND в ОЛ и не только в ОЛ...
melky, каюсь, не знал о такой возможности.
Коллеги, а ведь никто не сказал, что целочисленные переменные в OL теперь могут быть 32-разрядными.
Выдержка из справки: "Переменная целочисленного типа может принимать значение целого числа в диапазоне от 0 до 4294967295".
При создании целочисленной сетевой переменной для слота Master есть возможность выбрать количество регистров - 1 или 2.
Вот только непонятно, почему такой возможности нет при создании целочисленной сетевой переменной для слота Slave?
Borserg просто мастер надо было притянуть к стандарту, а slave это возможности процессора и ПО, могли бы сразу сделать и +- типы и 32 бит типы а не только "Целочисленное"
то есть все эти преобразования можно было сделать на уровне firmware и поддержать для тех ПР, в которых процессор позволяет.
Коллеги, попробовал варианты:
1. Мастер - целочисленная 32 бит, слейв - целочисленная с резервом следующего регистра. Мастер копируем в слейв напрямую.
В СП3хх - DWord, Unsigned, 10 знаков.
Получили 5132 вместо реального 3092.
2. Мастер - целочисленная 32 бит, слейв - с плавающей запятой. Мастер копируем в слейв через x->F.
В СП3хх - DWord, Unsigned, 10 знаков.
Получили 1168138240 вместо реального 3092.
3. Мастер - целочисленная 32 бит, слейв - с плавающей запятой. Мастер копируем в слейв через x->F.
В СП3хх - DWord, Float, 10 знаков.
Получили 5132 вместо реального 3092.
4. Мастер - с плавающей запятой, слейв - с плавающей запятой. Мастер копируем в слейв напрямую.
В СП3хх - DWord, Float, 10 знаков.
Получили 0 вместо реального 3092.
5. Мастер - с плавающей запятой, слейв - с плавающей запятой. Мастер копируем в слейв напрямую.
В СП3хх - DWord, Unsigned, 10 знаков.
Получили 5132 вместо реального 3092.
Положительный вариант:
- в мастере две целочисленных переменных 16 бит - старший и младший регистры 32-битного значения
- копирование этих регистров в две целочисленных 16 бит переменных слейва
- копирование двух регистров слейва в два внутренних регистра PSW СП3хх
- отображение на дисплее СП3хх переменной типа DWord Unsigned с младшего адреса PSW
Личное мнение:
Возможность создания целочисленных локальных и сетевых мастер переменных 32 бит и невозможность создания таких слейв переменных - очень большая недоработка OL.
Мне вот кажется 4-й вариант самый простой, а в панели указать, что это мол 32 битная целочисленная переменная и всё! Только порядок чередования байт придётся подобрать! Это если у Вас изначально такая переменная, а модбасу без разницы, что это, он два регистра передал, всё, дальше не его проблемы!
Вот зачем Вы панели говорите, что это переменная с плавающей запятой(в этом 4-ом варианте), если утверждаете что изначально это 32 битная целочисленная переменная, это загадка тысячелетия, я тут всё, опускаю руки! Разве так бывает, самому себе противоречить! Здесь разумные объяснения неуместны!
Вот 5-ый вариант более правильный, в смысле, насколько понял у вас изначально целочисленный беззнаковый тип данных, если Вам верить, какой на самом деле не известно!
Последний раз редактировалось Сергей0308; 08.12.2022 в 00:51.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.