Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Neskad

Страницы: [1] 2 3
1
Извиняюсь, опечатался, адрес после импорта выглядит так, как вы указали: ns=3; s=EquipSetParam(E=4;SP=2)

2
Здравствуйте. Пробую подключить к SScada OPC UA сервер - Взлет СП4.
При импорте тега адрес переменной выглядит так: ns=3;EquipSetParam(E=4;SP=2)
В проекте тег работает и отображается корректно.

При попытке изменить шкалу переменной (и возможно, остальные свойства), от адреса остается только: ns=3;EquipSetParam(E=4. При попытке отредактировать адрес вручную, тот сохраняет адрес только до второго символа ";", а сам символ и всё последующее исчезает. Соответственно, при запуске проекта сервер скады пишет в журнал "неверный адрес тега", а сам тег перестает считываться из OPC UA.

3
Ваши вопросы / Re: Интеграл в скаде
« : 18 Июня 2020, 12:34:52 »
А ток и напряжение меняются во времени, или заранее определены?

4
Ваши вопросы / Re: Связь с ПЛК
« : 29 Мая 2020, 12:02:58 »
Естественно скрипт не работает. Потому-как в самом первом условии он противоречит вашему описанию.
Да и оформить можно было получше.

Код: ("delphi")
begin
  if InterfaceModule_disconnect_flag.Value = TRUE then
    begin
      InterfaceModule_disconnect_flag.Value := FALSE;
      InterfaceModuleTimerCheckState.Value := 0;
      if vrMsgDisconnect.Value = TRUE then
        begin
          AddMessage(Now, mkMessage, 'Установлена связь с ПЛК', true, false);
          vrMsgDisconnect.Value:= False;
        end;
    end
  else
    begin
      InterfaceModuleTimerCheckState.inc(1); //Накопление 10-ти секунд
      if InterfaceModuleTimerCheckState.Value >= 10 then
        begin
          if vrMsgDisconnect.Value = False then
            begin
              AddMessage(Now, mkAlarm, 'Связь с ПЛК утеряна', true, true);
              vrMsgDisconnect.Value := TRUE;
            end;
        end;
    end;
end.

5
Цитировать
SPC_VNS19 - внутренний тег. Хранит в себе разницу. Тип Integer
SpecificPowerConsumption_VNS19_Result - внутренний тег. Хранит в себе значение удельной потребляемой мощности. Тип Integer
Измените тип данных на Single, должно помочь, судя по всему.  :)

6
Да, можно, оказывается.  :)

Код: ("delphi")
var
  i, j, maxi, maxj: integer;
  cell: TM_TableCell;
begin
  maxi:= Table1.ColumnsCount - 1;
  maxj:= Table1.Columns[0].CellsCount - 1;
  for i:= 0 to maxi do
    begin
      for j:= 0 to maxj do
        begin
          cell:= Table1.GetCell(i, j);
          cell.Color:= RandomColor;
        end;
    end;
end.

7
Беда в том, что переменная таймера не архивируется нормально, и принимает значение, не соответствующее миллисекундам, например.

В примере ниже - график переменной таймера из демо проекта, добавлена только архивация по изменению
Переменная таймера архивируется нормально, просто формат у неё - TDateTime.
Если вам надо, зачем-то, выводить в тренд значение этого таймера в миллисекундах, то придётся создать дополнительную виртуальную переменную типа Int64, выставить ей архивацию по изменению, и добавить скрипт "изменились переменные", где изменяющаяся переменная - ваш таймер.
Код: ("delphi")
// допустим переменная для миллисекунд называется MSec
MSec.Value:= MilliSecondsBetween(Variable.Value, 0);

8
Ваши вопросы / Re: Расчёт суточный расход
« : 12 Декабря 2019, 13:43:33 »
Очень просто.

Код: ("delphi")
var
  aDate: TDateTime;
begin
  aDate := RecodeTime(Now, 0, 0, 0, 0);
  ArchiveValueByTime(MyVariable, vrEnd, aDate);
 
  aDate := IncDay(aDate, -1);
  ArchiveValueByTime(MyVariable, vrStart, aDate);
end
Ну и далее, как вам уже объяснили.

9
А написать небольшой скрипт, который самостоятельно будет добавлять записи в БД вас не устраивает?

10
Спасибо, я понял. А те точки графика, которые отрисовались интерполяцией тоже входят в расчет?

11
Здравствуйте. У меня вопрос из той-же области, поясните пожалуйста, как рассчитывается среднее значение, которое отображается в нижней части, напротив названия тренда?
В расчет берутся все записи из БД, за выбранный временной интервал, или какое-то определенное их число?

12
Ошибки / Re: "Мелкие" ошибки
« : 09 Октября 2019, 11:17:45 »
Здравствуйте. Есть небольшое замечание.
Если создать внутреннюю переменную с типом Single, и привязать её к полю ввода (TM_Field), а затем ввести нецелое число, к примеру, 65.05, или 0.08, то затем, при попытке повторного ввода в это поле, в нём появляется что-то вроде 65.0500030517578, и 0.0799999982118607. Нельзя-ли как-то исправить это? Сейчас мне приходится на такие поля привязывать скрипт, где значение каждый раз принудительно округляется до нужного разряда.

13
Ваши вопросы / Re: Вопросы по кнопкам
« : 01 Октября 2019, 17:42:40 »
Может кому пригодится маленький скрипт для цветовой индикации срабатывания кнопок с фиксацией и одним состоянием, о которых тут шла речь. Скрипт универсальный, нужно только привязать его к каждой из кнопок, на событие "OnDataChange".
И разумеется кнопки должны быть привязаны к общей глобальной переменной.

Код: (delphi)
var
  button: TM_Button;
begin
// цветовая индикация действующего режима кнопок
  button:= Sender as TM_Button;
  if button.States[0].Value = button.Variable.Value then
    button.States[0].Color:= clLimeGreen // цвет активной кнопки
  else
    button.States[0].Color:= clGray; // цвет неактивной кнопки
end.

14
EncodeTime(ЧЧ, ММ, СС); В справке описаны в разделе "Время и дата/Формирование значения"

15
Кажется, прямых документированных возможностей нет. Можно, например, через те-же OPC с виртуальными тегами, или через чтение-запись в общий файл, который можно и не на диске создать, а прямо в ОЗУ.

Страницы: [1] 2 3