Russian Qt Forum
Ноябрь 23, 2024, 10:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу собрать проект DNP3 protocol  (Прочитано 8364 раз)
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.

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

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

P.S Заранее спасибо всем за ответы
« Последнее редактирование: Декабрь 27, 2010, 16:57 от ZEON » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Декабрь 27, 2010, 19:22 »

Я собирал это, правда под MinGW и Qt 4.5.3,
правда я там что-то выкидывал и переделывал, не помню что.
Завтра (если будет время), попробую пересобрать под Qt 4.7.1.
Скажу сразу, я не "вкурил" особо в предназначение данной GUI программы (при беглом просмотре).

ЗЫ: просьба, если у вас имеются спецификации на протокол DNP3 - то скиньте плз на мыло (которое в моем профиле).
« Последнее редактирование: Декабрь 27, 2010, 19:26 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Декабрь 28, 2010, 13:27 »

Я собрал с помощью MinGW и Qt 4.7.1, только пришлось править на быструю руку исходники.
То что получилось в итоге (исходники с *.pro файлом) я приаттачил тут в сообщении.

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

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Декабрь 28, 2010, 20:26 »

ZEON,

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

ArchLinux x86_64 / Win10 64 bit
werty_rus
Гость
« Ответ #4 : Январь 27, 2011, 23:39 »

Kuzulis спасибо за сборку, всё запускается. только я нескромный вопрос хочу озвучить.......как приложение работает?
мне нужен пример трафика протокола В замешательстве

ZEON вы не разобрались ещё?
Записан
werty_rus
Гость
« Ответ #5 : Январь 27, 2011, 23:41 »

вот другой релиз
https://github.com/codehero/dnp3

тоже не получается запустить...(((((((((
Записан
ZEON
Гость
« Ответ #6 : Январь 31, 2011, 17:30 »

У кого есть документация по протоколу DNP3 на русском?
И есть ли перевод на русский язык книги: Newnes.Practical.Modern.SCADA.Protocols.DNP3.60870.dot.5.and.Related.Systems.Sep.2004 ?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #7 : Январь 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 ?
Не, у меня нету.





Записан

ArchLinux x86_64 / Win10 64 bit
ZEON
Гость
« Ответ #8 : Февраль 01, 2011, 14:32 »

прога называется Triangle Microworks Test Harness Protocol
Записан
ZEON
Гость
« Ответ #9 : Февраль 14, 2011, 11:09 »

2 kuzulis
Ты не разбирался с Прикладным уровнем этого  протокола, не знаешь как лучше организовать консоль управления по приёму/передачи данных с БД PLC (OutStation)
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #10 : Февраль 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 невелико).

Или что ты имел ввиду?
Записан

ArchLinux x86_64 / Win10 64 bit
ZEON
Гость
« Ответ #11 : Февраль 24, 2011, 11:10 »

2 Kuzulis
Такой вопрос, а кто-нить диззасемблировал DNP3 TestSet http://code.google.com/p/dnp3
Я пишу тестовую консоль управления по подобию TestSet с этим проектом (DNP3 Protocol).
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #12 : Февраль 24, 2011, 11:29 »

Не, у нас никто.
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 22.