Доброго времени суток. А есть ли в Мастерскада возможность выводить число в двоичном виде? Типа "0010011000001011"?
Доброго времени суток. А есть ли в Мастерскада возможность выводить число в двоичном виде? Типа "0010011000001011"?
Одна с минимумом, вторая с максимумом.
Так при периодическом значении он выдаёт только одно значение и по нему начинает считать:
Буфер обмена-1.png
Хотя мне нужны все значения:
Буфер обмена-2.png
Вот код, который я использую в итоговой строке {Max(DataНА1_МоторПередГориз,НА1_МоторПередГориз.П арам1)}, но нужна только она, без вывода всех значений.
Последний раз редактировалось ScooloV; 25.04.2017 в 07:52.
Если только в скрипте преобразовать
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
Спасибо.