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

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

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

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


Сообщения - ZWolol

Страницы: [1] 2 3
1
Ваши вопросы / Re: Работа с таблицами
« : 17 Апреля 2025, 02:45:35 »
Если TagRead срабатывает раньше формирования номера, то нужно использовать задержку для чтения метки.
Или читать номер на изменение меток (но тогда двойной проход тележки будет невозможен).

Красный цвет будет бить по шарам, лучше использовать нейтральный.
Красный сигнализирует аварию (например: когда тележка выезжает раньше времени).
Но, как я понял, выехавшая тележка удаляется из списка.

2
Ваши вопросы / Re: Работа с таблицами
« : 16 Апреля 2025, 15:35:12 »
Добавь в запросы: order by timeCart1

Красный лучше оставь белым.

На счет метки не понял.

3
Судя по описанию от ООО "ТЕХНОСЕРВИС М"
https://tehnoservice-m.ru › logik-33s

У контроллера есть два порта для работы: M15 RS-232, M16 RS-485 и один для связи к компом M3 RS-485.
Ты случайно разъемы не перепутал?

4
Судя по логам ответ приходит через 300 мс, но полная чушь.
На скорости 19200 критична длина кабеля и согласующие терминаторы на концах.
Проверьте скорость передачи прибора, при возможности снизьте ее на 9600 (в двух местах).
Таймаута хватит 1000 мс, а межбайтовый увеличь до 20 мс. (про задержку не знаю).

Так же чушь бывает если перепутать полярность подключения.
И еще, нет ли на линии другого прибора с тем же адресом?

5
Ваши вопросы / Re: Работа с таблицами
« : 10 Апреля 2025, 05:50:53 »
> Способ предложенный ZWolol, рекомендуем не использовать.
Ну что ж так категорично?

Увеличить размер таблицы и уменьшить высоту строки можно, если позволяет размер экрана и читабельность текста.
Получится узкая длинная таблица с пустой остальной частью экрана.
В таких случаях разворачивают монитор вертикально для увеличения количества строк.

Можно сделать на экране две таблицы по 20 строк и каждая будет читать свои данные из базы.
А я предложил буферную таблицу которая позволит считать и разложить данные по ячейкам без скрипта.

> При перезапусках ПК или проекта все расчеты времени будут сбиваться.
А что им сделается в SQL таблице?
Разве что будет долгим перезапуск и просрочат время сушки.
Ну тогда нужно делать на контроллере с панелью.

> считывание меток тележки, запись данных метки в таблицу БД
Я это воспринял как автоматическое с датчика, а если заносится ручками, то смотрите пример @pan2000.

6
Ваши вопросы / Re: Работа с таблицами
« : 08 Апреля 2025, 18:37:51 »
> заполнения таблицы из БД полностью
RunSQL для таблицы заполнит 40 строк по 4 колонки (в соответствии с полученными данными из запроса).

Тебе будет проще сделать две таблицы: 40х4 (не видимую, как буфер для приема) и 20х8 рабочую на экране.
Задай ячейкам таблицы связь с переменными.
В первую (невидимую) таблицу считай данные, они присвоятся указанным переменным.
А во второй таблице эти же переменные укажи в другом порядке (с учетом 20 строк).

Ну а потом уж работай с таблицей с помощью TM_TableCell...

7
На счет обновления понял.
Нам поставили скаду ООО Сибтехинжиниринг <info@sib-te.ru>
Буду выяснять у них про почту и прочее...

На счет тренда:
Я сделал копию с переменной Delta, изменил ей тип на внутренняя переменная.
В скрипт расчета суммарного расхода добавил присвоение этой переменной значения переменной ОРС.
Очистил все таблицы в базе.
В настраиваемой группе выбрал эту переменную и...

Она появилась на тренде, а  переменной ОРС - нет.
Ну вобщем как устранить эту ошибку нашел... :)

8
Спасибо, нашел формат (просто сам немного затупил).

Именно Текстом и пользуюсь.
Я заметил, что его можно задать в Подписи, но отсутствие регулировки отступа и удаление пробелов мне не подошло.


Возник вопрос по TM_TimeTrendViewer.
Одна переменная OPC через некоторое время перестает выводиться на тренде.
График обрывается, хотя на Lectus Modbus OPC она имеет значение и качество Good.

Для проверки сделал вывод значения и качества этой переменной на экран.
Они соответствуют значениям OPC, а на тренде она исчезает.

У нас SCADA 2.6.11.0 подскажите как обновить до 2.7.0.0 ? Нужно писать на супорт ?
Год со дня покупки Professional на 500 тегов прошел, но у нас есть годовая подписка на обновления.

9
Как задать формат для TM_Field ?
По умолчанию он использует для вещественных чисел 0.##

И еще у Подписи зачем-то алтримятся пробелы (удаляются с переди и с зади).

Список Трендов выводится с лева на право.
Приходится задавать их через один, чтоб получились столбцом, не удобно.

10
Все что может случиться, обязательно случится. (Закон Мэрфи).

15 лет назад я предлагал своему начальству изменить название сервера опроса,
но мне запретили это делать потому, что маловероятно, что кто-то назовет свою программу "server.exe" и вот оно случилось!!! :)

Ваш сервер периодически закрывается потому, что наша служба ServerRun следит за работой Server.exe, периодически посылает ему запросы и в случае отсутствия ответов считает его зависшим и перезапускает приложение.
Снимается зависшее приложение с помощью taskkill, вот потому и нет ничего в логах вашего сервера.

Спустя столько времени мне все таки придется переименовать нашу прогу и поправить ServerRun.
Но хоть теперь причина найдена...

11
Ваши вопросы / Re: Ввод данных типа Single
« : 26 Марта 2025, 02:58:41 »
Все дробные переменные хранятся в формате float или double.
У них разное количество действующих знаков и 0.5 float меньше чем 0.5 double.

Если ты сравниваешь переменную float с введенным числом в double, то они не совпадут.
Поэтому дробные значения не сравниваются на равенство.

12
Запустил сервер и клиент на своей машине, а базу указал на сетевом сервере Win64 с SQL 2008 Enterprice (кластерная).
На сервере прилинковал три рабочих SQL сервера Win32 Prifessional (два 2005 и 2012).

И все работает влет.
Только пришлось в настройках линковки отключить все, кроме доступа к данным и RPC.
Там же можно указать имя/пароль для удаленного подключения к серверам (если отличаются).

Даже не вижу необходимости добавлять скаде работу с несколькими серверами если все решается на уровне операционки.

P.S.
У меня стоит 5 сек на повторе скрипта с запросом SELECT, но в реале получается 7 сек.

13
Связал два сервера SQL 2008 Enterpice.
Сделал запрос с выводом данных в TM_Table:
Код: (delphi)
sQuery:= 'SELECT ID_Channel,MeasureDate,Value,State FROM [ASDK-VZ2].Telemera.dbo.Currents;';
tblMy.RunSQL(sQuery, tsSaveFixRow);
Выводит ошибку:

Invalid use of schema or catalog for OLE DB provider "SQLNCLI10" for linked server "ASDK-VZ2". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.
The OLE DB provider "SQLNCLI10" for linked server information about the error.

В SQL Менеджере видно таблицы, но при запросе:
Код
SELECT [ID_Channel]
      ,[MeasureDate]
      ,[Value]
      ,[State]
  FROM [ASDK-VZ2].[Telemera].[dbo].[Currents]
GO
Выдает:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "SQLNCLI10" for linked server "ASDK-VZ2" reported an error. The provider did not give any information about the error.
Msg 7312, Level 16, State 1, Line 1
Invalid use of schema or catalog for OLE DB provider "SQLNCLI10" for linked server "ASDK-VZ2". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.

С чем это связано и что надо посмотреть?

P.S.
Установил виртуал бокс, на нем прилинковал базу и прочитал данные!!!
Извиняюсь за беспокойство.
Видимо есть какая-то хрень на моей машине... :(

14
Насколько я помню, то формат DECIMAL(X,Y) используется в DBF файлах.
Там все числа хранятся в текстовом виде.

В SQL то же можно указать этот формат, но в результате получится FLOAT или DOUBLE.
Количество знаков после запятой будет зависеть от количества действующих знаков целой части.
Округляйте получаемые значения до нужного знака и архивируйте эти значения.

15
Int дает EXTENDED, и преобразовывать нужно оператор деления, а не результат.

sunriseMinutes:=integer(sunrise*60) div 60;

P.S.
Только Div не любит преобразование типа (это зависит от оптимизации компилятора).
Например, на Lazarus ругается, что первый элемент не может быть Double.

Лучше используй i:= integer(sunrise*60); и её подставляй для Div.

P.S.S.
А чем тебя это не устраивает?: sunriseMinutes:=integer(sunrise);

Страницы: [1] 2 3