ПЗ (1204320), страница 6
Текст из файла (страница 6)
}
Данный код выбирает данные для отображения только при изменении значения. При изменении происходит запись предыдущего значения pointo и текущего отличающегося от pointo. Таким образом можно сократить количество точек, выводимых на экран в более чем два раза (зависит от гладкости изменения значений).
Взаимодействие с графиком производится ползунками снизу и справа. Также можно перемещать график и выделять объекты на графике курсором мыши благодаря включёным флагам интерактивности QCP::iRangeDrag и QCP::iSelectPlottables. Взаимодействие ползунков с графиком происходит посредством слотов moveSlider() и scaleSlider().
В главном окне работают сочетания клавиш Ctrl+O (Открыть файл) Ctrl+P (Сохранить график) и Ctrl+Q (Выход).
-
Создание модуля анализа данных
Структура класса модуля данных имеет следующую структуру:
class AnalizDialog : public QDialog
{
Q_OBJECT
public:
explicit AnalizDialog(QWidget *parent = 0);
~AnalizDialog();
FeelThread *Opot;
AnalizThread *Apot;
private slots:
void on_startButton_clicked();
void on_pushButton_2_clicked();
void on_openButton_clicked();
void getOData();
void getAData();
private:
Ui::AnalizDialog *ui;
QStatusBar *statusBar;
AllData *datas;
};
Для реализации данного модуля используются два потока: поток открытия и обработки данных (описан в модуле отображения данных) и поток анализа данных. Слоты getOData() и getAData() вызываются потоками после их завершения.
Основной частью модуля является поток анализа данных AnalizThread структура класса которого приведена ниже:
class AnalizThread : public QThread
{
Q_OBJECT
public:
void run() Q_DECL_OVERRIDE;
public slots:
void setData(AllData *d);
void setFileName(QString fn);
AllData *getData();
signals:
void analizFeed(QString s);
void dataComplete();
private:
QString filename;
AllData *datas;
};
Данная структура также перегружает метод run() в котором происходит основной анализ.
В данном методе происходит двойное сглаживание данных посредством скользящей средней с окном равным 51, кроме крайних значений. Пример блока кода представлен ниже:
datas->sm_data[0].resize(fresize);
for(int i=25; i<fresize-26; i++){
tmp = 0;
for(int j=i-2; j<=i+2; j++) tmp += datas->fresh_data[0][j];
datas->sm_data[0][i] = tmp/51;
}
for(int i=0; i<25; i++) datas->sm_data[0][i] = datas->sm_data[0][25];
for(int i=fresize-25; i<fresize; i++) datas->sm_data[0][i] = datas->sm_data[0][fresize-26];
datas->sm_data[1].resize(fresize);
for(int i=25; i<fresize-26; i++){
tmp = 0;
for(int j=i-2; j<=i+2; j++) tmp += datas->fresh_data[1][j];
datas->sm_data[1][i] = tmp/51;
}
for(int i=0; i<25; i++) datas->sm_data[0][i] = datas->sm_data[1][25];
for(int i=fresize-25; i<fresize; i++) datas->sm_data[1][i] = datas->sm_data[1][fresize-26];
Данный блок кода находит среднее значение ближайших 25 точек слева и справа от текущей включая её.
В дальнейшем в анализаторе будут добавлен более широкий функционал и более точное определение точек пиков.
-
Технико-экономическое обоснование
После завершения проектирования и разработки программного комплекса требуется произвести расчёт затрат на его разработку, эффективности ПО и общую оценку стоимости мобильных вагонных весов.
Для оценки эффективности необходимо оценить качество программного комплекса. Качество можно оценить по следующим двум основным параметрам:
– ресурсозатратность;
– удобство пользования.
На данном этапе оценка удобства использования не может быть произведена из-за недостатка пользователей, использующих комплекс, однако в дальнейшем это будет произведено.
Приложение имеет не очень большой размер (18 Мегабайт) и собрано в один исполняемый файл, что позволяет использовать его из любого места на жестком диске, в том числе и на внешнем носителе. Однако для полноценной работы приложения в систему необходимо производить предварительную установку драйверов устройства АЦП.
Оценку трудоемкости и затрат на разработку на данном этапе произвести представляется возможным.
Процесс проектирования и разработки достаточно сложно нормировать так как это сопряжено с творческим процессом.
Технический аспект работы программиста нормирован достаточно хорошо, чтобы произвести оценку. Существует множество методик оценки технической трудоёмкости создания ПО. В данной работе воспользуемся методом оценки по суммарной трудоёмкости видов работ, измеренных в человеко-часах, выражаемых формулой:
где Т – общая трудоёмкость, чел/час, ti – трудоёмкость отдельной разновидности работ, чел/час.
В таблице 2 показаны все работы и затраченное на каждую из них количество времени.
Таблица 2 – План выполнения работ
| Вид работы | Затраченное время | Затраченное машинное время |
| Постановка задачи | 8 | – |
| Ознакомление с сферой деятельности и оборудованием | 35 | 5 |
| Выбор технических средств | 4 | – |
| Разработка логики и алгоритмов | 78 | 10 |
| Разработка интерфейса пользователя | 15 | 5 |
| Написание программы | 420 | 400 |
| Проверка работоспособности связки аппаратного оборудования и программного комплекса | 72 | 6 |
| Отладка | 96 | 90 |
| Тестирование | 52 | 52 |
| Итого | 780 | 613 |
При себестоимости человека-часа примерно 72 руб., оплата труда по тарифу составляет 56160 руб. Кроме того, в процессе разработки использовался компьютер с энергопотреблением 65 Вт/ч, что в соответствии с таблицей 2 даёт затраты на электроэнергию в количестве 40 кВт∙ч. В Хабаровском крае на начало 2017 года тариф на электроэнергию составляет 2,88 руб за 1 кВт∙ч. Суммарные затраты на электроэнергию – 115,20 руб.
Для внедрения приложения не требуется покупать каких-либо дополнительных программных средств и лицензий на программное обеспечение.
Таким образом затраты на разработку составили 56275,20 руб.
Оценка эффективности комплекса невозможна так как для этого необходимо получить отзывы об использовании от пользователей.
Аппаратная часть по предварительной оценку заказчиком варьируется от 60000 до 100000 руб. Конечная себестоимость весов варьируется в пределах 130000 до 250000 руб.
-
Результаты выполненой работы
После написания программного комплекса было произведено тестовое снятие данных с путей. После сбора данных, была произведена их визуальная оценка (рисунок 17), вследствие чего выяснилось, что крепления датчика ненадёжно крепятся к рельсу и появляются шумы и дребезжание на графике.
Рисунок 17 – Общий вид собранных данных
В качестве меры предотвращения порчи данных и надёжности их сбора заказчику было предложено выбрать другие крепления. На рисунке 18 показаны предложенные варианты, подходящие под текущий вид датчиков.
Рисунок 18 – Варианты нового крепления
Работоспособность программного комплекса подтверждена заказчиком и была принята как программная часть мобильных вагонных весов.
Заключение
Взвешивание грузов является первостепенным действием при учете груза. Для взвешивания могут использоваться разные конструкции и типы весов. Любое производство, транспортировка, складское хранение не обойдутся без весового оборудования. Сегодня имеется целый ряд модификаций весов, большая часть которых имеет возможность функционировать с электронным оборудованием, а также подключаться к компьютеру для последующих действий с итогами взвешивания. Результативность учета товарно-материальных ценностей, времени грузовой переработки товаров, снижения себестоимости и осуществления комплексной автоматизации прямо пропорционально зависит от точного подбора типа весов.
Результатом данной выпускной квалификационной работы является программный комплекс, сопровождающий мобильные вагонные весы. Основным функционалом программы является получение данных с датчиков, их обработка и выдача скоростей и весов локомотива.
Во время тестирования программного комплекса была обнаружена проблема с крепления, идущие в комплекте с датчиками имеют недостаточно надёжную фиксацию в следствии чего было предложено их модифицировать.
Весы, получившиеся в ходе ВКР конкурентоспособны на рынке и после некоторых модификаций, могут поступить в продажу.
Список использованных источников
-
Гопкало В.Н. Выпускная квалификационная работа. Общие требования и правила оформления: методическое пособие / В.Н. Гопкало, О.А. Графский – Хабаровск: Изд-во ДВГУПС, 2014. – 82 с.
-
Савенкова Т. И. Логистика: учеб. пособие для студентов / 5-е изд., стер. – М.: Издательство «Омега-Л», 2010. – 255 с.
-
Никифоров В. В. Логистика. Транспорт и склад в цепи поставок / М.: Издательство «ГроссМедиа», 2008. – 192 с.
-
Антонов П.А. Весы: типы и применение / М.: Точмашприбор, 1998. – 254 с.
-
Берестов. П.С. Весоизмерительное оборудование в складской логистике. – М.: Дело, 2004. – 134 с.
-
Пипуныров В.Н. История весов и весовой промышленности в сравнительно-историческом освещении. – М: АСТ, 1995. – 265 с.
-
Кемени Т. Новейшие достижения в весостроении // Измерение, контроль, автоматизация. – 2001. – №5. – С. 28-35.
-
Иконников Е. А. Ремонт, техническое обслуживание и метрологическое обеспечение весов на железнодорожном транспорте. – Москва, 2009. – 307 с.
-
Топорков А.А. Применение весоизмерительного оборудования на железнодорожных станциях. – Орел: Ермак, 2001. – 98 с.
-
С.В. Власьевский, А.А.Панченко. – Проблемы измерения веса подвижного состава на скоростных магистралях. – Сб. тез. докл. международной конференции.- Электромеханические преобразователи энергии. Изд-во ТГУ, Томск, 2005 – с. 278-279
-
Josuttis Nicolai. C++ Standard Library – A Tutorial and Reference / Addison-Wesley, 1999. – 1037 с.
-
David M. Papurt. Inside the Object Model: The Sensible Use of C++ / Cambridge University Press, 1995 – 522 с.
-
Бьёрн Страуструп. Язык программирования C++ / Пер. с англ. – 3-е изд. – СПб.; М.: Невский диалект – Бином, 1999. – 991 с.
-
Герберт Шилдт. Полный справочник по C++ / 4-е изд. – М.: Вильямс, 2011. – 800 с.
-
Дональд Кнут. Искусство программирования / 1 том – М.: Вильямс, 2015 – 720 с.
-
Марк Лутц. Изучаем Python / 5-я ред. – Издательство «Символ-Плюс», 2011 – 1280 с.
-
A Byte of Python [Электронный ресурс] / Swaroop Chitlur, 2017. – Режим доступа: https://python.swaroopch.com/
-
Python Documentation [Электронный ресурс] / Python Software, 2017. – Режим доступа: https://www.python.org/doc/
-
Д. Флэнаган. Язык программирования Ruby / Дэвид Флэнаган, Ю. Мацумото – Издательство «Питер», 2011. – 496 с.
-
Томас Х. Кормен Алгоритмы. Построение и анализ / Т. Х. Кормен, Ч. И. Лейзерсон, Р. Л. Ривест – М.: Издательство «Вильямс», 2016. – 1328 с.
-
Тишкина, Л.Н. Математика и информатика: Электронное учебное пособие. [Электронный ресурс] – СПб.: ИЭО СПбУТУиЭ, 2009. – 480 с. – Режим доступа: http://e.lanbook.com/book/63823
-
Вагонные весы для взвешивания в движениих [Электронный ресурс] / kilogramus.ru, 2017. – Режим доступа: http://kilogramus.ru/vzveshivanie-v-promyshlennosti/vagonnye-vesy-dlya-vzveshivaniya-v-dvizhenii.html
-
Весы вагонные (железнодорожные). Взвешивание вагонов. [Электронный ресурс] / TBN company, 2010. – Режим доступа: http://tbncom.com/publ/zh_d_perevozki_railway_transport/zh_d_perevozki_railway_transport/vesy_vagonnye_zheleznodorozhnye_vzveshivanie_vagonov/6-1-0-38
-
Qt Documentation [Электронный ресурс] / The Qt Company – Режим доступа: http://doc.qt.io/ [20.06.2017]
-
Qt – Home [Электронный ресурс] / The Qt Company – Режим доступа: https://www.qt.io/ru/ [20.06.2017]
-
NetBeans IDE [Электронный ресурс] / Oracle Corporation – Режим доступа: https://netbeans.org [20.06.2017]
-
Visual Studio [Электронный ресурс] / Microsoft – Режим доступа: https://www.visualstudio.com/ [20.06.2017]
-
Уровни языков программирования и эволюция языков [Электронный ресурс] Bourabai Research, 2016 – Режим доступа: http://bourabai.kz/alg/a13.htm
-
ЛА-20USB [Электронный ресурс] / «Руднев-Шиляев», 2016 – Режим доступа: http://www.rudshel.ru/show.php?dev=34
-
Rsh API SDK 2.1 [Электронный ресурс] / «Руднев-Шиляев», 2016 – Режим доступа: http://www.rudshel.ru/soft/SDK2/Doc/CPP_USER_RU/html/index.html
Приложение А
(обязательное)















