Стартовая страница › Форумы › Понять, как работает ПО › Настройка модуля импорта из сторонней БД
- В этой теме 15 ответов, 5 участников, последнее обновление 3 года назад сделано Mikhail.
-
АвторСообщения
-
22.06.2019 в 05:17 #12368TawУчастник
Подключился к БД.
Выполняю Sql запрос “SELECT ValueX FROM tovars”
1)Но почему импортируется в канал только одно первое значение из БД из столбца ValueX (значение 2)?
2)И какую роль играет Tag count?
3) Меняется значение в первой строке таблицы БД и в канале Скады тоже меняется значение. Получается должна быть однострочная таблица и значение строки таблицы завязывается на значение канала?- Эта тема была изменена 4 года, 10 месяцев назад от Mikhail.
22.06.2019 в 10:22 #12371RomirosУчастник1. Так и должно быть.
2. Для сложных запросов, чтобы установить точное количество тегов.
3. Нет. Таблица может быть многострочной.Ваша таблица должна содержать идентификатор записи по которому можно отличить данные одного канала от другого. Соответственно sql запрос тоже должен содержать идентификатор записи. Запрос, который у Вас сейчас будет всегда возвращать лишь одно значение, по ому что он не понимает чем они отличаются. И так как это импорт текущих данных, а не архивов, то SqlDataReader берет только первое значение из датасета. Или сделайте нормальную таблицу по примеру тех что создаются для модуля экспорта в БД или же напишите правильный запрос к существующим таблицам БД.
P.S. Ваши темы с с модулями и драйверами для подключения к БД лучше создавать в разделе «Понять как работает ПО» а не в «Разработка и интеграция», поскольку Вы ничего не разрабатываете а используете штатные модули.- Этот ответ был изменен 4 года, 10 месяцев назад от Romiros.
22.06.2019 в 11:06 #12373baurУчастниктут надо использовать where с ключем, если идентификатор все время меняется, то использовать top(n) с сортировкой или агрегатные функции как: min, max и т.д.
22.06.2019 в 11:19 #12380MikhailМодераторНо почему импортируется в канал только одно первое значение из БД
Драйвер извлекает текущие данные — он предназначен для работы только с текущими данными. ПОэтому, если выборка возвращает несколько строк, то берётся 1-я строка.
22.06.2019 в 11:21 #12382MikhailМодераторПеренёс топик в более подходящий раздел, т.к. обсуждается существующий драйвер.
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 #18960MikhailМодераторДобрый день!
Найдите файл настройки КП в рабочей директории 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 #18975MikhailМодераторЖурнал линии связи — это line*.log
Посмотрите ошибку (если есть) сразу после рестарта линии. Вероятно, проблема при считывании конфигурации КП.- Этот ответ был изменен 3 года назад от Mikhail.
31.03.2021 в 16:21 #18977MikhailМодераторПример файла 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 #18989MikhailМодераторПароль хранится в 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 #19025MikhailМодераторУже лучше. Посмотрите, лежит ли у Вас библиотека 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) -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.