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

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

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

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


Сообщения - Neskad

Страницы: 1 [2] 3
16
Задача немножко усложнилась  :( надо что бы переменные
        vrBtn_2.Value := Value;
        vrBtn_3.Value := Value;
        vrBtn_4.Value := Value;
меняли свое состояние не мгновенно а через секунду-две. Подскажите знатоки  :(
Проще всего через таймеры.
  • Cоздать внтуреннюю переменную (если её ещё нет), с типом Integer, с именем, например ButtonVar. Привязать ButtonVar к требуемой кнопке.
  • Cоздать внтуреннюю переменную с типом DateTime, например с именем timerVar.
  • Затем к событию onClick кнопки, привязать скрипт, содержащий такую строку:  TimerStart(timerVar, 0);
  • Затем создать ещё один скрипт с типом события "Изменились переменные" и добавить timerVar в список отслеживаемых скриптом переменных
Сам скрипт должен содержать такой код:
Код: (delphi)
const
  TIMEOUT: word = 2; // пауза перед изменением в секундах
begin
  if (TimerGetState(Variable) = 1) then
    if SecondsBetween(Variable.Value, 0) >= TIMEOUT then
      begin
        TimerReset(Variable);
        vrBtn_2.Value := ButtonVar.Value;
        vrBtn_3.Value := ButtonVar.Value;
        vrBtn_4.Value := ButtonVar.Value;
      end;
end.

17
Добрый день , возможно ли сделать разбор строки , несколько значений через разделитель, и второе главное , возможно из одного скрипта вызвать другой скрипт, если да то как , какой синтаксис.
Напрямую вызвать скрипт на выполнение из другого скрипта нельзя. Можно делать это косвенными методами (через событие "изменились переменные", "выполнен SQL-запрос"). Но вообще это обычно и не требуется. Если создать скрипт "глобальный модуль", то функции и переменные из этого модуля можно использовать в дальнейшем практически в любом другом скрипте. (насчет переменных - желательно не злоупотреблять).

18
Цитировать
Мне кажется такая возможность должна быть без использования скриптов
Это лишнее. SCADA - это в первую очередь система оперативного сбора и контроля показаний приборов/датчиков, а не табличный редактор.  :)
Творчески оформлять таблицы можно (вероятно) редакторе отчётов.

19
Здравствуйте. В ячейках невозможно разместить текст в несколько строк.
Здравствуйте. Вообще-то можно, в скрипте. Вот так:
Код: (delphi)
Table1.GetCell(1, 1).Text:= 'Первая строка'#13#10'Вторая строка';

20
Цитировать
Можно, конечно, склеивать нужные строки в одну, а потом писать, но все же удобно иметь отдельную функцию
Такую удобную функцию несложно написать самому, в чем проблема?
Если очень востребована, можно даже в глобальном модуле.
Код: (delphi)
interface
  procedure BufferWrite(aString: string); // соединяет все принятые аргументы в одну строку
  procedure BufferToFile(); // пишет результат в файл

implementation
  var
    strBuffer: string;

  procedure BufferWrite(aString: string);
    begin
      strBuffer:= StrBuffer + aString;
    end;

  procedure BufferToFile();
    begin
      if (TextFileOpen('MyTextFile.txt', '', fomAppend, fcpUTF8) = True) then
        TextFileWriteLn(strBuffer);
      strBuffer:= '';
      TextFileClose;
    end;
end.

21
Цитировать
Значит от Matrikon в скаду приходит 1 / 0, а от arOPC true / false.
Любопытно, но кажется это скада пишет в matrikon 1 / 0. Если менять значение (true / false) в самом Matrikon, то в скаде оно обрабатывается правильно - как true/ false, а если переключать кнопку из скады, то она посылает в Matrikon 1 / 0.
Впрочем, невелика проблема, судя по всему - со всеми реальными OPC скада взаимодействует хорошо, в то что у меня под рукой: arOPC,  MasterOPC и Овен OPC теги читаются и пишутся нормально.

22
Цитировать
Это значит, что в Вашу переменную с OPC-сервера приходит не Boolean значение (true или false), а например целочисленное (1 или 0), поэтому Вам и приходится явно приводить его к типу Boolean вызывая AsBool.
Я проверял это с внутренней глобальной переменной (внутренний тег) с типом Boolean, привязав её к кнопке с фиксацией.
Выражение (Variable.Value = True) не истинно при любом состоянии кнопки.

Стало интересно, проверил с Matrikon Simulation OPC и c arOPС.
С Matrikon не работает, с arOPC всё нормально, условие (Variable.Value = True) выполняется, если внешний тег True.

Но с внутренними тегами, работает только через Variable.AsBool.

23
Цитировать
Проблема:
После нажатия и отпускания кнопок, индикация кнопки остаётся в нажатом состоянии, о чём свидетельствует текст на кнопке "Выключить".
Кажется я понял в чем ваша проблема, сам недавно сталкивался с подобным.
Для глобальных переменных TM_Variable с типом boolean (которые вы создаете в меню "переменные") такой код не работает:
Код: (delphi)
if Variable.Value = True then myVar := True;
Хотя никакой ошибки при компиляции нет.

Для использования с условным оператором нужно глобальную переменную приводить к логическому типу:
Код: (delphi)
if Variable.asBool = True then myVar := True;
Выглядит немного странно, что к Boolean надо применять метод AsBool. Скорее всего, это особенность типа TM_Variable у SimpleScada.

24
Пара замечаний и пара предложений.
Замечания:
Функция VarType для переменных типа Variant не может отличить Single от TDateTime - для обоих выдаётся результат 5.

После ввода значения в ячейку таблицы, для повторного ввода надо трижды щёлкнуть по ячейке - так и задумано?

Предложения:
Нельзя-ли добавить в настройки трендов опцию "диапазон времени по умолчанию". Сейчас после перезапуска проекта постоянно приходится переключать тренды в масштаб 24 часа.

Ну и совсем уж прекрасно будет, если объекты с возможностью ручного ввода значений (те-же TM_Field и TM_TableCell) будут иметь свойство аналогичное Tag, только с типом TObject. Правда это уже из области "слишком больших хотелок", наверное.

25
Здравствуйте, благодарю за серьезный подход к проблеме, буду пробовать. Проблема осложняется ещё тем, что парк компьютеров предприятия мягко говоря устаревший, и почти для всех давно прекращен выпуск новых версий видеодрайверов.

Возник ещё один вопрос, ситуация такая: на сервере SScada постоянно запущен один проект, и работает локальный клиент. Теперь, если к серверу подключается Web-клиент, то сервер запускает для него отдельную копию проекта (с собственными экземплярами скриптов), или подключает к уже запущенному?

Насколько я понял, для каждого клиента запускается собственный экземпляр проекта?

26
Не могу подключить ОРС codesys . CoDeSys.OPC.02 видит , но при нажатии на него выскакивает окошко - Ошибка при попытке подключения к ОРС-серверу для стения списка тегов . Обновляю список - пишет Во время поиска ОРС серверов возникла ошибка ! Убедитесь , что имя целевого компьютера введено верно .
Что посоветуете .
Скорее всего посоветуют попробовать запустить OPC и Скаду от имени администратора. А вообще надо настраивать DCOM, особенно если OPC удаленный.

27
Добрый день!
Хотелось бы обращаться к переменной не по имени, а по адресу из OPC сервера, чтоб проще было добавлять и использовать переменные в скриптах для подмены на однотипных объектах. Планируется ли такая возможность?
В OPC сервере и так создаются группы с однотипными элементами, но для подмены приходится их переназывать в СКАДЕ.
Поддерживаю. Было бы удобно, если имелась бы функция подобная GetVariableByName, только принимающая в аргумент адрес переменной в OPC.

28
Ошибки / Re: Ошибка компилятора
« : 16 Мая 2019, 17:06:52 »
Версия 2.3.4.7

Если попытаться объявить любой список, например:
Код: (delphi)
type
  TMyScructure = record
    A, B, C: Integer;
  end;
При компиляции скрипта всё нормально, но при сохранении проекта возникает ошибка "begin" not found.

29
Добрый день. Теперь вопрос по отображению трендов в Web-клиенте.
В браузерах Opera и Chrome (обновленных) не видно линий графиков.
В стареньком Firefox (версии 56.0) линии отображаются. (вложил скриншоты)

Но, возможно проблема не в web-сервере SScada, а в настройках браузеров. Не подскажете как решить проблему?

30
Цитировать
по умолчанию, при подключении через web проект доступен только для просмотра. Если требуется управление через web, то необходимо открыть проект в редакторе, перейти в настройки и на вкладке "Общие" в параметре "Web-доступ" выбрать "с управлением":
Спасибо, разобрался. Поясните пожалуйста ещё один момент: в WEB-клиенте переход на другую страницу проекта, методом GoToPageClient, происходит только при видимой (нескрытой) панели страниц?

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