УкраїнськаEnglishmRussian
Вхід/Новий
У темі немає нових постів

После перезапуска OpenScada пропадают подключенные ранее базы SQLite


Автор Повідомлення
Повідомлення створено: 18. 12. 2014 [02:56]
evoro
Евгений Воропаев
Автор теми
Зареєстрован(а) с: 17.12.2014
Повідомлення: 8
Открыл пустой проект OpenScada. В QTCfg подключил к нему базы данных, как показано в уроке. Базы подключились(увидел названия таблиц). Сохранил изменения нажатием кнопки на панели. После этого перезапустил скаду. Базы, которые я прописал не появились в списке подключенных баз. Осталась только MainDB, как и было изначально. Открыл текстовым редактором файл конфигурации oscada.xml. Вроде в нем база, которую я подключил прописана. Может быть при сохранении и при запуске программа использует разные файлы конфигурации или возникают какие-то проблемы с чтением конфигурации? Можно ли увидеть, какой именно файл использовала программа при запуске? Можно ли увидеть лог, какие именно базы подключила программа при старте. Если какие то тэги не обработала, то по какой причине?

Подключил дополнительную БД в модели АГЛКС. Все то же самое: база не подключилась при перезапуске.

Проделывал это и из под простого пользователя с правами администратора. И из под рута, тем самым проблема с правами доступа, вроде, отбрасывается.

Подскажите, пожалуйста, в чем проблема и не сталкивался ли кто-нибудь с этим.

Во вложении файл конфигурации и лог запуска скады из терминала.
Вкладений файл

oscada.xml (Тип файлу: text/xml, Розмір: 1.9 кілобайтів) — 1788 завантажень
oscada_console_log_user.txt (Тип файлу: text/plain, Розмір: 5.37 кілобайтів) — 1606 завантажень
Повідомлення створено: 18. 12. 2014 [08:28]
AndreyD
Андрей Дерюгин
Зареєстрован(а) с: 10.08.2010
Повідомлення: 3
Вам сюда:
http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/dobavlenie_baz_dannykh_i_sokhranenie_v_xml/
Повідомлення створено: 18. 12. 2014 [10:08]
evoro
Евгений Воропаев
Автор теми
Зареєстрован(а) с: 17.12.2014
Повідомлення: 8
Спасибо. Прочитал. Буду разбираться, что такое патч и как его ставить.
Повідомлення створено: 18. 12. 2014 [13:57]
monia
Олег Намятов
Зареєстрован(а) с: 21.05.2012
Повідомлення: 173
Может поможет
Вот простой проект:
1) XML
HTML
<?xml version='1.0' encoding='UTF-8' ?>
<OpenSCADA>
    <!--
    This is the OpenSCADA configuration file.
    -->
    <station id="Client"><prm id="SelDebCats" /><prm id="Lang">ru_RU.UTF-8</prm>
	<!--
	Discribe internal parameter for station".
	Station this OpenSCADA programm.
	-->
	<prm id="StName">Client</prm>
	<prm id="WorkDB">SQLite.DB_prj</prm>
	<prm id="Workdir">/home/monia/Проекты/Client</prm>
	<prm id="IcoDir">./icons</prm>
	<prm id="ModDir">/usr/lib/openscada</prm>
	<prm id="LogTarget">10</prm>
	<prm id="MessLev">0</prm>
	<prm id="Lang2CodeBase" />
	<prm id="SaveAtExit">0</prm>
	<prm id="SavePeriod">0</prm>
 
	<node id="sub_BD">
	    <prm id="SYSStPref">0</prm>
	    <tbl id="DB">
			<fld ID="DB_prj" TYPE="SQLite" NAME="База проекта" ADDR="./DATA/prj.db" CODEPAGE="UTF-8" EN="1" />
		</tbl>
	</node>
 
	<node id="sub_Security">
	</node>
 
	<node id="sub_ModSched">
	    <prm id="ModAllow">*</prm>
	    <prm id="ModDeny" />
	    <prm id="ChkPer">0</prm>
	</node>
 
	<node id="sub_Transport">
	    <tbl id="Transport_in">
	    </tbl>
	</node>
 
	<node id="sub_DAQ">
	</node>
 
	<node id="sub_Archive">
	</node>
 
	<node id="sub_UI">
	    <node id="mod_QTStarter">
		<prm id="StartMod">QTCfg</prm>
	    </node>
	    <node id="mod_WebCfg">
		<prm id="SessTimeLife">20</prm>
	    </node>
	</node>
 
    </station>
</OpenSCADA>


<prm id="WorkDB">SQLite.DB_prj</prm> - хранилище проекта
<prm id="Workdir">/home/monia/Проекты/Client</prm> - путь к проекту
<fld ID="DB_prj" TYPE="SQLite" NAME="База проекта" ADDR="./DATA/prj.db" CODEPAGE="UTF-8" EN="1" /> - подключаемая БД (хранилище проекта)

2) запускающий скрипт
HTML
#!/bin/sh
 
cd /home/monia/Проекты/Client
 
# Programm command and lock file
pCmd="openscada  --CoreDumpAllow --Config=./client.xml"
pLock=".client.lock"
 
# Check for already started programm present
if [ -f $pLock ] && ps -Ao pid,command | grep "$(cat ${pLock})[ ]*${pCmd}" > /dev/null; then
    echo "OpenSCADA Model PTE-station already started!";
    exit 1;
fi
 
# Call programm
$pCmd $@ &
pPid=$!
 
# Create lock file
echo $pPid > $pLock
 
# Wait for programm stop
wait $pPid
echo "Program rezult: $?"
 
# Core dump file "core" into work directory process
if [ -f /home/monia/Проекты/Client/core -a -n "$(which gdb)" ]; then
    cd /home/monia/Проекты/Client
    echo "Core dump process for back trace purchase to file crash_PTE_$(date +%F_%H:%M).txt"
    gdb openscada --core core --batch --quiet -ex "thread apply all bt full" -ex "quit" > crash_client_$(date +%F_%H:%M).txt
    rm -f core
fi
 
# Remove lock file
rm -f $pLock


cd /home/monia/Проекты/Client - путь к проекту
pCmd="openscada --CoreDumpAllow --Config=./client.xml" путь к XML-ку
ну и походу кода нужно будет все подправить под себя

3) Структура проекта
приведу как я зделал
JAVASCRIPT
~/Проекты/Client
----/DATA
----/DATA/prj.db (БД проекта в SQLite)
----/LibsDB (у меня реализована как ссылка на скачанный svn ~/src/OpenSCADA/data/LibsDB)
----/icons (у меня реализована как ссылка на скачанный svn ~/src/OpenSCADA/data/icons)
----/client (запускающий скрипт)
----/client.xml


В принципе все работает без сбоев
Когда запустишь проект убедись что в поле "Рабочая БД" выбрана нужная БД. у меня стоит SQLite.DB_prj

P.S. перед запуском не забудь создать файл ~/Проекты/Client/DATA/prj.db (БД проекта в SQLite)

[Повідомлення редагувалось 2 раз(ів), останній раз 18.12.2014 в 14:01.]
Повідомлення створено: 18. 12. 2014 [19:15]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"evoro" wrote:

Буду разбираться, что такое патч и как его ставить.

Не дочитали?
На что патч? Берём прямо стабильный срез: "$ svn co http://oscada.org/svn/tags/openscada_0.8.0/"
Собираем: http://wiki.oscada.org/Doc/SborkaIzIsxodnikov
Обновляем: зависимо от дистрибутива Linux

Learn, learn and learn better than work, work and work.
Повідомлення створено: 22. 12. 2014 [08:44]
evoro
Евгений Воропаев
Автор теми
Зареєстрован(а) с: 17.12.2014
Повідомлення: 8
Ну вот, не прошло и полгода, и удалось собрать OpenScada из исходников. Ура! Теперь базы корректно подключаются после перезапуска.
Однако, замечена такая вещь. Если при выходе из OpenSCADA(командой Exit из Меню File) в возникающем диалоговом окне не нажать кнопку с согласием на сохранение изменений, то OpenSCADA выключается долго, тормозит на выгрузке модуля System, а после этого завершается с результатом 139.
1|/sub_DAQ/ | Disconnect module 'System'!
/usr/bin/openscada_start: line 116: 21025 Segmentation fault (core dumped) $pCmd $@
Program rezult: 139
Подскажите, пожалуйста, это результат какой-то ошибки, допущенной мной при сборке и установке OpenSCADA или это нормальное поведение программы?
Программа так себя ведет независимо от того, под каким пользователем она запущена (и под root и под не-root).



[Повідомлення редагувалось 2 раз(ів), останній раз 22.12.2014 в 08:49.]
Повідомлення створено: 22. 12. 2014 [10:15]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"evoro" wrote:

Ну вот, не прошло и полгода, и удалось собрать OpenScada из исходников. Ура! Теперь базы корректно подключаются после перезапуска.
Однако, замечена такая вещь. Если при выходе из OpenSCADA(командой Exit из Меню File) в возникающем диалоговом окне не нажать кнопку с согласием на сохранение изменений, то OpenSCADA выключается долго, тормозит на выгрузке модуля System, а после этого завершается с результатом 139.
1|/sub_DAQ/ | Disconnect module 'System'!
/usr/bin/openscada_start: line 116: 21025 Segmentation fault (core dumped) $pCmd $@
Program rezult: 139
Подскажите, пожалуйста, это результат какой-то ошибки, допущенной мной при сборке и установке OpenSCADA или это нормальное поведение программы?

У меня нигде такого нет, отчёт вообще шлём: http://wiki.oscada.org/Doc/OtchjotOSboe

Learn, learn and learn better than work, work and work.
Повідомлення створено: 20. 01. 2015 [18:21]
chevents
Сергей К
Зареєстрован(а) с: 12.01.2015
Повідомлення: 6
Возможно ли в OpenScada записывать в таблицу БД SQLite данные типа Date или DateTime, а не в виде строк, с помощью команды-sql INSERT? Если да, приведите пример, если нет, как обойти?
Как сравнивать даты в коде JavaLikeCalc?
Повідомлення створено: 20. 01. 2015 [18:49]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"chevents" wrote:

Возможно ли в OpenScada записывать в таблицу БД SQLite данные типа Date или DateTime, а не в виде строк, с помощью команды-sql INSERT? Если да, приведите пример, если нет, как обойти?

Читайте про SQLite, где и увидите ответ.

"chevents" wrote:

Как сравнивать даты в коде JavaLikeCalc?

Как простое целое, с UTC временем от эпохи UNIX.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 22. 01. 2015 [07:25]
evoro
Евгений Воропаев
Автор теми
Зареєстрован(а) с: 17.12.2014
Повідомлення: 8
"roman" wrote:

У меня нигде такого нет, отчёт вообще шлём: http://wiki.oscada.org/Doc/OtchjotOSboe

Роман, ошибка возникает не всегда. Не могу однозначно установить условия, при которых возникает данная ошибка, поэтому отчет не готовил. Если будет ясность - отправлю отчет.



14096