Система сбора данных и управления
Создание аппаратно-программных средств для системы сбора данных и управления с использованием локальной сети. Предметная область системы, ее структурная схема. Описание рабочих алгоритмов, выбор аппаратной платформы. Тестирование разработанной системы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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       Обновлять автоматически:
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