Просмотр полной версии : Распаковка битовой маски в Мастер скада
Александр N
11.01.2019, 06:38
Добрый день. Подскажите как в Мастерскада распаковать int16?
SCADAMaster
11.01.2019, 09:17
С помощью ФБ "Распаковка 32битного значения" из раздела Вычисления палитры ФБ
Александр N
13.01.2019, 10:50
Добрый день. Не знаю может я чего нибудь не понимаю, но у меня такой вариант не прошел, т.к. в int при появлении старшего бита появляются отрицательные числа.
SCADAMaster
14.01.2019, 09:16
Если у вас тип именно int - знаковый, то да, могут быть отрицательные числа. Если будет uint - не будет.
Только не совсем ясно как это связано с ФБ "Распаковка". Он должен корректно обрабатывать отрицательные числа.
Александр N
14.01.2019, 12:21
Да абсолютно верно знаковый int с opc сервера. Распаковка на сколько я понимаю работает в диапазоне 0....65535.
Спасибо.
SCADAMaster
14.01.2019, 12:48
Сам ФБ приведет число к беззнаковому типу.
А как такое можно сделать в Master Scada 4D ?
Я такой функции не нашёл.
SCADAMaster
01.09.2021, 17:37
задайте этот вопрос в этом разделе:
https://owen.ru/forum/forumdisplay.php?f=94
А как такое можно сделать в Master Scada 4D ?
Я такой функции не нашёл.
В справке есть статья "Работа с отдельными битами" (Программирование в MasterSCADA 4D - Редактор ST - Синтаксис Master ST - Особенности вычислений).
Можете создать свой ФБ в библиотеке и использовать его в программах.
Спасибо!
Еще я нашел ФБ "BYTE_TO_BITS", но там разбирают байт.
B0 := IN.0;
B1 := IN.1;
B2 := IN.2;
B3 := IN.3;
B4 := IN.4;
B5 := IN.5;
B6 := IN.6;
B7 := IN.7;
Если мне нужен Int16, то просто дописать еще 8 бит?
B8 := IN.8;
B9 := IN.9;
B10 := IN.10;
B11 := IN.11;
B12 := IN.12;
B13 := IN.13;
B14 := IN.14;
B15 := IN.15;
Если мне нужен Int16, то просто дописать еще 8 бит?
Да, отличается только размер входной переменной
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot