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

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

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

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


Сообщения - Серега

Страницы: 1 ... 15 16 [17] 18 19 20
241
Ваши вопросы / Объект и все такое
« : 26 Апреля 2019, 13:53:49 »
Добрый день!
Подскажите можно ли в скаде в скрипте создать объект, например окружность.
Для чего это нужно.
В таблице задаются значения параметров и если их много, то довольно сложно определить ошибку ввода неправильного значения.
Но если каждое значение представить в виде точки и построить между ними линии соединения, то можно быстро выявить не соответствующие значения (визуально).
Повторюсь можно ли в скрипте, кроме как объявив переменную как объект, объявить объект?

242
Ваши вопросы / Re: После обновления. Case ...
« : 09 Апреля 2019, 11:50:39 »
Спасибо и за ответ и за реакцию! Молодцы!!!

243
Ваши вопросы / После обновления. Case ...
« : 09 Апреля 2019, 11:21:23 »
Добрый день!
После обновления возникло 2 вопроса.
1. С Case и текстовыми значениями переменной перехода. С помощью описания и перевода на if все решилось.
Но вот 2-ая проблема пока не понятно.
В данном скрипте (ниже, имя "ResetTableAllSQLmessage")
Код: (delphi)
begin
  case DataSet.Tag of
    1, 2, 3           :tblRecipes.RunSQL('текст запроса', tsSaveFixRow);
    4, 5, 19         :tblVehicles.RunSQL('текст запроса', tsSaveFixRow);
    10,11,18       :tblWays.RunSQL('текст запроса', tsSaveFixRow);
    12                 :begin
                           tblSort.RunSQL('текст запроса '+
                           'текст запроса '+ QuotedStr(tblGeoWay_TextSelectString.AsStr) +'текст запроса', tsSaveFixRow);
                         end;
    13                 :begin
                            tblSort.RunSQL('текст запроса '+
                            'текст запроса'+ QuotedStr(tblVehicles_TextSelectString.AsStr) +' текст запроса', tsSaveFixRow);
                         end;
    14,15,16,17  :tblGeometryWays.RunSQL('текст запроса '+ Chr(96) + UpdateInfo.AsStr + Chr(96), tsSaveFixRow);
    17,20,21,22  :tblWaysLimits.RunSQL('текст запроса '+ Chr(96) + UpdateInfoLimits.AsStr + Chr(96), tsSaveFixRow);
    23,24,25       :tblRoutes.RunSQL('текст запроса', tsSaveFixRow);
  end;
end.
происходит следующее. F9 компиляция проходит. Ctrl + S (сохранить) выдает "... проект сохранен, но некоторые скрипты не компилируются..." и дополнительно сообщение  " [ResetTableAllSQLmessage] "begin" not found "
Если убрать пару begin ... end в 12 и 13 пункте и компиляция и сохранение проходят без ошибок.
Жду Ваших предположений о причине

244
Ваши вопросы / Хранимые процедуры
« : 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
и получаем соответсвующий набор данных
Немогли бы Вы привести пример как это сделать выхов хранимой процедуры в скаде.

245
Добрый день!
Вопрос так сказать в теме. Но задам в развернутом виде :)
Можно ли в 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.

246
Спасибо за ответ!
Кроме вашего способа делали отдельный проект с непонятным скриптом с заменной внешних переменных на локальные скрипта. Ну а дальше думали в чем проблема

247
Добрый день!
Рассматривался ли вопрос об организации активации/деактивации скриптов?
Поясню. Со временем проект разрастается. Скриптов становиться больше. Функционал добавляется. И вдруг - ошибка! Проект не компилиться.
Можно было бы выделить (приблизительно как у Вас сделано выделение трендов) один не рабочий скрипт и отлаживать только его.
Надеюсь идея понятна? Жду ответа!

248
Спасибо за ответ!
Можете мне не верить. Об этой команде мельком где-то увидел. В поиске искал "запуск внешней программы", а не "запуск внешних программ".
Просмотрел и руководство скриптов. Во  именно "просмотрел"  ;D. И пытался на форуме в Вопросах по названию темы искать. И  тоже "просмотрел".
Но все равно спасибо.
Думаю данную тему можно удалить.

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


250
Ваши вопросы / Re: Фокус на объект
« : 21 Декабря 2018, 12:55:38 »
Добрый день!
Спасибо за ответ.
Пока ждали ответ, в ходе тестов на 99% стали уверенными, что фокуса нет, а есть скрипты на клиенте и сервере. Но Ваш ответ придал нам уверенности.  ;D
Жаль конечно придется концепцию менять. Хотя это даже к лучшему. Ну а с таблицей будем пробовать.
Еще раз спасибо.

251
Ваши вопросы / Взаимодействие с 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
По работе всякие разные идеи привык проверять сначала на ноуте и если все работает без сучка и задоринки переношу на рабочую систему. А тут затык какой-то.
Помогите разобраться в чем собака зарыта.

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

253
Ваши вопросы / Фокус на объект
« : 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 и не меняется. Используется ли в скриптах или свойствах объектов привязка к экрану или есть механизм фокуса на объекте? Возможно поэтому секундный скрипт и не работает поскольку "не знает своей привязки"?
Задавайте вопросы.

254
Да смогу.

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

В новый проект добавил переменные из "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.

Страницы: 1 ... 15 16 [17] 18 19 20