EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

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


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

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

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

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

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

oscada.xml (File type: text/xml, Size: 1.9 kilobytes) — 1781 downloads
oscada_console_log_user.txt (File type: text/plain, Size: 5.37 kilobytes) — 1594 downloads
Written on: 18. 12. 2014 [08:28]
AndreyD
Андрей Дерюгин
registered since: 10.08.2010
Posts: 3
Вам сюда:
http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/dobavlenie_baz_dannykh_i_sokhranenie_v_xml/
Written on: 18. 12. 2014 [10:08]
evoro
Евгений Воропаев
Topic creator
registered since: 17.12.2014
Posts: 8
Спасибо. Прочитал. Буду разбираться, что такое патч и как его ставить.
Written on: 18. 12. 2014 [13:57]
monia
Олег Намятов
registered since: 21.05.2012
Posts: 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)

[This article was edited 2 times, at last 18.12.2014 at 14:01.]
Written on: 18. 12. 2014 [19:15]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 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.
Written on: 22. 12. 2014 [08:44]
evoro
Евгений Воропаев
Topic creator
registered since: 17.12.2014
Posts: 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).



[This article was edited 2 times, at last 22.12.2014 at 08:49.]
Written on: 22. 12. 2014 [10:15]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 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.
Written on: 20. 01. 2015 [18:21]
chevents
Сергей К
registered since: 12.01.2015
Posts: 6
Возможно ли в OpenScada записывать в таблицу БД SQLite данные типа Date или DateTime, а не в виде строк, с помощью команды-sql INSERT? Если да, приведите пример, если нет, как обойти?
Как сравнивать даты в коде JavaLikeCalc?
Written on: 20. 01. 2015 [18:49]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 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.
Written on: 22. 01. 2015 [07:25]
evoro
Евгений Воропаев
Topic creator
registered since: 17.12.2014
Posts: 8
"roman" wrote:

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

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



2057