PDA

Просмотр полной версии : Распаковка битовой маски в Мастер скада



Александр 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
Сам ФБ приведет число к беззнаковому типу.

Artyom
01.09.2021, 17:28
А как такое можно сделать в Master Scada 4D ?
Я такой функции не нашёл.

SCADAMaster
01.09.2021, 17:37
задайте этот вопрос в этом разделе:
https://owen.ru/forum/forumdisplay.php?f=94

b_aleks
01.09.2021, 17:38
А как такое можно сделать в Master Scada 4D ?
Я такой функции не нашёл.

В справке есть статья "Работа с отдельными битами" (Программирование в MasterSCADA 4D - Редактор ST - Синтаксис Master ST - Особенности вычислений).
Можете создать свой ФБ в библиотеке и использовать его в программах.

Artyom
01.09.2021, 18:34
Спасибо!

Еще я нашел ФБ "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;

b_aleks
02.09.2021, 08:04
Если мне нужен Int16, то просто дописать еще 8 бит?

Да, отличается только размер входной переменной