Russian Qt Forum

Программирование => Общий => Тема начата: ZEON от Декабрь 27, 2010, 16:54



Название: Не могу собрать проект DNP3 protocol
Отправлено: ZEON от Декабрь 27, 2010, 16:54
Привет всем!
 Уже две недели пытаюсь собрать проект DNP3 Protocol (протокол обмена данных ПЛК в нашей АСУТП). Задача связана с аппаратными средствами, коротко - разработать интерфейс связи с PLC, в качестве основного протокола выбран DNP3 (http://ru.wikipedia.org/wiki/DNP3). Проект DNP3 Protocol - OpenSource -> http://sourceforge.net/projects/dnp/.
 Вопрос: Немогу собрать исходники этого проекта, использую Visual Studio 2008 Pro + Qt 4.7. В файле проекта (*.pro) всё верно:

Цитировать
CONFIG += qtestlib static
QT += network
TEMPLATE = app
DEPENDPATH += crypto dnplib masterui outstationui unittests
INCLUDEPATH += . crypto dnplib masterui unittests outstationui

# Input
HEADERS += crypto\aes.h \
           crypto\sha1.h \
           crypto\sha2.h \
           crypto\wrap.h \
           dnplib\app.hpp \
           dnplib\asdu.hpp \
           dnplib\common.hpp \
           dnplib\datalink.hpp \
           dnplib\event_interface.hpp \
           dnplib\factory.hpp \
           dnplib\lpdu.hpp \
           dnplib\master.hpp \
           dnplib\object.hpp \
           dnplib\outstation.hpp \
           dnplib\security.hpp \
           dnplib\station.hpp \
           dnplib\stats.hpp \
           dnplib\timer_interface.hpp \
           dnplib\transmit_interface.hpp \
           dnplib\transport.hpp \
           masterui\display.hpp \
           masterui\endpoint.hpp \
           masterui\main_window.hpp \
           masterui\settings.hpp \
           masterui\timer_widget.hpp \
           outstationui\outstation_settings.hpp \
           outstationui\outstation_window.hpp \
           unittests\_test_lpdu.hpp \
           unittests\_test_master.hpp \
           unittests\_test_security.hpp \
           unittests\dummy.hpp
SOURCES += crypto\aes.c \
           crypto\sha1.c \
           crypto\sha2.c \
           crypto\wrap.c \
           dnplib\app.cpp \
           dnplib\asdu.cpp \
           dnplib\common.cpp \
           dnplib\datalink.cpp \
           dnplib\event_interface.cpp \
           dnplib\factory.cpp \
           dnplib\lpdu.cpp \
           dnplib\master.cpp \
           dnplib\object.cpp \
           dnplib\outstation.cpp \
           dnplib\security.cpp \
           dnplib\station.cpp \
           dnplib\stats.cpp \
           dnplib\timer_interface.cpp \
           dnplib\transmit_interface.cpp \
           dnplib\transport.cpp \
           dnplib\version.cpp \
           masterui\display.cpp \
           masterui\endpoint.cpp \
           masterui\main.cpp \
           masterui\main_window.cpp \
           masterui\settings.cpp \
           masterui\timer_widget.cpp \
           outstationui\outstation_settings.cpp \
           outstationui\outstation_window.cpp \
           unittests\_test_lpdu.cpp \
           unittests\_test_master.cpp \
           unittests\_test_security.cpp \
           unittests\dummy.cpp

Всё делаю как описал разработчик:
Цитировать
To build the dnp executable, install the required dependencies as
specified in the OS specific sections then in the dnp source directory
enter*:

qmake -project "CONFIG += qtestlib" "QT += network"
qmake
make

*Note: qmake executables may be called qmake-qt4 if you have more than
 one version of qt installed.

OS specific set up and dependencies:

...

Windows
-------

Dependencies:
Qt4 open source edition.
http://www.trolltech.com/developer/downloads/qt/windows

Notes:

The include path in the dnp.pro file may not be correctly
automatically generated. If it is not already there, you may need to add:
INCLUDEPATH += . crypto dnplib masterui outstationui unittests

To build the exe as a single statically linked file:

qmake -project "CONFIG += qtestlib static" "QT += network"

and

http://wiki.qtcentre.org/index.php?title=Building_static_Qt_on_Windows

Пробовал и статически собранную Qt 4.7, динамическую, даже готовую сборку с сайта http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.1-vs2008.exe (http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.1-vs2008.exe).

В основном ошибки на типы данных и зависимости. Хотя в исходниках есть релиз собранный c qt 4.2.3.

МОЖЕТ-БЫТЬ у кого-то получиться собрать  данный сабж? ???

P.S Заранее спасибо всем за ответы


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: kuzulis от Декабрь 27, 2010, 19:22
Я собирал это, правда под MinGW и Qt 4.5.3,
правда я там что-то выкидывал и переделывал, не помню что.
Завтра (если будет время), попробую пересобрать под Qt 4.7.1.
Скажу сразу, я не "вкурил" особо в предназначение данной GUI программы (при беглом просмотре).

ЗЫ: просьба, если у вас имеются спецификации на протокол DNP3 - то скиньте плз на мыло (которое в моем профиле).


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: kuzulis от Декабрь 28, 2010, 13:27
Я собрал с помощью MinGW и Qt 4.7.1, только пришлось править на быструю руку исходники.
То что получилось в итоге (исходники с *.pro файлом) я приаттачил тут в сообщении.

ЗЫ: для сборки нужно открывать/использовать файл проекта dnp.pro


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: kuzulis от Декабрь 28, 2010, 20:26
ZEON,

не получил я на почту спецификаций. Попробуйте ка еще разок.


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: werty_rus от Январь 27, 2011, 23:39
Kuzulis спасибо за сборку, всё запускается. только я нескромный вопрос хочу озвучить.......как приложение работает?
мне нужен пример трафика протокола :-\

ZEON вы не разобрались ещё?


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: werty_rus от Январь 27, 2011, 23:41
вот другой релиз
https://github.com/codehero/dnp3

тоже не получается запустить...(((((((((


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: ZEON от Январь 31, 2011, 17:30
У кого есть документация по протоколу DNP3 на русском?
И есть ли перевод на русский язык книги: Newnes.Practical.Modern.SCADA.Protocols.DNP3.60870.dot.5.and.Related.Systems.Sep.2004 ?


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: kuzulis от Январь 31, 2011, 18:51
Цитата: werty_rus
Kuzulis спасибо за сборку, всё запускается. только я нескромный вопрос хочу озвучить.......как приложение работает?
мне нужен пример трафика протокола :-\
Если честно - не имею понятия. Я брал оттуда только алгоритм расчета CRC :).
А для просмотра траффика - есть проприетарная софтина, триальная на 20 дней... Сейчас навскидку не скажу её название - завтра название напишу (если не забуду).

Цитата: ZEON
У кого есть документация по протоколу DNP3 на русском?
И есть ли перевод на русский язык книги: Newnes.Practical.Modern.SCADA.Protocols.DNP3.60870.dot.5.and.Related.Systems.Sep.2004 ?
Не, у меня нету.







Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: ZEON от Февраль 01, 2011, 14:32
прога называется Triangle Microworks Test Harness Protocol


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: ZEON от Февраль 14, 2011, 11:09
2 kuzulis
Ты не разбирался с Прикладным уровнем этого  протокола, не знаешь как лучше организовать консоль управления по приёму/передачи данных с БД PLC (OutStation)


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: kuzulis от Февраль 14, 2011, 12:22
2 kuzulis
Ты не разбирался с Прикладным уровнем этого  протокола, не знаешь как лучше организовать консоль управления по приёму/передачи данных с БД PLC (OutStation)
В смысле? Какую консоль? Что подразумеваешь под "как лучше организовать"?

Если имеешь ввиду как читать/писать данные в OutStation - то:
1. Проще всего не делать вообще поддержку "незапрашиваемых сообщений" (когда сама OutStation инициирует передачу к мастеру)
2. Чтобы не мудрить, можно реализовать два класса данных Class0, Class1
3. Для чтения статических данных (DI, DO, AI) и их событий OutStation - использовать "интегральный" опрос с определенной периодичностью (используя FC = READ).
4. Для управления DO OutStation - слать пакет с FC = DIRECT_OPERATE

В принципе, должно этого хватить (если кол-во точек в OutStation невелико).

Или что ты имел ввиду?


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: ZEON от Февраль 24, 2011, 11:10
2 Kuzulis
Такой вопрос, а кто-нить диззасемблировал DNP3 TestSet http://code.google.com/p/dnp3 (http://code.google.com/p/dnp3)
Я пишу тестовую консоль управления по подобию TestSet с этим проектом (DNP3 Protocol).


Название: Re: Не могу собрать проект DNP3 protocol
Отправлено: kuzulis от Февраль 24, 2011, 11:29
Не, у нас никто.