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

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

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

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


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

Страницы: 1 ... 16 17 [18] 19 20
256
Добрый день!
В новостях последнего обновления у таблицы появился ряд интересных свойств и событий.
Хотелось бы получить информацию (например пару примеров) о таких событиях как OnCellDatachange и OnCellClick.
Если готовите описание в хэлп-онлайн подождем.
А также хотелось бы уточнить входят ли эти события в версию Demo (time limit) v2.3.3.0?

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

258
Да смогу.

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

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

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

261
Продолжение. В базе нашли данные.
Получилось следующая ситуация. До изменения переменная var_120 имела id = 1087, после изменения имени и привязки к ОРС, id изменился на 2068. Это мы предполагаем исходя из архива запросов к базе данных и текущей конфигурации скады. Есть точная дата изменения. Есть данные для id = 1087 до этой даты и есть данные для id = 2068 после этой даты.
Можно объединить эти данные через UPDATE в самой базе с заменой id .
Вопрос. Данная процедура может повредить уже за архивированные данные?

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

263
Добрый день!
Кратко о ситуации.
Было:
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. Можно ли проверять целостность базы данных средствами скады?

264
Ваши вопросы / Re: Текст внутри SQL запроса
« : 02 Ноября 2018, 14:51:06 »
Спасибо за решения. В понедельник проверим на объекте.

265
Ваши вопросы / Re: Текст внутри SQL запроса
« : 02 Ноября 2018, 14:19:39 »
Товарищи!
Терпение и труд все перетрут.
Решение после ряда экспериментов нашел следующее (может кому и пригодиться) :
Код: (delphi)
var
  aQuery: string;
  var:string;
begin
  var:='test';
  { Формируем запрос к БД }
  aQuery := 'SELECT * FROM  recipes WHERE ID = ' + Chr(39) + var + Chr(39) +';';
  { Отправляем запрос на выполнение c тегом = 1}
  RunSQL(aQuery, nil, 1);
end.
В предыдущей записи в конце забыл поставить ;.
Если вместо var использовать внешнею переменную можно разработать интересные скрипты с заменой.
Тема закрыта.

266
Ваши вопросы / Текст внутри 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. Но это если надо подставить, а нужно подставить текст в кавычки внутрь запроса, который сам в кавычках.
Подскажите куда смотреть.


267
Ваши вопросы / Re: Побитовое AND
« : 02 Октября 2018, 15:53:59 »
Ребята зря Вас тревожил.
Данный пример работать будет.
У меня был косяк в определении индексов для case.
Вопрос закрыт.

268
Ваши вопросы / Побитовое 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-ой группой переменных.
Подскажите что делаю не так?

269
Ваши вопросы / Внутренние и внешние теги
« : 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. Почему?
Проверьте у себя. Возможно что- то делаю не так. Жду Ваших ответов или вопросов.

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

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