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

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

Автор Тема: Вопросы по скриптам в Simple-Scada 2  (Прочитано 318841 раз)

asutpfoma

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1335 : 15 Декабря 2021, 11:55:52 »
Подскажите решение. Хочу игнорировать FALSE в течение минуты, если FALSE держится больше минуты, то принимаю это значение FALSE.
« Изменён: 15 Декабря 2021, 12:33:49 от Simple-Scada »

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1336 : 15 Декабря 2021, 12:03:20 »
Хочу игнорировать FALSE в течение минуты
Таймер.

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 161
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1337 : 15 Декабря 2021, 16:23:51 »
Здравствуйте.
Хочу игнорировать FALSE в течение минуты, если FALSE держится больше минуты, то принимаю это значение FALSE.

Подобные задачи правильнее и проще решить на контроллере, а не на скаде. Но можно решить эту задачу с помощью скады. Например, можно:
1. Создать новую внутреннюю переменную типа Integer для отсчета секунд, например с именем vrTimer;
2. Создать скрипт с типом события "Изменились переменные" и добавить в него Boolean переменную как это описано по ссылке. Т.е. скрипт будет выполняться при каждом её изменении. В скрипте присваивать в переменную vrTimer значение 60:
Код: (delphi)
begin
  if (Variable.AsBool = False) and (IsFirstChange = False) then
    vrTimer.Value := 60;
end.
3. Создать скрипт с типом события "Прошла секунда" со следующим кодом:
Код: (delphi)
begin
  if vrTimer.AsInt > 0 then
  begin
    // отсчитываем секунды
    vrTimer.Value := vrTimer.AsInt - 1;
    if vrTimer.AsInt = 0 then
    begin
      // Код размещенный здесь будет выполняться
      // Если boolean переменная = False в течение 60 секунд
    end;
  end;
end.
« Изменён: 15 Декабря 2021, 16:30:02 от Senpai »

lipvasko

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1338 : 20 Декабря 2021, 17:08:48 »
Добрый день, сегодня поставил последнюю версию 2.5.5.14 и понеслось, суть проблемы в том что ранее стояла 2.5.5.0 и проблем не было,  и так связка опс сервер овен + симпле скада + модуль овен аналоговый выход м110......6у,  теперь как только запускаю скаду и начинаю задавать переменную , обмен с модулем падает и  опс выдает , что модуль (устройство вернуло ошибку) пробовал откатится до 2.5.5.0  ,  не помогло , опс так же обновил- не помогло, пол дня пытался понять, что и как ,  и получается, с остановленным сервером  скады, все ок, можно задавать усттройству значение, как только запускаю скаду- , связь падает в бэд, убрал задание с помощью скрипта, повесил на  филд , задает  значение модулю , но  1 раз в 5 попыток ,  пробовал через скрипт задавать переменной  фиксированное значение ---  значение всегда бэд. Буду пробовать откатывать систему, другого выхода не вижу, понимаю  проблема в  передачи  данных от скады до устройства , т..е. скада задает такой значение, на какое ругается устройство .

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1339 : 20 Декабря 2021, 18:23:02 »
Здравствуйте.

Скада, касаемо работы с OPC-серверами (независимо от её версии) может только:
1. Получать данные от OPC-сервера. Для этого скада после подключения подписывается на изменения группы переменных и просит OPС-сервер передавать изменения в скаду с заданной частотой;
2. Записывать данные в переменные. Для этого скада посылает запросы к OPC-серверу с "просьбой" выполнить запись определённого значения в заданную переменную. Попытки записи выполняются только в том случае если Вы меняете значение переменных через компоненты (Поле, Кнопка, Уровень, Календарь и т.д.), либо через скрипты.

Цитировать
запускаю скаду и начинаю задавать переменную , обмен с модулем падает и  опс выдает , что модуль (устройство вернуло ошибку)
Скада никак не может самостоятельно повлиять на ошибки устройства. См. описание выше, скада подписывается на теги (с заданной частотой), которые Вы добавили в проект, а также выполняет запись так, как сделано в проекте. Например, если OPC-сервер (или конечное устройство) выдаёт ошибку из-за того, что скада подписалась на слишком большое количество переменных, то со стороны скады можно только уменьшить количество переменных в проекте. Если OPC-сервер (или конечное устройство) выдаёт ошибку из-за попытки записи в какую-то переменную, или из-за слишком большого количества операций записи, то со стороны скады можно только убрать запись в переменные через скрипты или объекты мнемосхемы, изменив проект.

Цитировать
пробовал откатится до 2.5.5.0, не помогло
Так и должно быть, т.к. версия скады явно не связана с описанной ситуацией. Не поможет даже откат до первой версии скады, т.к. все базовые функции не менялись с первой версии. И последняя версия скады читает и записывает данные также, как первая, в соответствии со спецификацией OPC.

Цитировать
с остановленным сервером  скады, все ок, можно задавать устройству значение, как только запускаю скаду- , связь падает в бэд, убрал задание с помощью скрипта, повесил на  филд , задает  значение модулю , но  1 раз в 5 попыток
Здесь только три варианта: первый - значение изменяемой переменной перезаписывается в скриптах проекта; второй - оно перезаписывается на ПЛК. Например, Вы записываете значение 5 и оно сразу перезаписывается другим значением (например 0) из скрипта скады или в программе ПЛК. Третий вариант: OPC-сервер не записывает значение из-за какой-то существенной проблемы (с устройством, состоянием сети и т.п.). В этом случае он обычно возвращает ошибку в журнал сервера скады, либо в свой собственный лог.
Первый вариант очень легко проверить: создайте новый проект без скриптов, добавьте в него переменную, которая записывается раз в пять попыток. Запустите созданный проект и проверьте запись. Если в новом проекте все записи выполняются корректно, значит в старом проекте переменная перезаписывается через скрипты и нужно исправлять код скриптов.

Цитировать
т..е. скада задает такой значение, на какое ругается устройство.
Все значения задаются либо пользователем проекта, через управляющие компоненты, либо через скрипты. Других вариантов записи значений во внешние переменные нет. Если устройство ругается на какие-то значения, то либо удалите из проекта скрипты в которых выполняется попытка записи некорректных значений, либо удалите объекты мнемосхемы, через которые пользователь вводит некорректные значения. Или измените их так, чтобы пользователь не мог ввести некорректные значения.
« Изменён: 20 Декабря 2021, 18:33:02 от Simple-Scada »

lipvasko

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1340 : 21 Декабря 2021, 11:29:10 »
Считаю все  вышесказанное , правильно , но, судите  сами :
1)до обновления все работало , после упало
2) далее , если создать новый проект  и оставить 1 устройство все работает, 
3)но в моём проекте , где все было хорошо , после обновы не работает, проект соответственно  в начале создавался не в этой версии, а существенно раньше (в этом думаю и проблема)
4)повторюсь даже если с  поля задавать , то задает  1 раз с 5-ти попыток , остальное показывает, что  переменная не доступна (!), после подтверждения  кнопкой ентер, явно даже  видна проблема, при задании без скриптов, напрямую в тэг.
5) далее, установил на ноут, где ногда не было новой версии , версию 2.5.5.0 , и  подкинул проект , без изменений  с рабочей станции , и о чудо , все снова заработало ,

Теперь просьба разработчикам , как мне  вернуть рабочее состояние на рабочей станции, и не надо говорить , что по линии обмена  с опс сервером , ничего не изменилось, это неправда, изменения  явно есть !!!
« Изменён: 21 Декабря 2021, 11:58:09 от lipvasko »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1341 : 21 Декабря 2021, 12:42:31 »
К сожалению мы не знаем как можно ещё дополнить предыдущий ответ по данному вопросу. Как можно изменить работу с OPC-серверами не нарушая спецификации OPC также непонятно. Если Вы не доверяете нашим ответам, то можно предложить следующие варианты:
1. Оставаться на версии 2.5.5.0 и не устанавливать будущие обновления;
2. Сделать снимки трафика через Wireshark (или подобное ПО) и самостоятельно убедиться что в работе скады по OPC в новой версии (в плане записи и чтения данных) ничего не изменилось.
Можем также проверить проект на наших ПК с тестовыми устройствами, а также проверить правильность скриптов, если Вы вышлите текущую версию проекта. Также можем проверить логи сервера скады из папки "Logs\", возможно в них есть что-то полезное.

Цитировать
2) далее , если создать новый проект  и оставить 1 устройство все работает,
3)но в моём проекте , где все было хорошо , после обновы не работает
Очень похоже на то, что причина проблемы именно в рабочем проекте (например в скриптах), ведь новый проект работает. Другой вариант: проблема связана с OPC-сервером и возможно зависит от количества используемых тегов (или частоты опроса и т.п.). Вы уверены, что с OPC-сервером или компонентами OPC Core Components всё в порядке?

Цитировать
5) далее, установил на ноут, где ногда не было новой версии , версию 2.5.5.0 , и  подкинул проект , без изменений  с рабочей станции , и о чудо , все снова заработало ,
Это просто неполный тест и основанные на нём выводы. Может быть проект также работал бы, если установить на ноутбук последнюю версию? Если проверять варианты и выполнять сравнения, то нужно проверять оба варианта, а не один. Также нужно отталкиваться от ошибки которую выдаёт устройство, или OPC-сервер. Что это за ошибка, о чем она говорит, в каких случаях она выдаётся согласно документации OPC-сервера (или устройства). Тогда можно было бы понять как её избежать и что вообще нужно проверять.
« Изменён: 21 Декабря 2021, 13:13:41 от Simple-Scada »

lipvasko

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1342 : 21 Декабря 2021, 14:54:47 »
Все понятно, но  помогайте мне найти выход, и так, вы оказались правы, на ноуте и новая версия заработала, тем самым еще более загнав меня в тупик,  на рабочей станции ,опс компоненты установлены( и переустановлены), ошибка опс (на рабочей станции)гласит, ( ошибка 3 , устройство  вернуло ошибку, недопустимое значение в запросе) , что не так может быть в проекте, если на ноуте он заработал  с разными версиями программы, на  рабочей станции на опс сервере пробовал отключать половину устройств, даже скажу больше, отключал все , кроме нужного, это про предположение про переполнение. Единственное заметил, что на ноуте, стоит просто куча  опс компонентов, разных версий, от другого софта. И еще хотелось бы понять, почему проблема именно с одним типом модулей , и подскажи, а как то можно увидеть обмен, скада -опс.  В логах, нет ничего интересного.


Решил вопрос,  оказался скрипт, действительно ,  и банально ,  устройство ждало от скады инт16, а  скада давала  скорее всего , со знаком после запятой, хотя, в настройках тэга , стоял чисто 0, в итоге поставил округление ,и все нормально , но знаете , что   обидно , больше всего и  эта проблема вашей скады ,  что с начала все  работает (пусть скрипт с багом) , скрипт, а потом, после например обновления, перестает , или как в моем случае, на ноуте работает, а на рабочей станции нет, и не понятно куда бежать , ведь работало все, без ошибок.....
« Изменён: 21 Декабря 2021, 20:20:18 от lipvasko »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1343 : 21 Декабря 2021, 21:41:45 »
Это уже привычная для нас ситуация, когда после обновления скады на почту тех. поддержки и форум в течение примерно 2 недель приходят разные сообщения от пользователей о том, что после обновления скада всё сломала, даже то, что её не касается. Такими темпами скоро выяснится, что обновление скады изменило погоду.

Цитировать
вы оказались правы, на ноуте и новая версия заработала
Не удивительно, ведь проблема не касается версии скады. Поэтому на рабочем ПК откат на предыдущую версию ничего не изменил, ведь обе версии работают одинаково. И на ноутбуке обе версии работают тоже потому, что проблема не касается обновления. Вы можете переустанавливать их до бесконечности и они всегда будут работать одинаково.

Цитировать
Единственное заметил, что на ноуте, стоит просто куча  опс компонентов, разных версий, от другого софта.
В разнице, судя по всему и заключается проблема. На одном ПК у Вас всё установлено и работает правильно. На другом чего-то не хватает, либо установлено неправильно. Например, можно установить на один ПК 32-битные компоненты OPC Core, на другой 64-битные. И оба ПК уже будут работать по-разному. Причем всё будет вроде бы работать, но с чудесами, как Вы примерно и описываете. Подобных примеров может быть много. Чтобы решить проблему нужно найти, чем рабочий ПК отличается от нерабочего и на проблемном ПК установить всё так, как на правильно работающем. Если разобраться не получается, то проще всего установить чистую ОС и все компоненты.

Цитировать
а  скада давала  скорее всего , со знаком после запятой, хотя, в настройках тэга , стоял чисто 0
Скада может что-то давать со знаком после запятой, только если Вы будете записывать в переменную вещественное число (или переменную), например vrA.Value := 0.01. Других вариантов нет и от версии скады не зависит.

Цитировать
больше всего и  эта проблема вашей скады, что с начала все  работает (пусть скрипт с багом) , скрипт, а потом, после например обновления, перестает
Как мы уже неоднократно писали - все версии скады выполняют присвоения абсолютно одинаково и сделать как-то по-другому нельзя, т.к. есть стандарт. Мы не меняли процесс присвоения начиная с первой версии и не будем его менять в будущих версиях, это невозможно  сделать не нарушая работу. Верить нам не нужно, см. сообщение выше, возьмите любое ПО для снимка сетевого трафика и сверьте данные которые посылают к OPC-серверу разные версии скады.
Однако рекомендуем присмотреться к другим SCADA-системам и не устанавливать будущие обновления скады, потому что после очередного обновления и не такое покажется.

Цитировать
или как в моем случае, на ноуте работает, а на рабочей станции нет, и не понятно куда бежать
Скада не знает, установлена она на ноутбук, или на рабочую станцию, или ещё на какой-то ПК. Это программа, которая на всех ПК делает одно и то же и посылает одинаковые запросы. Вы уже сами в этом убедились, но сделали прямо противоположные выводы. Почему OPC-сервер на одном ПК передаёт значение устройству правильно, а на другом с ошибкой (если это вообще так) - нужно спросить у разработчиков OPC-сервера, потому что скада в двух случаях посылает OPC-серверу один и тот же запрос. Или может быть дело вовсе не в ПК и его ПО, а в том, что "неправильное" присвоение выполняется по условию и это условие срабатывает только на рабочем ПК. Но и это от версии скады не зависит.
« Изменён: 21 Декабря 2021, 22:59:03 от Simple-Scada »

gis

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1344 : 22 Декабря 2021, 11:43:38 »
Добрый день, подскажите как сделать универсальный скрипт для объекта Календарь, чтобы запускать таймер для, отображаемой в нем, переменной DateTime, по булевой перенной (её я обозначаю как доп. переменную для объекта). Неясно как связать их внутри универсального скрипта.

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 161
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1345 : 23 Декабря 2021, 11:30:47 »
Здравствуйте.
подскажите как сделать универсальный скрипт для объекта Календарь, чтобы запускать таймер для, отображаемой в нем, переменной DateTime, по булевой перенной (её я обозначаю как доп. переменную для объекта).
Например, на событие OnDataChangeEx, написать такой скрипт:
Код: (delphi)
var
  aVar: TM_Variable;
begin
  if Sender is TM_Calendar then
    with Sender as TM_Calendar do
      begin
        aVar := Variable;
        if VariableEx.AsBool then  // в зависимости от доп. переменной календаря
          TimerStart(aVar, 0)      // запускаем таймер по основной переменной календаря
        else
          TimerReset(aVar);        // и останавливаем таймер по основной переменной календаря
      end;
end.
« Изменён: 23 Декабря 2021, 11:55:30 от Simple-Scada »

fp

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1346 : 16 Марта 2022, 08:39:59 »
Добрый день! Подскажите, пож-та, возможно ли получение данных с помощью SQL запросов от другой бд? Т.е. не от той, к которой настроено подключение...
Вероятнее всего нельзя, но тогда возможно ли выполнить SQL запрос на переключение к другой бд - "use ...;" перед выполнением запроса и обратное переключение после выполнения запроса? Не вызовет ли это ошибки при архивации, если автоматически запрос на сохранение попадет в момент переключения на другую бд?

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1347 : 16 Марта 2022, 09:51:00 »
Добрый день! Подскажите, пож-та, возможно ли получение данных с помощью SQL запросов от другой бд? Т.е. не от той, к которой настроено подключение...
А почему нет? Если у пользователя есть права на другую БД, проблем быть не должно.
Что-то такое точно работать будет:
Код
select name from db1.components a where a.ID in (select id from db2.bunkers);

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1348 : 16 Марта 2022, 10:00:36 »
Подскажите, пож-та, возможно ли получение данных с помощью SQL запросов от другой бд? Т.е. не от той, к которой настроено подключение...
USE лучше не использовать, вместо этого укажите имя БД в запросе перед именем таблицы, как описал выше Victor_P..

fp

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1349 : 16 Марта 2022, 12:48:02 »
Отлично, спасибо!