Доброго времени суток. А есть ли в Мастерскада возможность выводить число в двоичном виде? Типа "0010011000001011"?
Вид для печати
Доброго времени суток. А есть ли в Мастерскада возможность выводить число в двоичном виде? Типа "0010011000001011"?
Одна с минимумом, вторая с максимумом.
Так при периодическом значении он выдаёт только одно значение и по нему начинает считать:
Вложение 30785
Хотя мне нужны все значения:
Вложение 30786
Вот код, который я использую в итоговой строке {Max(DataНА1_МоторПередГориз,НА1_МоторПередГориз.П арам1)}, но нужна только она, без вывода всех значений.
Если только в скрипте преобразовать
using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using FB.FBAttributes;
using System.Collections;
using System.Linq;
[FBRetain]
public partial class ФБ : ScriptBase
{
public override void Start()
{
int val = 3;
var arr = new BitArray(BitConverter.GetBytes(val));
string sb="b";
for (int i=arr.Length-1;i>=0;i--)
{
bool b=(bool)arr[i];
string st=b ? "1" : "0";
sb=sb+st;
}
Параметр1=sb;
}
}
Каким параметром можно задать отсутствие сигнала?
Например если есть сигнал, но в это время статус подключения датчика 0, то чтобы он не получал - должно "рубиться" (именно отсутствие сигнала, а не 0).
В формуле нужно указать ЕСЛИ((Датчик=1), Выход, ???), или это только с помощью C# скрипта можно сделать?
Правильным вариантом - формировать признак качества (например Ошибка датчика). Для этого можно использовать ФБ "Установка признаков выхода" из раздела "Обработка сигналов".
Если используете наши OPC, то можно формировать скриптами на уровне сервера
Проблема проявилась. Мы с ней разберемся.
Но в любом случае в таком режиме использовать значение до опроса - не имеет смысла
Отлично, почти то что нужно. Попытался привести к виду, который мне нужен (16бит). Почему-то не получилось. Добавил строку:
где in1 это входная целая переменная. Но переменная 'val' никак не меняется при изменении 'in1'. Не могу понять почему.Код:ublic override void Start()
{
short val = (short)in1;
var arr = new BitArray(BitConverter.GetBytes(val));
Потому что метод стоит Start, а не Execute