четверг, 26 января 2017 г.

Читання в Citect змінних INT64



Сьогодні та вчора прийшлося витягувати в Citect змінні типу INT64 з PM5300 (аналізатори мережі від Шнейдер Електрик). Звичайно, що в Citect немає такого типу даних, максимум 32-бітний LONG. Пошаривши в Інтернеті найшов тільки один варіант вирішення проблеми. Декілька слів напишу, може кому цікаво буде, та й мені також пригодиться на майбутнє.
Качаю масив з 4-х INT. Ось як це виглядить:



 У Cicode змінні типу Real мають 64 бітну розярядність. Звичайно при дуже великих числах розбіжність INT64 та REAL64 буде, але думаю що це стане через декілька-сот років, і я вже не буду жити (хоча сподіваюсь що буду), а система точно ні.
Так от, прописую в Cicode функцію
REAL
FUNCTION ARR2INT64 (INT w0, INT w1, INT w2, INT w3)
 RETURN w0 + w1*65536.0 + w2*65536.0*65536.0 + w3*65536.0*65536.0*65536.0
END

Далі в потрібному місці відображення або запису в тренд пишу щось типу такого
ARR2INT64  (PM6_QRRECV[3], PM6_QRRECV[1],PM6_QRRECV[1], PM6_QRRECV[0])



Комментариев нет:

Отправить комментарий