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

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


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

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

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

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

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

oscada.xml (Тип файла: text/xml, Размер: 1.9 килобайт) — 1767 загрузок
oscada_console_log_user.txt (Тип файла: text/plain, Размер: 5.37 килобайт) — 1581 загрузок
Сообщение создано: 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

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



4949