Я это понимаю, если не трудно подскажите нужную библиотеку или пример. Библиотека UTIL вроде только с битами работает, не хотелось бы до битовых данных опускаться, а работать хотя бы с байтами.
Вид для печати
Самое простое создать функцию и переставить регистры Вложение 78988
Код:FUNCTION SW_DWORD : DWORD
VAR_INPUT
DW :DWORD; (*полученный DWORD *)
END_VAR
________________________________
SW_DWORD := ROL(DW, 16); (* Выход с переставленными регистрами*)
))
Еще проще создать функцию и переставить как хочешь и сразу всей структуре/массиве
Код:FUNCTION SwapOrder : BOOL (*неисп*)
VAR_INPUT
PStruct : DWORD; (*pointer to struct..*)
SzStruct : DWORD; (*для кратного 4*)
Order : WORD; (*2143,3412,4321. Всё остальное как 1234 и не трогается*)
END_VAR
---------------------------------------
CASE Order OF 2143,3412:
SysMemSwap(PStruct, 2, SzStruct / 2);
END_CASE
CASE Order OF 3412,4321:
SysMemSwap(PStruct, 4, SzStruct / 4);
END_CASE
Иногда проще скомпоновать перенос с перестановкой в один футлярКод:Куда-то_в_слейв AT %где_то_в_слейве : ARRAY[..] of / STRUCT / ...
Order : WORD := 3412; (*для поиграть*)
---------------------------------------
SysMemCpy(ADR(Куда-то_в_слейв), ADR(Откуда-то_из_мастера), SIZEOF(Куда-то_в_слейв));
SwapOrder(ADR(Куда-то_в_слейв), SIZEOF(Куда-то_в_слейв), Order);
В принципе меня устроило как работает предложенное уважаемым kondor3000, но этот вариант тоже может пригодиться в будущем.
Код:Адресс Наименование
1 Напряжение_AN
3 Напряжение_BN
5 Напряжение_CN
7 Напряжение_LN_Avg
15 Напряжение_LL_ср
17 Текущий_ток_А
19 Текущий_ток_В
21 Текущий_ток_С
25 Полная_активная_мощность
27 Полная_реактивная_мощность
29 Полная_общая_мощность
33 Доставленная_активная_энергия
37 Доставленная_реактивная_энергия
41 Активная_мощность_А
43 Активная_мощность_В
45 Активная_мощность_С
47 Реактивная_мощность_А
49 Реактивная_мощность_В
51 Реактивная_мощность_С
53 Полная_мощность_А
55 Полная_мощность_В
57 Полная_мощность_С
71 Частота
511 Дисбаланс_напряжения
513 Дисбаланс_тока
Почему с нечетных если на стр. 10 с четных?
Чем @150 отличается от @144,146,148?
Почему у вас адреса начинаются с первого, когда по мануалу, адреса начинаются со 2.
У вас в итоге и регистры переставлены и читаете вы регистры из разных каналов. Если я прав, то переставлять регистры надо при обычном чтении, а через String и переставлять ничего не надо.
По мануалу функция должна быть 4, а вы всё читаете 3
Вот это ошибка... из других счетчиков перекочевала.
При функции 3 смещение на 1 регистр, если ставить как в мануале то вообще ничего не читает, сразу в ошибку вываливается. Сейчас перепроверил, при нужной функции чтения 4, без разницы с какого регистра начинать чтение, но поправил на четный как в мануале. Цифры одинаковые считывает! Преобразование все равно нужно
Т.к. ПЛК считывает одинаковые цифры со смещением и без, проверил как все считается в arOPC напрямую со счетчика. В OPC сервере необходимо смещение, т.е. начало с 1 регистра а не со 2 как в мануале. С четного опрос не идет.
К мультиметру @150 есть доступ и там живые данные, у @144,146,148 все по нулям чтобы подать на них напряжение надо включать установку.