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

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

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

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #870 : 11 Июня 2019, 09:57:38 »
Здравствуйте. Ошибка "... is not a valid integer value" возникает при попытке перевода строки (которая не является числом) в число. Хороший пример привёл pan2000, когда строка содержит число + лишние символы (например пробел, символы переноса строки и т.п.). Если Вы получаете эту ошибку, то можно со 100% уверенностью сказать, что строка содержит лишние символы помимо чисел и поэтому её не удаётся перевести в число. Если обнаружить их не получается, то вышлите нам файл из которого Вы выполняете чтение, мы опишем что именно не так в этом файле.

MixMix

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #871 : 27 Июня 2019, 07:00:35 »
Добрый день! Подскажите нормально ли работают скрипты с конструкциями вида
Код: (delphi)
GetVariableByName(aName + '_Ypravl').Value := SetBit(GetVariableByName(aName + '_Ypravl').Value, 4, False);
или
Код: (delphi)
aQuery := 'UPDATE ' + Month + ' SET ' +                    //
          '`Text_1`=' + QuotedStr(GetVariableByName('edtDay_1_' + IntToStr(i)).Value) + ', ' +
          '`Text_2`=' + QuotedStr(GetVariableByName('edtDay_2_' + IntToStr(i)).Value) +
          ' WHERE `Day`=' + QuotedStr(IntToStr(i));
или лучше использовать промежуточные переменные?
Скрипты компилируется и работают без ошибок, просто хотелось бы знать на будущее.
« Изменён: 28 Июня 2019, 00:11:36 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #872 : 28 Июня 2019, 00:19:56 »
Здравствуйте.
Приведённый код вполне допустим, но в первом примере промежуточные переменные могут сделать его выполнение быстрее за счет сокращения количества вызовов GetVariableByName, кроме того, повысится читаемость кода. Например:
Код: (delphi)
var
  aVar: TM_Variable;
begin
  aVar := GetVariableByName(aName + '_Ypravl');  // только один поиск переменной по имени
  aVar.Value := SetBit(aVar.Value, 4, False);
end.
Во втором примере как-то улучшить код через промежуточные переменные не получится.
В идеале нужно ещё учитывать ситуацию, когда GetVariableByName вернёт nil, если переменная с указанным именем не существует. Но если это произойдёт, то Вы увидите в журнале сервера соответствующие сообщения об ошибках при выполнении скрипта и сможете их исправить.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #873 : 17 Июля 2019, 11:00:16 »
Добрый день , в  помощи не встретил (или не нашёл)как можно удалить текстовый фай , подскажите скрипт.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #874 : 18 Июля 2019, 12:05:33 »
Здравствуйте. В ближайшее время добавим такую функцию и опубликуем обновление.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #875 : 01 Августа 2019, 09:31:19 »
Добрый день возник один вопрос: и так есть два ПК, на одном стоит отладочная версия триал по времени , а на другой коммерческая без ограничений (версии скады самое последние обновление)  и вот интересность на  триальной этот универсальный скрипт работает(после запуска клиента , все ок, с вирт. переменными)  а на полной нет , сразу переходит в иначе и на переменные ему все равно (так же с виртуальными и   настоящими с ПЛК)
Код: (delphi)
BEGIN
         if Sender is TM_Image then          // проверяем, что Sender это изображение
         with Sender as TM_Image do        // приводим Sender к типу "TM_Image"
        if AsBool  then
        Visible := True         //
        else                          // иначе
          Visible := False;
END.
и второй вопрос создавал новый проект , соответственно в офлайне , когда перенес на полную версию , сервер начал ругаться на половину переменных с OPC DA  сервера , передобавил их  уже на полной версии , и все ок , что за глюк не понял , все переменные  вносились в проект , почти одновременно, но ответ на первый вопрос важнее , не охота плодить прямые скрипты
« Изменён: 01 Августа 2019, 09:58:05 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #876 : 01 Августа 2019, 09:55:20 »
Здравствуйте.
Данный скрипт меняет видимость изображения в зависимости от того какое значение принимает переменная связанная с изображением. Кстати, его можно сократить так:
Код: (delphi)
begin
  if Sender is TM_Image then          // проверяем, что Sender это изображение
    with Sender as TM_Image do        // приводим Sender к типу "TM_Image"
      Visible := AsBool;
end.
Скрипты компилируются в программу при сохранении проекта и ни при каких обстоятельствах не могут начать работать по разному, независимо от того на какой версии скады они запущены, или на каком компьютере они запущены, ведь программа скомпилирована и не менялась. Поэтому причину нужно искать только в значениях переменных. Если при запуске на объекте вы видите что изображения скрылись, значит переменные с которыми они связаны приняли значение FALSE, в соответствии со скриптом. Либо второй вариант: в скриптах есть грубые ошибки, или ссылки друг на друга, или скрипты назначены не на события OnDataChange, а на OnDataChangeEx и так далее.
Если найти причину не получается, то вышлите нам проект на support@simple-scada.com для проверки с указанием проблемных изображений. Мы укажем на ошибки в скриптах, если они есть.

Цитировать
и второй вопрос создавал новый проект , соответственно в офлайне , когда перенес на полную версию , сервер начал ругаться на половину переменных с OPC DA  сервера, передобавил их  уже на полной версии , и все ок , что за глюк не понял , все переменные  вносились в проект , почти одновременно, но ответ на первый вопрос важнее , не охота плодить прямые скрипты
От переноса проекта на полную версию или Demo-Time ничего не меняется, эти версии не отличаются ничем, кроме ограничения по времени работы. Какие именно сообщения выдал сервер касаемо DA-переменных? Можем предположить что это были сообщения о том, что переменная в указанным адресом не существует на OPC-сервере. Если это так, значит на объекте куда Вы перенесли проект на OPC-сервере действительно нет переменных с теми адресами которые Вы указали при разработке проекта. А когда Вы их заново импортировали с OPC-сервера, то адреса считались с OPC-сервера и стали правильными, что логично. Опишем то же самое по шагам:
1. На одном компьютере мы разрабатываем проект. Устанавливаем скаду и OPC-сервер. Создаём на OPC-сервере группу "Group1" и в ней переменную "V1".
2. Импортируем переменную с OPC-сервера в скаду. Скада получит адрес переменной Group1.V1;
3. Запускаем проект и проверяем его в работе. Всё работает.
4. Переходим на другой компьютер. Устанавливаем скаду и OPC-сервер. Создаём на нём группу "Group2" и переменную "V1";
5. Проект мы сделали ранее, пробуем его запустить и получаем ошибку, ведь переменной с адресом Group1.V1 не существует. На новом ПК она имеет адрес Group2.V2;

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

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #877 : 01 Августа 2019, 11:24:55 »
по 1 вопросу , дело было не в скрипте ,а ва отображении элемента ,  и метода просмотра ,в общем в вэб некорректно отображаются элементы , а именно  лампочка , 2) в том то и дело ,что в опс сервере я видел эти переменные со значениями  с плк

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #878 : 01 Августа 2019, 11:42:28 »
Цитировать
по 1 вопросу , дело было не в скрипте ,а ва отображении элемента ,  и метода просмотра ,в общем в вэб некорректно отображаются элементы , а именно  лампочка
Что именно не так с отображением лампочки? В обычном клиенте она скрыта, а в веб видна, или что-то другое?

Цитировать
2) в том то и дело ,что в опс сервере я видел эти переменные со значениями  с плк
Конечно переменные должны быть видны в OPC-сервере. Если они не будут там видны, то в скаду их можно даже не переносить. Прочтите наше сообщение выше, мы описали подробный пример того, как у переменных на двух OPC-серверах можно сделать разные адреса. В OPC-сервере они в обоих случаях будут отображаться, но читать их с OPC-сервера придётся по разным адресам. Нужно же делать так, чтобы проекты на OPC-серверах не отличались, чтобы OPC-клиенты (включая скаду) могли читать теги с OPC-серверов по одним и тем же адресам. Также ещё раз подчеркиваем, что мы не знаем какую ошибку выдавал сервер, поэтому мы только предполагаем что могло произойти. Чтобы сказать что-то подробнее нужно знать текст ошибки которую выдал сервер скады.
« Изменён: 01 Августа 2019, 11:45:31 от Simple-Scada »

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #879 : 01 Августа 2019, 11:55:32 »
у меня был просто красный круг(лампочка)   это я вижу в редакторе и в клиенте , но  в вэб  она теряет свойства  не видимости и отображается так же красным кругом , но (я случайно заметил) при срабатывании управляющего тега у нее появлялся черный контур (когда их 40 штук на экране , его не сразу заметишь) сейчас ушёл просто на круг ,  с ним пока вопросов нет

AJR

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #880 : 01 Августа 2019, 14:40:03 »
Здравствуйте. Подскажите пожалуйста по вопросу. Есть скада, модуль ввода и модуль вывода. Как можно через скаду связать два модуля. То есть, при включении кнопки в модули ввода должна включиться выход на модуле вывода

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #881 : 01 Августа 2019, 15:37:20 »
Здравствуйте. Подскажите пожалуйста по вопросу. Есть скада, модуль ввода и модуль вывода. Как можно через скаду связать два модуля. То есть, при включении кнопки в модули ввода должна включиться выход на модуле вывода

Здравствуйте. Я вообще отговорил бы Вас от этой затеи. SCADA нельзя использовать для связи автономных  модулей.
А если очень хочется то делается это через OPC Server для ваших модулей DI/DO. Переменный из OPC добавьте в SCADA и свяжите их скриптом "Изменились переменные".
Учтите! отключится или зависнит SCADA пропадет связь между двумя устройствами.  Лучше курить в сторону modbus rtu rs485 для связи двух модулей (если они находятся удаленно, то MOXA Вам в помощь)

AJR

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #882 : 01 Августа 2019, 16:44:11 »
Я прекрасно понимаю, что скада не должна управлять. Благо механизм не категоричный, насос воды на башню. Предполагалось, что операторы Бабульки будут включать насос удалённо с большой кнопкой на стене. Работать мышкой они отказываются. Но и мне спокойнее. Если можно привязать тег-кнопку на клавиши на клавиатуре, было бы огонь.
Пысы. Моха. Если показать счёт на моху меня могут посадить за попытку доведения к самоубийству руководителя

AJR

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #883 : 01 Августа 2019, 16:57:04 »
Есть возможность привязать тег на сервере к комбинацию клавиш на клавиатуре? Как это можно организовать?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #884 : 01 Августа 2019, 22:00:05 »
Здравствуйте.

Цитировать
Есть скада, модуль ввода и модуль вывода. Как можно через скаду связать два модуля. То есть, при включении кнопки в модули ввода должна включиться выход на модуле вывода
Как правильно написал deldemo, Вам необходимо импортировать в скаду переменные модуля ввода и модуля вывода с Вашего OPC-сервера. Затем можно создать скрипт по событию "Изменились переменные", добавить в него переменную модуля ввода(как описано в этом примере) и написать скрипт:
Код
begin
  OutputMod.Value := InputMod.Value;
end.
, где InputMod - переменная модуля ввода, OutputMod - переменная модуля вывода. Таким образом, при изменении переменной InputMod ее значение будет записываться в переменную OutputMod.

Цитировать
Есть возможность привязать тег на сервере к комбинацию клавиш на клавиатуре? Как это можно организовать?
К сожалению, такой возможности нет.