Стартовая страница › Форумы › Понять, как работает ПО › Настройка модуля импорта из сторонней БД
- В этой теме 15 ответов, 5 участников, последнее обновление 5 лет, 3 месяца назад сделано
Mikhail.
-
АвторЗаписи
-
22.06.2019 в 05:17 #12368
TawУчастникПодключился к БД.
Выполняю Sql запрос “SELECT ValueX FROM tovars”
1)Но почему импортируется в канал только одно первое значение из БД из столбца ValueX (значение 2)?

2)И какую роль играет Tag count?
3) Меняется значение в первой строке таблицы БД и в канале Скады тоже меняется значение. Получается должна быть однострочная таблица и значение строки таблицы завязывается на значение канала?-
Тема изменена 7 лет, 1 месяц назад пользователем
Mikhail.
22.06.2019 в 10:22 #12371Romiros
Участник1. Так и должно быть.
2. Для сложных запросов, чтобы установить точное количество тегов.
3. Нет. Таблица может быть многострочной.Ваша таблица должна содержать идентификатор записи по которому можно отличить данные одного канала от другого. Соответственно sql запрос тоже должен содержать идентификатор записи. Запрос, который у Вас сейчас будет всегда возвращать лишь одно значение, по ому что он не понимает чем они отличаются. И так как это импорт текущих данных, а не архивов, то SqlDataReader берет только первое значение из датасета. Или сделайте нормальную таблицу по примеру тех что создаются для модуля экспорта в БД или же напишите правильный запрос к существующим таблицам БД.
P.S. Ваши темы с с модулями и драйверами для подключения к БД лучше создавать в разделе «Понять как работает ПО» а не в «Разработка и интеграция», поскольку Вы ничего не разрабатываете а используете штатные модули.-
Ответ изменён 7 лет, 1 месяц назад пользователем
Romiros.
22.06.2019 в 11:06 #12373
baurУчастниктут надо использовать where с ключем, если идентификатор все время меняется, то использовать top(n) с сортировкой или агрегатные функции как: min, max и т.д.
22.06.2019 в 11:19 #12380
MikhailМодераторНо почему импортируется в канал только одно первое значение из БД
Драйвер извлекает текущие данные — он предназначен для работы только с текущими данными. ПОэтому, если выборка возвращает несколько строк, то берётся 1-я строка.
22.06.2019 в 11:21 #12382
MikhailМодераторПеренёс топик в более подходящий раздел, т.к. обсуждается существующий драйвер.
30.03.2021 в 10:47 #18952Tialion
УчастникЗдравствуйте. В продолжение темы, чтоб не плодить новые. Вроде настроил все, но не работает, а в логах вижу ошибку в DcsdsComm/Log/line002.log —
2021-03-30 10:33:00 Сеанс связи с КП 2 «KP1», тип: KpDbImport
Нормальное взаимодействие с КП невозможно, т.к. SQL-команда не определенаКоманда естественно прописана

Подскажите в чем ошибка?
30.03.2021 в 17:46 #18960
MikhailМодераторДобрый день!
Найдите файл настройки КП в рабочей директории C:\SCADA\ScadaComm\Config
Действительно ли настройка заполнена?
Посмотрите в журнале линии связи, может быть при старте линии при загрузке настроек были какие-то ошибки31.03.2021 в 08:38 #18964Tialion
УчастникВ /opt/scada/ScadaComm/Config есть 3 файла
KpDbImport_002.xml
KpDbImport_003.xml
ScadaCommSvcConfig.xml
Содержиое xml для 2 КП
<?xml version=»1.0″ encoding=»utf-8″?>
<KpDbImportConfig>
<DataSourceType>PostgreSQL</DataSourceType>
<DbConnSettings>
<Server>192.168.37.97</Server>
<Database>postgres24</Database>
<User>postgres</User>
<Password>55BFAC04A558EE5E5D350A688BF563E2</Password>
<ConnectionString />
</DbConnSettings>
<SelectQuery>select * from parametr_25_2660;
</SelectQuery>
<AutoTagCount>false</AutoTagCount>
<TagCount>2</TagCount>
<ExportCmds>
<ExportCmd>
<CmdNum>1</CmdNum>
<Name>1</Name>
<Query>select * from parametr_25_2660;</Query>
</ExportCmd>
</ExportCmds>
</KpDbImportConfig>Вроде все на месте.
Журнал линий связи — это /opt/scada/ScadaComm/Log/ScadaCommSvc.txt ?
Если да то
SCADA-Коммуникатор
——————
Запуск : 30.03.2021 10:32:48
Время работы : 22:03:02
Состояние : норма
Версия : 5.2.1.2
SCADA-Сервер : версия 5.1, авторизация успешнаАктивные линии связи
———————
1. Линия 1 «My Line» : цикл работы
2. Линия 2 «Line1» : цикл работытам же есть файлы line002.log
2021-03-31 08:37:12 Сеанс связи с КП 2 «KP1», тип: KpDbImport
Нормальное взаимодействие с КП невозможно, т.к. SQL-команда не определенаи line002.txt
Линия 2 «Line1»
—————
Состояние : цикл работы
Действие : 31.03.2021 8:37:14 Сеанс связи с КП 2 «KP1»Пользовательские параметры
—————————
НетОбщие свойства
—————
НетАктивные КП
————
1. КП 2 «KP1» : ошибка31.03.2021 в 16:06 #18975
MikhailМодераторЖурнал линии связи — это line*.log
Посмотрите ошибку (если есть) сразу после рестарта линии. Вероятно, проблема при считывании конфигурации КП.-
Ответ изменён 5 лет, 4 месяца назад пользователем
Mikhail.
31.03.2021 в 16:21 #18977
MikhailМодераторПример файла C:\SCADA\ScadaComm\Config\KpDbImport_002.xml
<?xml version="1.0" encoding="utf-8"?> <KpDbImportConfig> <DataSourceType>PostgreSQL</DataSourceType> <DbConnSettings> <Server>localhost</Server> <Database>rapid_scada</Database> <User>postgres</User> <Password>...</Password> <ConnectionString /> </DbConnSettings> <SelectQuery>select * from cloud_pack.cloud_user;</SelectQuery> <AutoTagCount>false</AutoTagCount> <TagCount>2</TagCount> <ExportCmds /> </KpDbImportConfig>01.04.2021 в 08:30 #18979Tialion
Участниквсе так и есть. я выше файлы выложил. Ошибки сразу после рестарта линии. Единственное но — пароль хранится в зашифрованном виде в файле? Если да, то все так, а не работает.
01.04.2021 в 15:59 #18989
MikhailМодераторПароль хранится в XML в зашифрованном виде.
Скопируйте, пожалуйста, лог с самого начала после перезапуска линии, чтобы был виден момент перезапуска.02.04.2021 в 09:28 #19011Tialion
Участник/etc/init.d/scadacomm stop
удалил все в /opt/scada/ScadaComm/Log
/etc/init.d/scadacomm startсодержимое line002.log
———————————————————————————
2021-04-02 09:26:17 Инициализация линии связи 2 «Line1»
2021-04-02 09:26:17 Ошибка при выполнении действий КП 2 «KP1» при добавлении КП на линию связи: Could not load type of field ‘Npgsql.NpgsqlConnection:CertificateSelectionCallback’ (9) due to: Could not resolve type with token 01000058 from typeref (expected class ‘Mono.Security.Protocol.Tls.CertificateSelectionCallback’ in assembly ‘Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756’) assembly:Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 type:Mono.Security.Protocol.Tls.CertificateSelectionCallback member:(null)
2021-04-02 09:26:18 Запуск линии связи 2 «Line1»2021-04-02 09:26:18 Сеанс связи с КП 2 «KP1», тип: KpDbImport
Нормальное взаимодействие с КП невозможно, т.к. SQL-команда не определена02.04.2021 в 17:01 #19025
MikhailМодераторУже лучше. Посмотрите, лежит ли у Вас библиотека Mono.Security в директории KP
Если лежит, удалите. Если не лежит, добавьте (её можно взять из Windows дистрибутива).В следующей версии перейдём на новую версию Npgsql и подобная проблема должна исчезнуть.
05.04.2021 в 11:31 #19032Tialion
УчастникПопробовал. Теперь в line002.log следующее
———————————————————————————
2021-04-05 11:30:15 Инициализация линии связи 2 «Line1»
2021-04-05 11:30:15 Запуск линии связи 2 «Line1»2021-04-05 11:30:15 Сеанс связи с КП 2 «KP1», тип: KpDbImport
Ошибка при соединении с БД: Could not load type of field ‘System.Net.Security.SslStream:provider’ (0) due to: Could not resolve type with token 01000030 from typeref (expected class ‘Mono.Security.Interface.MonoTlsProvider’ in assembly ‘Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756’) assembly:Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 type:Mono.Security.Interface.MonoTlsProvider member:(null)
Ошибка при соединении с БД: Could not load type of field ‘System.Net.Security.SslStream:provider’ (0) due to: Could not resolve type with token 01000030 from typeref (expected class ‘Mono.Security.Interface.MonoTlsProvider’ in assembly ‘Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756’) assembly:Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 type:Mono.Security.Interface.MonoTlsProvider member:(null)
Ошибка при соединении с БД: Could not load type of field ‘System.Net.Security.SslStream:provider’ (0) due to: Could not resolve type with token 01000030 from typeref (expected class ‘Mono.Security.Interface.MonoTlsProvider’ in assembly ‘Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756’) assembly:Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 type:Mono.Security.Interface.MonoTlsProvider member:(null)2021-04-05 11:30:17 Сеанс связи с КП 2 «KP1», тип: KpDbImport
Ошибка при соединении с БД: Could not load type of field ‘System.Net.Security.SslStream:provider’ (0) due to: Could not resolve type with token 01000030 from typeref (expected class ‘Mono.Security.Interface.MonoTlsProvider’ in assembly ‘Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756’) assembly:Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 type:Mono.Security.Interface.MonoTlsProvider member:(null)
Ошибка при соединении с БД: Could not load type of field ‘System.Net.Security.SslStream:provider’ (0) due to: Could not resolve type with token 01000030 from typeref (expected class ‘Mono.Security.Interface.MonoTlsProvider’ in assembly ‘Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756’) assembly:Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 type:Mono.Security.Interface.MonoTlsProvider member:(null)
Ошибка при соединении с БД: Could not load type of field ‘System.Net.Security.SslStream:provider’ (0) due to: Could not resolve type with token 01000030 from typeref (expected class ‘Mono.Security.Interface.MonoTlsProvider’ in assembly ‘Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756’) assembly:Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 type:Mono.Security.Interface.MonoTlsProvider member:(null) -
Тема изменена 7 лет, 1 месяц назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.