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

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

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

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


Темы - Серега

Страницы: 1 ... 7 8 [9] 10
121
Ваши вопросы / Хранимые процедуры
« : 08 Апреля 2019, 13:28:45 »
Добрый день!
В руководстве написанно "Скрипты Simple-Scada позволяют выполнять любые SQL-запросы с последующей обработкой результата. Выполнить SQL-запрос можно используя процедуру RunSQL, а обработать результат можно в любом скрипте с типом события "Выполнен SQL-запрос".
Вопрос следующий. Как выполнить вызов хранимой процедуры в скаде?
Например возьмем процедуру
CREATE DEFINER=`root`@`localhost` PROCEDURE `Test`()
SELECT * FROM etp_scada_bd_valfa.tbl_tc

В MySQL (в скаде есть ее поддержка) запускаем
Call Test
и получаем соответсвующий набор данных
Немогли бы Вы привести пример как это сделать выхов хранимой процедуры в скаде.

122
Добрый день!
Вопрос так сказать в теме. Но задам в развернутом виде :)
Можно ли в 1 секундном (а так же и в часовом) типе скрипта использовать оператор CASE при написании procedure?
После ряда тестов с разными типами скриптов (универсальный, по изменению переменных) возникает более глобальный вопрос можно ли вообще использовать CASE в процедуре?
Может быть посоветуете что?
В принципе задача простая вопрос-ответ. Сервер посылает запрос на ПЛК. В зависимости от ответа ПЛК - переход к нужному набору действий.
ПЛК будут добавляться. Отличить их можно например по имени чего нибудь (например наименование переменных). Использование процедуры для повторяющегося кода и переход по шагам в CASE смотриться как весьма простой и действенный способ реализации.
Жду Вашего ответа.

Вообщем решение нашли. При указании параметров процедуры через ":" надо указывать TM_Variable. Т.е.:
Код: (delphi)
procedure test(testvar:TM_Variable);
begin
  testvar.value:=testvar.value + 1;
end;
begin
  test (qwe) //где qwe - внешняя переменная
end.

123
Добрый день!
В принципе вопрос в теме.
Для чего это надо:
1. есть стороннее ПО (глючит, но работает). Требуется ее запустить, поставить ряд галочек, сохранить и закрыть. Периодически. Есть разные способы, но хотелось бы ограничить возможности оператора и делать запуск через скаду.
2. да в отчетах можно данные перегнать в excel. но просто интересно можно запустить сам excel или тот же paint.


124
Ваши вопросы / Взаимодействие с OPC Insat
« : 21 Декабря 2018, 12:46:25 »
Добрый день!
Дано: Рабочий ноут в домене. Simple-Scada v2.3.3.0 Demo (time limit). Multi-Protocol MasterOPC Server Demo 1 hour v4.3.31.
Надо: Получить данные с OPC-UA в SCADA.
В ходе тестов выявил следующее:
1. Если Editor запущен под обычным пользователем обнаружить OPC не удается. Выдает сообщение о проверке Endpoint URL, проверки протокола безопасности, пользователя и пароля и т.д. Но если каждый раз запускать Editor от имени администратора (через контекстное меню) все получается. Уточнение: обычный пользователь = администратору, это мои учетные данные одни и те же. (Надеюсь понятно объяснил). Эта же ситуация повторяется и при импорте переменных с OPC.
2. Импорт произвели. Данные в SCADA выведены на мнемосхему. Но знак ! говорит о том, что данные не доходят. Хотя OPC запущен, данные меняются, OPCUA протокол настроен (порт, без безопасности, без парольный доступ). Но в самом сервере SCADA во вкладке "OPC-серверы" состояние настроенного сервера OPCUA "отключен".
Если использовать в OPCUA для подключения пользователя и пароль, дополнительно на сервере выскакивает сообщение:
Цитировать
+ The error occurred while checking the (client) application instance certificate. Check event log entries for errors and warnings. The certificate generator path was "C:\Program Files (x86)\Simple-Scada 2 (time-demo)\Opc.Ua.CertificateGenerator.exe".
+ This is an engine-level error
По работе всякие разные идеи привык проверять сначала на ноуте и если все работает без сучка и задоринки переношу на рабочую систему. А тут затык какой-то.
Помогите разобраться в чем собака зарыта.

125
Добрый день!
В новостях последнего обновления у таблицы появился ряд интересных свойств и событий.
Хотелось бы получить информацию (например пару примеров) о таких событиях как OnCellDatachange и OnCellClick.
Если готовите описание в хэлп-онлайн подождем.
А также хотелось бы уточнить входят ли эти события в версию Demo (time limit) v2.3.3.0?

126
Ваши вопросы / Фокус на объект
« : 20 Декабря 2018, 11:21:22 »
Добрый день!
Ситуация.
Есть таблица. В ней отображаются данные SQL запроса. Необходимо из первого (начинаем отсчет с 0) столбца таблицы и выделенной строки взять текст ячейки на пересечении (если нет выделенной то значение RowIndex = -1).
После этого добавить к этому тексту следующий текст "_SPI_Set" и присвоить это переменной, которая используется для подмены переменных.
Есть 2 скрипта универсальный (привязан к кнопке) и секундный. Пытались сделать одинаковые (по смыслу и тексту) скрипты.
Надеюсь понятно объяснил.
Теперь вопросы.
В1. Выражение var:=table.Columns(1).Cells(table.RowIndex).Text +  "_SPI_Set", где var:string, Text: UTF8String  считаем текст в скобочках тоже string в универсальном скрипте работает, в секундном нет. При этом если использовать преобразование типов UTF8toStr секундный все равно не работает. Почему?
В2. Поставили маяки значений. Вывели на экран. Кратко - использовали if. Т.е.:
Код: (delphi)
...
  metka := $FFFF;
  if True then
    metka := $F000
  else
    begin
      metka := $000F;
      exit;
    end;
...
В результате значение metka:=$FFFF не увидели. Предполагаем это происходило во время перезапуска проекта. По кнопке универсальный скрипт работает. Секундный нет, вернее всего скорей работает поскольку значение metka:=$000F и не меняется. Используется ли в скриптах или свойствах объектов привязка к экрану или есть механизм фокуса на объекте? Возможно поэтому секундный скрипт и не работает поскольку "не знает своей привязки"?
Задавайте вопросы.

127
Здравствуйте!

В новый проект добавил переменные из "MasterOPC Universal Modbus Server" OPC-UA. Вывел отображения переменных на экран. Запустил MasterOPC OPC-UA, проект Simple-Scada, Client-Scada. Всё работает без ошибок.
В этот же проект добавил скрипт, вызываемый по изменению переменной. Сама переменная не изменяется в этом скрипте. В OPC-UA эта переменная опрашивается раз в 100 мс. При запуске MasterOPC OPC-UA и Server Simple-Scada, Server Simple-Scada зависает. При остановке MasterOPC OPC-UA, Server Simple-Scada развисает.

Из Server_log:
Код
[00000000ms]localhost:55007/MBUAServer/: T_U4220T2_PSS_wHeartBeat_Set. The OPC-UA subscription ID 2703213232 publishing has halted on the client session to endpoint URL "opc.tcp://localhost:55007/MBUAServer/" for approximate current duration of 24813 milliseconds. The current keep-alive count is 100, the current publishing interval is 100 milliseconds, and the probationary period was 5000 milliseconds.
[00000000ms]localhost:55007/MBUAServer/: W_A1_Charge_OffPlace_CmdOn. The OPC-UA subscription ID 2966792152 publishing has halted on the client session to endpoint URL "opc.tcp://localhost:55007/MBUAServer/" for approximate current duration of 14875 milliseconds. The current keep-alive count is 10, the current publishing interval is 500 milliseconds, and the probationary period was 5000 milliseconds.
[00000000ms]localhost:55007/MBUAServer/: An error specific to OPC-UA service occurred.
---- SERVICE RESULT ----
StatusCode: {BadNoCommunication} = 0x80310000 (2150694912)
Description: Server not responding to keep alive requests.

[00000000ms]localhost:55007/MBUAServer/: W_P1_STR1_MOTOR1_Frequency. An error specific to OPC-UA service occurred.
---- SERVICE RESULT ----
StatusCode: {BadNoCommunication} = 0x80310000 (2150694912)
Description: Server not responding to keep alive requests.

---- SERVICE RESULT ----
StatusCode: {BadSecureChannelClosed} = 0x80860000 (2156265472)
Description: BadSecureChannelClosed
AdditionalInfo: >>> BadSecureChannelClosed
---    в Opc.Ua.Bindings.TcpAsyncOperation`1.End(Int32 timeout)
---    в Opc.Ua.Bindings.TcpClientChannel.EndSendRequest(IAsyncResult result)
---    в Opc.Ua.Bindings.TcpTransportChannel.EndSendRequest(IAsyncResult result)
---    в Opc.Ua.SessionClient.EndPublish(IAsyncResult result, UInt32& subscriptionId, UInt32Collection& availableSequenceNumbers, Boolean& moreNotifications, NotificationMessage& notificationMessage, StatusCodeCollection& results, DiagnosticInfoCollection& diagnosticInfos)
---    в Opc.Ua.Client.Session.OnPublishComplete(IAsyncResult result)
-----
StatusCode: {BadSecureChannelClosed} = 0x80860000 (2156265472)
---- REMARKS ----
The server may have rejected the connection because it does not trust the client (e.g. certificate problem); check the diagnostics on the server side, if possible.
A possible cause of this error could also be that the OPC-UA server is not running, or that it has rejected the connection due to security reasons.

[00000000ms]localhost:55007/MBUAServer/: (no description available) = BadConnectionClosed.
В списке ошибок нет имени переменной с которой связан скрипт.
В скрипте нет ошибок по скольку этот же скрипт работает с другим OPC DA.

128
Ваши вопросы / Скрипт "Ошибка SQL запроса"
« : 05 Декабря 2018, 16:11:42 »
Добрый день!
В принципе вопрос озвучен в заголовке темы.
Из хэлпа не совсем понятно как работает данный тип скрипта.
Не могли бы Вы привести пример или более подробно описать принцип работы.

129
Добрый день!
Сегодня решил посмотреть как работает отображение границ для аналогового сигнала.
После ряда экспериментов стало понятно что:
1. Необходимо установить шкалу
2. Настроить в переменной 2ую закладку с границами.
Все работает.
Вот только я понял для элемента таблица (для конкретной ячейки и таблицы в целом) данный механизм не работает.
Не могли бы Вы прояснить ситуацию.

130
Добрый день!
Кратко о ситуации.
Было:
arOPC: переменная var_120.
SimpleScada: внеш. переменная Var_120. Адрес в ОРС var_120. ID переменной 2103 (Возможно был другой. См. вопросы). Архивация настроена
По стечению обстоятельств необходимо было поменять и в ОРС и в скаде имя переменной на var_121.
После изменений:
arOPC: переменная var_121.
SimpleScada: внеш. переменная var_121. Адрес в ОРС var_121. ID переменной 2103.
Пропали данные архивирования переменной за диапазон времени.
Вопрос№1. Может ли изменяться id переменной?
Вопрос№2. Можно ли проверять целостность базы данных средствами скады?

131
Ваши вопросы / Текст внутри SQL запроса
« : 02 Ноября 2018, 13:23:44 »
Добрый день!
Вопрос. База MySQL.
Запрос:
SELECT * FROM recipes WHERE ID = 'test'
В базе выполняется. Результат то что нужно. При переносе в скаду возникает затык с кавычками. Т.е.:
Код: (delphi)
var
  aQuery: string;
begin
  { Формируем запрос к БД }
  aQuery := 'SELECT * FROM  recipes WHERE ID = 'test';'
  { Отправляем запрос на выполнение c тегом = 1}
  RunSQL(aQuery, nil, 1);
end.
В примерах используется переменная типа string. Но это если надо подставить, а нужно подставить текст в кавычки внутрь запроса, который сам в кавычках.
Подскажите куда смотреть.


132
Ваши вопросы / Побитовое AND
« : 02 Октября 2018, 13:51:25 »
Добрый день!
Столкнулся со "странной" работой оператора AND.
Есть ряд переменных.
1 группа - тестовые, заведены в симуляцию в arOPC и скаду. val1 и val2, тип smallint.
2 группа - реальные, из ПЛК, заведены в arOPC и скаду. val1_1 и val2_1, тип smallint.
3 группа - одна переменная для вывода значения функции, summa:longword и одна переменная временная test:smallint.
Есть 1 секундный скрипт. В нем ряд действий.
1-ое. Определение функции и ее вызов.
2-ое. Сложение двух переменных через AND
Код: (delphi)
  function Read (Place:smallint; Ready:smallint):longword;
  var
    PlaceReady := longword;
    medium: integer;
  begin
    medium := Place AND Ready;
    PlaceReady := medium Shl 24;
    if (Ready > 0) AND (Place > 0) then
      Result:= PlaceReady
    else
      Result:= 0;
  end;
begin
  count := count +1;
  if count = 5 then count := 0;
  case count of
    1: summa.value := Read (val1.value, val2.value);
    2: summa.value := Read (val1_1.value, val2_1.value);
  end;
  test.value := val1.value AND val2.value;                           // [b]2-ое[/b]
  test.value := val1_1.value AND val2_1.value;                       // [b]действие[/b]
end.
Вопрос следующий.
2-ое действие работает и с переменными из 1-ой группы и со 2-ой группы
1-ое действие работает только с 1-ой группой переменных.
Подскажите что делаю не так?

133
Ваши вопросы / Внутренние и внешние теги
« : 12 Сентября 2018, 18:28:45 »
Добрый день!
Возможно тема не для этой ветки. Можно смело переносить.
Вопрос следующий.
Дано:
arOPC. Симуляция. 3 переменные (var1, var2, result : word). Диапазон изменения var1 и var2 0..12.
SCADA: те же переменные, объявлены как внешние с привязкой к OPC. Переменная result1 объявлена как внутренняя.
Надо:
При установке любого бита в переменных var1 и var2 установить соответствующие биты в result либо в 1 либо в 0 согласно правилу. Например var1 принимает значение 210 (102) и var2 принимает 010. Соответственно result должен из значения 1111 1111 1111 11112 принять значение 1111 1111 1111 11012.
Простой скрипт (односекудный):
begin
result1.value := NOT (var1.Value or var2.Value); (так же пробовали и с .AsInt)
result.value := NOT (var1.Value or var2.Value);
end;
Вопросы:
1. result1.value := NOT (var1 or var2); - работает, но есть вопрос №2. result.value := NOT (var1 or var2); - не работает.
2. Все переменные типа word (согласно руководству Word 16 бит Положительные целые числа 0…65535). НО result1 = -1. Почему?
Проверьте у себя. Возможно что- то делаю не так. Жду Ваших ответов или вопросов.

134
Добрый день!
Ситуация следующая. При импорте переменных из arOPC переменные скады формируются по деволту. Одно из свойств это архиация и его значение "Не архивировать". Но у нас есть механизм экспорт\импорт и быстро в excel это можно поправить. Но есть несколько НО...
1. Экспортируются все переменные из проекта.
Предложение№1. Если переменные распределены по группам (например цех№1, цех№2, гидростанция) и надо обновить поле архивации переменных только из группы гидростанция. Можно сделать только экспорт этой группы?
2. Нюансы с клавишей Shift при импорте. При удалении всех групп, подгрупп и переменных из проекта импорт проходит на ура. При импорте для обновления переменных (опять же всех переменных проекта, а не какой-то конкретной группы) зажимаем Shift, нажимаем импортировать, в следующем окне идет подтверждение что надо сделать (импортировать группы, переменные и т.д.). Если не удалять группы, подгруппы и переменные, то добавляются пустые группы и подгруппы, которые можно удалить ручками, но как то это не то. Переменные обновляются как надо.
Предложение№2. Проверьте у себя на стенде. 
Жду ответа.

135
Ваши вопросы / Про связь с OPC
« : 15 Августа 2018, 13:46:05 »
Добрый день!
На одном из клиентов не отображаются восклицательные знаки, говорящие об отсутствии связи с OPC сервером. Подскажите с чем может быть это связанно?

Страницы: 1 ... 7 8 [9] 10