Система сбора данных и управления

Создание аппаратно-программных средств для системы сбора данных и управления с использованием локальной сети. Предметная область системы, ее структурная схема. Описание рабочих алгоритмов, выбор аппаратной платформы. Тестирование разработанной системы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 29.05.2015
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

char out [50];

extern LOCALM localm []; /* Local Machine Settings */

#define MY_IP localm [NETIF_ETH]. IpAdr

#define DHCP_TOUT 50 /* DHCP timeout 5 seconds */

static void init_io (void);

#ifdef RTX_KERNEL

U64 tcp_stack [800/8]; /* A bigger stack for tcp_task */

/* Forward references */

__task void init (void);

__task void blink_led (void);

__task void timer_task (void);

__task void tcp_task (void);

#endif

/*------- - my uart function - ------------ - */

int UART_putChar0 (char c)

{

while (! (LPC_UART0->LSR & 0x20));

return (LPC_UART0->THR = c);

}

void UART_putString0 (char *s)

{

while (*s! = 0)

{

UART_putChar0 (*s++);

}

}

/*------------------------- - init - -----------------------------------------*/

#ifndef RTX_KERNEL

static void init () {

/* Add System initialisation code here */

init_io ();

init_TcpNet ();

/* Setup and enable the SysTick timer for 100ms. */

// #define SystemCoreClock 120000000UL

SysTick->LOAD = (SystemCoreClock / 10) - 1;

SysTick->CTRL = 0x05;

}

#else

__task void init (void) {

/* Add System initialisation code here */

float ffff;

init_io ();

init_TcpNet ();

ds_init ();

ffff = get_temp (10);

sprintf (out,"%02.3f \n\n", ffff);

UART_putString0 (out);

delay_ms (200);

convert_temp (10);

/* Initialize Tasks */

os_tsk_prio_self (100);

os_tsk_create (blink_led, 20);

os_tsk_create (timer_task, 30);

os_tsk_create_user (tcp_task, 0, &tcp_stack, sizeof (tcp_stack));

os_tsk_delete_self ();

}

#endif

/*------------------------- - timer_poll - -----------------------------------*/

#ifndef RTX_KERNEL

static void timer_poll () {

/* System tick timer running in poll mode */

if (SysTick->CTRL & 0x10000) {

/* Timer tick every 100 ms */

timer_tick ();

tick = __TRUE;

}

}

#else

__task void timer_task (void) {

/* System tick timer task */

os_itv_set (10);

while (1) {

timer_tick ();

tick = __TRUE;

os_itv_wait ();

}

}

#endif

/*------------------------- - init_io - --------------------------------------*/

static void init_io () {

/* Configure the GPIO for Buttons */

LPC_GPIO3->DIR |= (0<<0) | (0<<1) | (0<<2) | (0<<3);

/* Configure the GPIO for LEDs. */

LPC_GPIO2->DIR |= ( (1<<0) | (1<<1) | (1<<2) | (1<<3));

/* Configure UART1 for 115200 baud. */

LPC_IOCON->P0_2 |= (1<<0);

LPC_IOCON->P0_3 |= (1<<0);

LPC_UART0->LCR = 0x83;

LPC_UART0->DLL = 0x13; /* 115200 Baud Rate @ 25.0 MHZ PCLK */

LPC_UART0->FDR = 0x75; /* FR 1,507, DIVADDVAL = 1, MULVAL = 2 */

LPC_UART0->DLM = 0;

LPC_UART0->LCR = 0x03;

}

/*------------------------- - fputc - ----------------------------------------*/

int fputc (int ch, FILE *f) {

/* Debug output to serial port. */

if (ch == '\n') {

while (! (LPC_UART0->LSR & 0x20));

LPC_UART0->THR = 0x0D;

}

while (! (LPC_UART0->LSR & 0x20));

LPC_UART0->THR = (ch & 0xFF);

return (ch);

}

/*------------------------- - LED_out - --------------------------------------*/

void LED_out (U32 val) {

const U8 led_pos [8] = { 0, 1, 2, 3, 0, 1, 2, 3 };

U32 i,mask;

for (i = 0; i < 8; i++) {

mask = 1 << led_pos [i];

if (val & (1<<i)) {

if (i < 3) LPC_GPIO2->SET = mask;

else LPC_GPIO2->SET = mask;

}

else {

if (i < 3) LPC_GPIO2->CLR = mask;

else LPC_GPIO2->CLR = mask;

}

}

}

float temper = 0;

unsigned long r = 0;

float tmp = 24;

float read_temp (void) {

if (r == 0) {

temper = get_temp_now (10);

delay_ms (200);

convert_temp (10);

}

return temper;

}

int ss = 0;

void refresh (void) {

if (ss == 0) {

convert_temp (10);

delay_ms (100);

}

ss++;

if (ss > 2)

ss = 0;

}

/*------------------------- - get_button - -----------------------------------*/

U8 get_button (void) {

/* Read ARM Digital Input */

U32 val = 0;

if ( (LPC_GPIO3->PIN & (1 << 0)) == 0) {

/* button 1*/

val |= 0x01;

}

if ( (LPC_GPIO3->PIN & (1 << 1)) == 0) {

/* button 2*/

val |= 0x02;

}

if ( (LPC_GPIO3->PIN & (1 << 2)) == 0) {

/* button 3*/

val |= 0x04;

}

if ( (LPC_GPIO3->PIN & (1 << 3)) == 0) {

/* button 4*/

val |= 0x08;

}

return (val);

}

/*------------------------- - dhcp_check - -----------------------------------*/

static void dhcp_check () {

/* Monitor DHCP IP address assignment. */

if (tick == __FALSE || dhcp_tout == 0) {

return;

}

#ifdef RTX_KERNEL

tick = __FALSE;

#endif

if (mem_test (&MY_IP, 0, IP_ADRLEN) == __FALSE &&! (dhcp_tout & 0x80000000)) {

/* Success, DHCP has already got the IP address. */

dhcp_tout = 0;

// sprintf ( (char *) lcd_text [0]," IP address: ");

// sprintf ( (char *) lcd_text [1]," %d. %d. %d. %d", MY_IP [0], MY_IP [1],

// MY_IP [2], MY_IP [3]);

// LCDupdate = __TRUE;

return;

}

if (--dhcp_tout == 0) {

/* A timeout, disable DHCP and use static IP address. */

dhcp_disable ();

// sprintf ( (char *) lcd_text [1]," DHCP failed ");

// LCDupdate = __TRUE;

dhcp_tout = 30 | 0x80000000;

return;

}

if (dhcp_tout == 0x80000000) {

dhcp_tout = 0;

// sprintf ( (char *) lcd_text [0]," IP address: ");

// sprintf ( (char *) lcd_text [1]," %d. %d. %d. %d", MY_IP [0], MY_IP [1],

// MY_IP [2], MY_IP [3]);

// LCDupdate = __TRUE;

}

}

/*------------------------- - blink_led - ------------------------------------*/

#ifndef RTX_KERNEL

static void blink_led () {

/* Blink the LEDs on an eval board */

const U8 led_val [16] = { 0x48,0x88,0x84,0x44,0x42,0x22,0x21,0x11,0x12,0x0A,0x0C,0x14,0x18,0x28,0x30,0x50 };

static U32 cnt;

if (tick == __TRUE) {

/* Every 100 ms */

tick = __FALSE;

if (LEDrun == __TRUE) {

LED_out (led_val [cnt]);

if (++cnt >= sizeof (led_val)) {

cnt = 0;

}

}

}

}

#else

__task void blink_led () {

/* Blink the LEDs on an eval board */

const U8 led_val [16] = { 0x48,0x88,0x84,0x44,0x42,0x22,0x21,0x11,0x12,0x0A,0x0C,0x14,0x18,0x28,0x30,0x50 };

U32 cnt = 0;

LEDrun = __TRUE;

while (1) {

/* Every 100 ms */

if (LEDrun == __TRUE) {

LED_out (led_val [cnt]);

if (++cnt >= sizeof (led_val)) {

cnt = 0;

}

}

/*if (LCDupdate == __TRUE) {

upd_display ();

}*/

os_dly_wait (10);

}

}

#endif

/*---------------------------------------------------------------------------*/

#ifndef RTX_KERNEL

int main (void) {

/* Main Thread of the TcpNet */

float ffff;

init ();

ds_init ();

LEDrun = __TRUE;

dhcp_tout = DHCP_TOUT;

UART_putString0 ("All OK. \n\n");

ffff = get_temp (10);

convert_temp (10);

sprintf (out,"%02.3f \n\n", ffff);

UART_putString0 (out);

// printf ("All OK");

while (1) {

timer_poll ();

main_TcpNet ();

dhcp_check ();

blink_led ();

}

}

#else

__task void tcp_task (void) {

/* Main Thread of the TcpNet. This task should have */

/* the lowest priority because it is always READY. */

dhcp_tout = DHCP_TOUT;

while (1) {

main_TcpNet ();

dhcp_check ();

os_tsk_pass ();

}

}

int main (void) {

/* Start with 'init' task. */

os_sys_init (init);

while (1);

}

#endif

Приложение Б. Текст файла CGI contacts. cgi

t <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 // EN" "http://www.w3.org/TR/html4/strict. dtd">

t <html><head><title>Контактные датчики</title>

t <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

t <link rel="stylesheet" href="style. css" type="text/css">

t <link rel="shortcut icon" href="logo. gif" type="image/x-icon" />

t <script language=JavaScript type="text/javascript" src="xml_http. js"></script>

t <script language=JavaScript type="text/javascript" src="scripts. js"></script>

t <script language=JavaScript type="text/javascript">

t var formUpdate = new periodicObj ("contacts. cgx", 300);

t function periodicUpdate () {

t if (document. getElementById ("refreshChkBox"). checked == true) {

t updateMultiple (formUpdate);

t contactsUpdate ();

t periodicFormTime = setTimeout ("periodicUpdate ()", formUpdate. period);

t } else

t clearTimeout (periodicFormTime);

t }

t </script>

t <script language=JavaScript type="text/javascript">

t function updateData () {

t updateMultiple (formUpdate);

t setTimeout ("contactsUpdate ()", 500);

t }

t </script>

t </head>

t <body onload="updateData ()">

t <table class="maintable" border="3" cellspacing="0">

t <tr>

t <td class="noborder"><h2 align="center"><font face="verdana" color="#006699">

t Система сбора данных и управления</font></h2></td>

t <td class="noborder" height="50" width="70"><img src="logo. gif"></td>

t </tr>

t <tr>

t <td class="topborder" colspan="2" align="center" valign="top" height="50"><br>

t <a class="mybutton" href="index. htm">Главное меню</a><br><br>

t </td>

t </tr>

t <tr>

t <td class="topborder" colspan="2" align="center" valign="top">

t <h3 align="center">

t <font face="verdana" color="#006699">Контактные датчики</font></h3>

t <p><script language="JavaScript">printTextContacts (); </script></p>

t </td>

t </tr>

t <tr>

t <td class="topborder" colspan="2" align="center" valign="top">

t <form action="contacts. cgi" method="post" id="form1" name="form1">

t <table border="0" width="99%">

t <tbody>

t <tr bgcolor="#aaccff">

t <th width="40%">Датчик</th>

t <th width="60%">Статус</th></tr>

t <tr>

t <td class="altfont" align="center"><font id="c0" color="navy">Датчик # 1</font></td>

t <td align="center">

t <input type="checkbox" disabled hidden id="button0">

t <img id="img0" src="off. png"></td>

t </tr>

t <tr>

t <td class="altfont topborder" align="center"><font id="c1" color="navy">Датчик # 2</font></td>

t <td align="center" class="topborder">

t <input type="checkbox" disabled hidden id="button1">

t <img id="img1" src="off. png"></td>

t </tr>

t <tr>

t <td class="altfont topborder" align="center"><font id="c2" color="navy">Датчик # 3</font></td>

t <td align="center" class="topborder">

t <input type="checkbox" disabled hidden id="button2">

t <img id="img2" src="off. png"></td>

t </tr>

t <tr>

t <td class="altfont topborder" align="center"><font id="c3" color="navy">Датчик # 4</font></td>

t <td align="center" class="topborder">

t <input type="checkbox" disabled hidden id="button3">

t <img id="img3" src="off. png"></td>

t </tr>

t </tbody>

t </table>

t </form>

t </td>

t </tr>

t <tr><td class="topborder" colspan="2" align="center" valign="center" height="40">

t <form action="contacts. cgi" method="post" id="form1" name="form1">

t <input class="mybutton small" type="button" id="refreshBtn" value="Обновить данные"

t onclick="updateData ()">

t &emsp; &emsp; &emsp; Обновлять автоматически:

t <input type="checkbox" id="refreshChkBox" onclick="periodicUpdate ()">

t </form></td></tr>

t </table>

t </body>

t </html>

Приложение В. Текст файла JavaScript xml_http. js

/* Main function, that handles request and responses in background.

* Response functions are handled if response code equals to OK 200. */

function updateMultiple (formUpd, callBack, userName, userPassword) {

xmlHttp = GetXmlHttpObject ();

if (xmlHttp == null) {

alert ("XmlHttp not initialized!");

return 0;

}

xmlHttp. onreadystatechange = responseHandler;

xmlHttp. open ("GET", formUpd. url, true, userName, userPassword);

xmlHttp. send (null);

function responseHandler () {

if (xmlHttp. readyState == 4) { // response ready

if (xmlHttp. status == 200) { // handle received data

var xmlDoc = xmlHttp. responseXML;

if (xmlDoc == null)

return 0;

try { // catching IE bug

processResponse (xmlDoc);

}

catch (e) {

return 0;

}

/* Callback function for custom update. */

if (callBack! = undefined)

callBack ();

}

else if (xmlHttp. status == 401)

alert ("Error code 401: Unauthorized");

else if (xmlHttp. status == 403)

alert ("Error code 403: Forbidden");

else if (xmlHttp. status == 404)

alert ("Error code 404: URL not found!");

}

}

}

function processResponse (xmlDoc) {

textElementArr = xmlDoc. getElementsByTagName ("text");

for (var i = 0; i < textElementArr. length; i++) {

try {

elId = textElementArr [i]. childNodes [0]. childNodes [0]. nodeValue;

elValue = textElementArr [i]. childNodes [1]. childNodes [0]. nodeValue;

document. getElementById (elId). value = elValue;

}

catch (error) {

if (elId == undefined) {

continue;

}

else if (elValue == undefined) {

elValue = "";

document. getElementById (elId). value = elValue;

}

}

}

checkboxElementArr = xmlDoc. getElementsByTagName ("checkbox");

for (var i = 0; i < checkboxElementArr. length; i++) {

try {

elId = checkboxElementArr [i]. childNodes [0]. childNodes [0]. nodeValue;

elValue = checkboxElementArr [i]. childNodes [1]. childNodes [0]. nodeValue;

if (elValue. match ("true"))

document. getElementById (elId). checked = true;

else

document. getElementById (elId). checked = false;

}

catch (error) {

if (elId == undefined) {

continue;

}

else if (elValue == undefined) // we leave current state

continue;

}

}

selectElementArr = xmlDoc. getElementsByTagName ("select");

for (var i = 0; i < selectElementArr. length; i++) {

try {

elId = selectElementArr [i]. childNodes [0]. childNodes [0]. nodeValue;

elValue = selectElementArr [i]. childNodes [1]. childNodes [0]. nodeValue;

document. getElementById (elId). value = elValue;

if (elValue. match ("true"))

document. getElementById (elId). selected = true;

else

document. getElementById (elId). selected = false;

}

catch (error) {

if (elId == undefined) {

continue;

}

else if (elValue == undefined) {

elValue = "";

document. getElementById (elId). value = elValue;

}

}

}

radioElementArr = xmlDoc. getElementsByTagName ("radio");

for (var i = 0; i < radioElementArr. length; i++) {

try {

elId = radioElementArr [i]. childNodes [0]. childNodes [0]. nodeValue;

elValue = radioElementArr [i]. childNodes [1]. childNodes [0]. nodeValue;

if (elValue. match ("true"))

document. getElementById (elId). checked = true;

else

document. getElementById (elId). checked = false;

}

catch (error) {

if (elId == undefined) {

continue;

}

else if (elValue == undefined) // we leave current state

continue;

}

}

}

/* XMLHttpRequest object specific functions */

function GetXmlHttpObject () { // init XMLHttp object

var xmlHttp=null;

try {

xmlHttp=new XMLHttpRequest (); // Firefox, Opera 8.0+, Safari

}

catch (e) {

try { // Internet Explorer

xmlHttp=new ActiveXObject ("Msxml2. XMLHTTP");

}

catch (e) {

xmlHttp=new ActiveXObject ("Microsoft. XMLHTTP");

}

}

return xmlHttp;

}

/* Objects templates */

function periodicObj (url, period) {

this. url = url;

this. period = (typeof period == "undefined")? 0: period;

}

Приложение Г. Текст файла CSS style. css

. maintable {

border-radius: 10px;

width: 50%;

height: 440px;

border: 5px double green;

margin: auto;

margin-top: 50px;

background-color: #eee;

}

. noborder {

border-width: 0px;

}

. altfont{

font-weight: bold;

font-size: 10pt;

}

. topborder {

border-style: none;

border-top: 1px solid green;

}

. threeborder {

border-style: none;

border-left: 1px solid green;

border-right: 1px solid green;

border-bottom: 1px solid green;

}

body {

font-family: Arial, Verdana, sans-serif; /* Семейство шрифтов */

font-size: 11pt; /* Размер основного шрифта в пунктах */

background-color: #ffffff; /* Цвет фона веб-страницы */

color: #333; /* Цвет основного текста */

}

p {

text-align: justify; /* Выравнивание по ширине */

margin-left: 60px; /* Отступ слева в пикселах */

margin-right: 10px; /* Отступ справа в пикселах */

border-left: 1px solid #999; /* Параметры линии слева */

border-bottom: 1px solid #999; /* Параметры линии снизу */

padding-left: 10px; /* Отступ от линии слева до текста */

padding-bottom: 10px; /* Отступ от линии снизу до текста */

font-size: 12pt;

}

. mybutton {

background-image: url (bg. png);

color: green;

text-decoration: none; /* Убираем подчёркивание у ссылки */

cursor: pointer;

border-radius: 8px; /* Скругляем уголки */

border: 2px solid green; /* Добавляем синюю рамку */

padding: 5px 20px; /* Добавляем поля */

display: inline-block;

width: 300px;

font-weight: bold;

outline: 0px;

}

. mybutton. small {

width: auto;

padding: 3px 20px;

}

. mybutton: hover {

/* background: ur (img/link_button2. gif) no-repeat; */

background-image: url (bg3. png);

background-repeat: repeat;

color: #9c2134;

}

Размещено на Allbest.ru


Подобные документы

  • Характеристика сущности и назначения автоматизированных информационных систем (АИС), под которыми понимают совокупность информационных массивов технических, программных и языковых средств, предназначенных для сбора, хранения, поиска, обработки данных.

    контрольная работа [24,4 K], добавлен 29.08.2010

  • Разработка структурной схемы системы. Выбор и обоснование не указанных в задании элементов. Анализ временных параметров системы. Разработка файла конфигурации для системы сбора-обработки данных на языке AHDL. Моделирование цифровой части системы.

    курсовая работа [1,1 M], добавлен 26.10.2014

  • Системы автоматизации перевода, структура подсистемы сбора данных. Схема ввода речевых сообщений на компьютер. Расчет характеристик и выбор микрофона. Технические характеристики микрофонного усилителя ВМ-137. Аналого-цифровой преобразователь AD1871.

    контрольная работа [733,5 K], добавлен 08.11.2012

  • Организация электронного документооборота. Создание базы данных. Анализ существующих программных средств автоматизации. Обоснование выбора платформы разработки программного продукта. Выбор почтового клиента. Реализация нулевого прототипа системы.

    курсовая работа [384,1 K], добавлен 14.11.2016

  • Создание системы сбора пространственных и атрибутивных данных как один из важнейших этапов ведения кадастрового учета. Требования к информационной системе, исходная информация по кадастровому учету объектов недвижимости. Необходимые программные средства.

    курсовая работа [4,5 M], добавлен 17.07.2013

  • Информационные и автоматизированные системы управления технологическими процессами на промышленных предприятиях. Базы данных в автоматизированных системах управления. Системы планирования ресурсов предприятия, сбора и аналитической обработки данных.

    контрольная работа [486,7 K], добавлен 29.10.2013

  • Разработка программы-модели в среде "Adamview" для имитации стратегии и наглядной иллюстрации работы программы. Настройка сети; описание эмулятора стратегии и экранных форм интерфейса оператора. Структурная схема распределённой системы управления.

    курсовая работа [2,6 M], добавлен 21.01.2013

  • Система сбора данных. Скорость передачи данных. Ячеистая структура сети ZigBee. Основные технические характеристики для ZigBee-модемов компании Telegesis. Изменение состояния цифровых выводов модема. Удаленные маршрутизаторы и конечные устройства.

    дипломная работа [1,4 M], добавлен 05.06.2011

  • Создание реляционной базы данных для закупки и реализации товаров. Оптовая база - крупная сеть складских и рабочих помещений. Требования к функциональным характеристикам. Структурная схема базы данных. Программная реализация системы, ее тестирование.

    курсовая работа [1,6 M], добавлен 08.07.2012

  • Назначение и цели создания системы. Разработка логической модели данных, выбор хранилища. Диаграмма классов для диспетчера и контент-менеджера, схема взаимодействия объектов системы. Описание программных модулей. Тестирование веб-базированной системы.

    курсовая работа [5,4 M], добавлен 17.09.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.