版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
-.z.嵌入式系統(tǒng)是物聯(lián)網(wǎng)產(chǎn)業(yè)開展的核心推動力〔中嵌協(xié)會柏斯維〕
2009年8月7日**總理視察**時,提出在**加快建立"感知中國〞中心的指示。從此在國內(nèi)不管是各級地方政府還是企業(yè)都很重視,并掀起了一個追逐物聯(lián)網(wǎng)的行動熱潮。一年過去了,再一次的解讀溫總理的"感知中國〞更具有現(xiàn)實意義和深遠的歷史意義。嵌入式與物聯(lián)網(wǎng)的關(guān)系溫總理用經(jīng)典的四個字"感知中國〞全面描述和定義了物聯(lián)網(wǎng)產(chǎn)業(yè)的內(nèi)涵。從字面上來理解,"感〞既是信息采集〔傳感器〕;"知〞信息處理〔運算、處理、控制、通信并通過互聯(lián)網(wǎng)進展信息傳遞和控制〕。這些都是嵌入式系統(tǒng)的特征實質(zhì)。如果歸納一句話來理解總理"感知中國〞的含義,既是通過嵌入式系統(tǒng)智能終端產(chǎn)品網(wǎng)絡(luò)化的過程實現(xiàn)感知的目的。簡單講,物聯(lián)網(wǎng)是物與物、人與物之間的信息傳遞與控制。專業(yè)上講就應該是智能終端的網(wǎng)絡(luò)化。大家都知道,嵌入式系統(tǒng)無所不在,有嵌入式系統(tǒng)的地方才會有物聯(lián)網(wǎng)的應用。所以,我在所有的場合都在傳播一個理念,什么是物聯(lián)網(wǎng)呢?物聯(lián)網(wǎng)就是基于互聯(lián)網(wǎng)的嵌入式系統(tǒng)。從另一個意義也可以說,物聯(lián)網(wǎng)的產(chǎn)生是嵌入式系統(tǒng)高速開展的必然產(chǎn)物,更多的嵌入式智能終端產(chǎn)品有了聯(lián)網(wǎng)的需求,催生了物聯(lián)網(wǎng)這個概念的產(chǎn)生。記得是在09年10月12日,英特爾公司宣布成立中國研究院并且專攻嵌入式方向。在全球熱炒物聯(lián)網(wǎng)概念時,英特爾為什么不成立物聯(lián)網(wǎng)研究院?而專注嵌入式的研究呢。這是值得深思研究的課題。則,在2010英特爾信息技術(shù)峰會〔IDF〕的前一天,英特爾CTO賈斯汀和英特爾研究院方之熙院長一起宣布了英特爾中國研究院全新的研究戰(zhàn)略——致力于打造世界一流的嵌入式系統(tǒng)研究院。方院長講到:作為英特爾研究院全球5大節(jié)點之一,英特爾中國研究院將承當嵌入式系統(tǒng)的前瞻性研究任務(wù),放眼全球嵌入式增長機遇,融合國人智慧做世界級的研究,并將國際水準的研究成果直接奉獻于中國的開展。中國手機、互聯(lián)網(wǎng)、有線電視用戶人數(shù)均居全球第一,也已成為名副其實的世界第一汽車市場。從智能交通到車載信息設(shè)備,從"物聯(lián)網(wǎng)〞到智能家電,嵌入式移動互聯(lián)在中國開展前景廣闊。中國這么大的市場規(guī)模、這么快的增長速度,提供了很多非常好的研究課題。這些研究課題在世界上也都是非常前沿的,為企業(yè)提供了很多的開展時機。企業(yè)追逐的是利潤而不是概念。從以上例子就足以看出物聯(lián)網(wǎng)與嵌入式系統(tǒng)的關(guān)系、嵌入式系統(tǒng)的重要性、嵌入式系統(tǒng)在物聯(lián)網(wǎng)產(chǎn)業(yè)開展中的角色地位。嵌入式系統(tǒng)才是拉動GDP的增長和產(chǎn)業(yè)升級的真正動力。嵌入式系統(tǒng)才是物聯(lián)網(wǎng)產(chǎn)業(yè)開展的核心推動力。物聯(lián)網(wǎng)人才需求與培養(yǎng)企業(yè)開展科技進步離不開人才,特別是在21世紀科技高速開展的今天。毋庸置疑,物聯(lián)網(wǎng)的開展對人才的需求更是迫在眉睫,人才的短缺將是物聯(lián)網(wǎng)產(chǎn)業(yè)開展的瓶頸。可以這樣說,在物聯(lián)網(wǎng)產(chǎn)業(yè)開展中,有了人才就掌握了競爭的主動權(quán),有了人才就占領(lǐng)了競爭的制高點。目前,在高等院校都紛紛加快物聯(lián)網(wǎng)相關(guān)的學科建立,社會培訓機構(gòu)也是人才培養(yǎng)的不可或缺的力量,特別是利用嵌入式系統(tǒng)的培訓機構(gòu),在嵌入式系統(tǒng)教學的根底上,增加通信、無線模塊、RFID、網(wǎng)絡(luò)等課程,就可以很快的適應物聯(lián)網(wǎng)技術(shù)開展的需求,這也是最快的人才培養(yǎng)捷徑之一。大力推動嵌入式與物聯(lián)網(wǎng)的人才引進和培訓,是為構(gòu)筑物聯(lián)網(wǎng)產(chǎn)業(yè)開展創(chuàng)造人力資源的根底條件。物聯(lián)網(wǎng)、云計算不是炒作,是嵌入式系統(tǒng)物聯(lián)與互聯(lián)網(wǎng)技術(shù)在高級階段上穿插融合變革時代產(chǎn)物。當物聯(lián)網(wǎng)熱鬧過后,必然會進入一個理性時代。深入了解嵌入式系統(tǒng)物聯(lián)史,有助于厘清物聯(lián)網(wǎng)、云計算的本質(zhì)。目前,物聯(lián)網(wǎng)、云計算領(lǐng)域中,缺少嵌入式系統(tǒng)視角。物聯(lián)網(wǎng)系統(tǒng)構(gòu)建、物聯(lián)網(wǎng)系統(tǒng)工程應用,是物聯(lián)網(wǎng)時代嵌入式系統(tǒng)的新機遇。下面由卓躍教育為您介紹。
單片、嵌入、物聯(lián)三位一體的嵌入式系統(tǒng)
單片機與嵌入式系統(tǒng)是不同時代概念的同一事物,經(jīng)歷了許多不為人知的誕生環(huán)境與開展歷程。單片機概念出現(xiàn)在PC機誕生之前,PC機誕生后才有了嵌入式系統(tǒng)概念。無論是單片機還是嵌入式系統(tǒng),它們都呈現(xiàn)出單片、嵌入、物聯(lián)的三位一體的特征。"單片〞機強調(diào)的是形態(tài),"嵌入式〞系統(tǒng)強調(diào)的是應用形式,"物聯(lián)〞則是它們的本質(zhì)。
PC機出現(xiàn)后,計算機走出機房,成為群眾工具。計算領(lǐng)域、工業(yè)控制領(lǐng)域都寄希望于計算機,由此誕生了通用計算機系統(tǒng)與嵌入式計算機系統(tǒng)兩大概念。嵌入式計算機系統(tǒng)企圖沿襲PC機的模式,走單板機、工控機、單片微型計算機〔6801系列〕的道路,卻進入死胡同。在計算機界,"嵌入式計算機系統(tǒng)〞死亡了,"嵌入式系統(tǒng)〞卻始終存在,以至于20多年后,單片機有了"嵌入式系統(tǒng)〞的稱呼與視角。
1971年,Intel公司推出了世界上第一個微處理器,即4位微處理器4004。隨后又推出了8位的8008。1974年,8008開展成8080,成為第二代微處理器,其目的是代替子邏輯電路器件,應用于各種電路系統(tǒng)和設(shè)備中,由此開場了嵌入式處理器的嘗試。隨后,眾多的單片機〔微控制器〕應運而生,如1974年Mostek公司與仙童公司的3870系列單片機、1976年Intel公司的8048單片機、1977年GI公司的PIC1650系列單片機、1978年Rockwell公司的6500系列單片機,以及1980年Intel
公司推出的MCS51系列單片機,這些單片機本質(zhì)上都是嵌入式處理器根底上的微控制器。1981年8月12日,IBM公司在Intel8088微處理器根底上,推出了全球第一臺
個人計算機,即IBMPC。
實際上,在PC機誕生前,單片機也經(jīng)為嵌入式應用尋找到了最正確的"微控制器〞應用模式。當時由于強調(diào)的自己獨立的單片形態(tài),稱之為單片機,即實現(xiàn)單
片形態(tài)嵌入式應用的微控制器,控制的是物理對象。因此,"單片〞、"嵌入〞、"物聯(lián)〞是單片機或嵌入式系統(tǒng)三位一體、與生俱來的本質(zhì)特性M0內(nèi)核PLC11C14的中斷和其他arm產(chǎn)品的中斷不一樣,PLC11C14芯片手冊上說有32個中斷0-31,其中27號中斷保存,0-11共十二個是靜態(tài)的中斷向量,有外部引腳P0端口的,P0_0到P0_11,一一對應,12號中斷由P1_0對應。PLC11C14一共四個端口,P0到P3,其中P0到P2每個端口十二個引腳,P3口四個引腳。內(nèi)部中斷有四個定時器中斷,看門狗中斷,串口,SPI,等等。這些也**小異,但是在最后的有一個中斷狀態(tài)的中斷源28PIO_3GPIOinterruptstatusofport3
29PIO_2GPIOinterruptstatusofport2
30PIO_1GPIOinterruptstatusofport1
31PIO_0GPIOinterruptstatusofport0經(jīng)過仔細研究BSP包內(nèi)的軟件源碼,發(fā)現(xiàn)上訴四個中斷可以監(jiān)控四個端口,當這些端口中有引腳電位變化時,出發(fā)中斷,進入中斷效勞函數(shù),PIOINT0_IRQHandler〔void〕;在中斷中判斷是哪個引腳發(fā)生了中斷if(GPIOIntStatus(PORT2,8)){//對應PORT2_8端口的中斷事件,}這樣一來所有外部的GPIO,都可以作為外部中斷使用,大大提高了資源的利用率,我們可以在下半部機制完成中斷處理函數(shù),在中斷中只置位標志位,在main〔〕函數(shù)中輪詢標志位是否發(fā)生變化,發(fā)生變化后跳轉(zhuǎn)到對應的下半部處理函數(shù)中,這樣中斷觸發(fā)后可以很快完成處理,不會在中斷中浪費過多資源。同時我們可以設(shè)置觸發(fā)中斷的條件,BSP包中提供了一個函數(shù)GPIOSetInterrupt(PORT2,8,1,0,0);GPIOIntEnable(PORT2,8);對應參數(shù),第一個端口號;第二個參數(shù)管腳號;第三個參數(shù)電平觸發(fā)還是跳變沿觸發(fā)〔0為跳變沿觸發(fā),1為電平觸發(fā)〕;第四個參數(shù)當?shù)谌齾?shù)設(shè)置為跳變沿出發(fā)時,0位單邊沿觸發(fā),1為雙邊沿觸發(fā);當?shù)谌齾?shù)設(shè)置為點評觸發(fā)是,0代表低電平,1代表高電平。第五個參數(shù)設(shè)置上升沿還是下降沿觸發(fā),對單邊沿觸發(fā)有效。上面設(shè)置PORT2_8引腳,低電平觸發(fā)方式。1、Colink固件升級Colink板子2、安裝Colink驅(qū)動ColinkE*UsbDriver-1.2.0,然后重啟PCwin764位ColinkE*UsbDriver-1.2.0安裝方法youneedtodownload
Modifiedtheinffilefrom:.cooco*.org/tools/patch/colinke*.inf,
thendothefollowingoperation:1.Openthe
Installationfolder:
replacetheinffilewiththenewone.2.Deletethefile:dpinst.*ml.3.rundpinst_amd64.e*e.PS:OnlyWindows
64bit
OSneedtodo
thereplacement.For
Nepi:Pleasedothesameoperation.Ifthedriver
isunabletobeinstalledonvista64bit,connectus.Wewillreleaseanewdriverinafewdays.早上安裝keil的一點小插曲,我的是vin764位沒有對應的驅(qū)動,后來在網(wǎng)上查到的解決方法;好了下面開場分析程序,在keil下建立工程就會生成對應的引導文件,也就是匯編寫的,怎么引導c代碼,這里掠過。開場第一個main〔〕;intmain(void)
{
SystemInit();
GPIOInit();
CLKOUT_Setup(CLKOUTCLK_SRC_MAIN_CLK);
/*這個主要是要設(shè)置CLKOUT,WDTCLOCK,SPI,UART,等輸出時鐘*/
while(1)
{
}
}好了啃掉第一個函數(shù)SystemInit〔〕,這里涉及到各種存放器都要親自動手去看芯片手冊,voidSystemInit(void)
{
uint32_ti;
LPC_SYSCON->SYSMEMREMAP=0*2;/*這個函數(shù)是內(nèi)存映射函數(shù),0*2,是將flash映射到0*0地址,我看了一下手冊,發(fā)現(xiàn)flash就在0*0地址,所以只要程序下載到flash中就可以運行,〔注意,程序默認從0*0地址開場執(zhí)行的〕*/
LPC_SYSCON->SYSOSCCTRL=0*00;/*系統(tǒng)晶振選擇,0*00是默認值,頻率范圍是1-20MHz*/
LPC_SYSCON->PDRUNCFG&=~(0*1<<5);/*這個用來設(shè)置power-down的,不知道怎么翻譯好了,大家應該都懂得,這種表示是將第六位清零,其他位保持不變第六位是SYSOSC_PD系統(tǒng)晶振*/
for(i=0;i<0*100;i++);/*等待200us
*/
Main_PLL_Setup();
/*又遇到一個函數(shù),這個函數(shù)是對時鐘進展設(shè)置的,上面選擇了晶振然后設(shè)置時鐘很正常的思路,具體解釋看下面*/
LPC_SYSCON->SYSAHBCLKCTRL|=(1<<16);/*使能IO時鐘,注意,這里沒有使能其他時鐘,如果要用其他設(shè)備,可以在下面添加使能代碼*/
return;
}voidMain_PLL_Setup(void)
{
uint32_tregVal;
ClockSource=OSC_CLK;
LPC_SYSCON->SYSPLLCLKSEL=MAIN_CLKSRCSEL_Val;
/*SelectsystemOSC*/
LPC_SYSCON->SYSPLLCLKUEN=0*01;
/*Updateclocksource*/
LPC_SYSCON->SYSPLLCLKUEN=0*00;
/*toggleUpdateregisteronce*/
LPC_SYSCON->SYSPLLCLKUEN=0*01;
while(!(LPC_SYSCON->SYSPLLCLKUEN&0*01));
/*Waituntilupdated*/
/*這一局部是選擇時鐘源的,將SYS-PLL時鐘源設(shè)置為System晶振,并更新時鐘源*/
regVal=LPC_SYSCON->SYSPLLCTRL;
regVal&=~0*1FF;
LPC_SYSCON->SYSPLLCTRL=(regVal|(MAIN_PLL_P_Val<<5)|MAIN_PLL_M_Val);
LPC_SYSCON->PDRUNCFG&=~(0*1<<7);/*這個用來設(shè)置power-down的,第八位代表SYSPLL_PD晶振*/
while(!(LPC_SYSCON->SYSPLLSTAT&0*01));
LPC_SYSCON->MAINCLKSEL=0*03;
LPC_SYSCON->MAINCLKUEN=0*01;
LPC_SYSCON->MAINCLKUEN=0*00;
LPC_SYSCON->MAINCLKUEN=0*01;
while(!(LPC_SYSCON->MAINCLKUEN&0*01));
/*這一局部是選擇時鐘源的,將MAINCLK時鐘源設(shè)置為PLLclock,并更新時鐘源*/
LPC_SYSCON->SYSAHBCLKDIV=SYS_AHB_DIV_Val;
SystemFrequency=ClockSource*(MAIN_PLL_M_Val+1);
SystemAHBFrequency=(uint32_t)(SystemFrequency/SYS_AHB_DIV_Val);
return;
}工程大體框架:假設(shè)你要管理一個大的倉庫,其中要防止的重要的物品,你要實時的監(jiān)控倉庫的環(huán)境,包括溫度,濕度,光照,和進出貨物的數(shù)量以及進出人員。怎么樣像不像一個倉庫管理員的工作,沒錯就是管理員的工作,我們的工程就是要用物聯(lián)網(wǎng)的知識來搭建一個系統(tǒng)完成管理員的工作,這個工程管理比管理員管理范圍更大精度更高,本錢更低。好了下面具體說一說工程模塊。模塊一:感知模塊,實時監(jiān)測倉庫環(huán)境,主要有溫度傳感器,濕度傳感器,三軸傳感器。模塊二:效勞模塊,boa效勞器,在a8上創(chuàng)立效勞器,處理由M0上傳來的信息。模塊三:在a8上移植linu*kernel,用于線程調(diào)度,攝像頭驅(qū)動〔I2C控制〕模塊四:網(wǎng)頁編寫,可以登錄物聯(lián)網(wǎng)系統(tǒng),實時查看環(huán)境信息下面是boa效勞器移植過程嵌入式Linu*中的Web效勞器應用〔一〕BOA簡介
Boa是一個非常小巧的Web效勞器,其可執(zhí)行代碼只有60K左右。它是一個單任務(wù)的Web效勞器,只能依次完成用戶的請求,而不會fork出新的進程處理并發(fā)連接請求。但boa支持cgi,能夠為cgi程序fork出一個進程來執(zhí)行。Boa的設(shè)計目標是速度和平安,在其站點公布的性能測試中,boa的性能要好于apache效勞器。:w隨著網(wǎng)絡(luò)技術(shù)的迅猛開展,在嵌入式設(shè)備的管理和交互中,基于Web方式的應用成為目前的主流,用戶可以直接通過遠程登錄的方式對設(shè)備進展管理和維護,大大方便了使用性。下面就為大家講解一下boa效勞器在嵌入式Linu*系統(tǒng)中的移植過程?!捕矪OA效勞器移植工具鏈:gcc
version
4.5.1
平臺:處理器:s5pc100
內(nèi)核:linu*-2.6.35
1.解壓源碼2.進入src/./configure
生成Makefile
修改Makefile
修改CC
=
gcc
為
CC
=
arm-none-linu*-gnueabi-gcc
修改CPP
=
gcc
-E
為
CPP
=
arm-none-linu*-gnueabi-gcc
-E3.make編譯1)
編譯一個linu*下的c系統(tǒng),包含詞法和語法分析模塊,Linu*上用bison和fle*。yacc是一個文法分析器的生成器,bison即是yacc的GNU版本.Le*和YACC是用于構(gòu)造詞法分析機和語法解釋器的工具,利用Le*和YACC你可以輕松的構(gòu)造一個語法解釋器。sudo
apt-get
install
bison
fle*2)
修改src/log.c注釋掉if
(dup2(error_log,
STDERR_FILENO)
==
-1)
{
DIE("unable
to
dup2
the
error
log");
}為:/*if
(dup2(error_log,
STDERR_FILENO)
==
-1)
{
DIE("unable
to
dup2
the
error
log");
}*/3)
修改src/boa.c注釋掉下面內(nèi)容:if
(passwdbuf
==
NULL)
{
DIE(〞getpwuid〞);
}
if
(initgroups(passwdbuf->pw_name,
passwdbuf->pw_gid)
==
-1)
{
DIE(〞initgroups〞);
}為#if
0
if
(passwdbuf
==
NULL)
{
DIE(〞getpwuid〞);
}
if
(initgroups(passwdbuf->pw_name,
passwdbuf->pw_gid)
==
-1)
{
DIE(〞initgroups〞);
}
#endif4)
修改src/boa.c
if
(setuid(0)
!=
-1)
{
DIE(〞icky
Linu*
kernel
bug!〞);
}為#if
0
if
(setuid(0)
!=
-1)
{
DIE(〞icky
Linu*
kernel
bug!〞);
}#endif5)
執(zhí)行make出現(xiàn)錯誤:arm-none-linu*-gnueabi-gcc
-g
-O2
-pipe
-Wall
-I.
-c
-o
util.o
src/util.csrc/util.c:100:1:
error:
pasting
"t"
and
"->"
does
not
give
a
valid
preprocessing
tokenmake:
***
[util.o]
Error
1
#
去掉其中〔./src/pat.h〕120行的
〞##〞
。然后給boa瘦身
arm-none-linu*-gnueabi-strip
boa〔三〕Boa效勞器配置1.創(chuàng)立目錄mkdir
/source/rootfs/etc/boa將boa源碼目錄下的boa.conf拷貝到/source/rootfs/etc/boa目錄下cp
boa.conf
/source/rootfs/etc/boa2.修改配置文件boa.confvim
/source/rootfs/etc/boa(1)
user的修改修改
User
nobody為
User
0
(2)
Group的修改修改
Group
nogroup為
Group
0(3)ScriptAlias的修改修改ScriptAlias
/cgi-bin/
/usr/lib/cgi-bin/為
ScriptAlias
/cgi-bin/
//cgi-bin/(5)DocumentRoot的修改修改DocumentRoot
/var/為DocumentRoot
/(6)ServerName的設(shè)置修改#ServerName
為
ServerName
否則會出現(xiàn)錯誤"gethostbyname::No
such
file
or
directory〞(7)AccessLog修改修改AccessLog
/var/log/boa/access_log為#AccessLog
/var/log/boa/access_log(8)以下配置和boa.conf的配置有關(guān),都是在ARM根文件系統(tǒng)rootfs中創(chuàng)立以下步驟在開發(fā)板上進展:創(chuàng)立HTML文檔的主目錄/mkdir
/創(chuàng)立CGI腳本所在錄
//cgi-binmkdir
//cgi-bin當不能使用cgi
時將#AddType
application/*-d-cgi
cgi改為AddType
application/*-d-cgi
cgi〔四〕boa器測試將boa拷貝到開發(fā)板根文件系統(tǒng)的/etc/boa下#cp
src/boa
/source/rootfs/etc/boa將ubuntu下/etc/mime.types拷貝到開發(fā)板根文件系統(tǒng)的/etc下#cp
/etc/mime.types
/source/rootfs/etc將你的主頁inde*.html拷貝到目錄下運行boa,然后在主機游覽器輸入開發(fā)板網(wǎng)址[rootfarsight
boa]#
./boa[30/10/2011:19:10:36
+0000]
boa:
server
built
10
30
2011
at
19:10:36[30/10/2011:19:10:36
+0000]
boa:
starting
server
pid=968,
port
80附1〕:boa配置文件參數(shù)說明boa的配置文件是/etc/boa/boa.conf。Port:boa效勞器監(jiān)聽的端口,默認的端口是80。如果端口小于1024,則必須是root用戶啟動效勞器。
Listen:綁定的ip地址。不使用這個參數(shù)時,將綁定所有的地址。User:連接到效勞器的客戶端的身份,可以是用戶名或UID。Group:連接到效勞器的客戶端的組,可以是組名或GID。ServerAdmin:效勞器出故障時要通知的地址。ErrorLog:指定錯誤日志文件。如果路徑?jīng)]有以"/〞開場,則相對于ServerRoot路徑。沒有配置時默認的文件是/dev/stderr。假設(shè)不想記錄日志,指定文件為/dev/null。AccessLog:設(shè)置存取日志文件,與ErrorLog類似。UseLocaltime:設(shè)置使用本地時間,使用UTC時注釋這個參數(shù)。這個參數(shù)沒有值。VerboseCGILogs:在錯誤日志文件中記錄CGI啟動和停頓時間,假設(shè)不記錄,注釋這個參數(shù)。這個參數(shù)沒有值。ServerName:指定效勞器的名稱,當客戶端使用gethostname
+
gethostbyname時返回給客戶端。VirtualHost:虛擬主機開關(guān)。使用此參數(shù),則會在DocumentRoot設(shè)定的目錄添加一個ip地址作為新的DocumentRoot來處理客戶端的請求。如DocumentRoot設(shè)置為/var/,則localhost/
則轉(zhuǎn)換成,假設(shè)注釋此參數(shù),則為/var//。DocumentRoot:HTML文件的根目錄〔也就是的目錄〕。UserDir:指定用戶目錄。DirectoryInde*:指定預生成目錄信息的文件,注釋此變量將使用DirectoryMaker變量。這個變量也就是設(shè)置默認主頁的文件名。DirectoryMaker:指定用于生成目錄的程序,注釋此變量將不允許列目錄。DirectoryCache:當DirectoryInde*文件不存在,而DirecotryMaker又被注釋掉時,將列出這個參數(shù)指定目錄給客戶端。KeepAliveMa*:每個連接允許的請求數(shù)量。如果將此值設(shè)為"
0
",將不限制請求的數(shù)目。KeepAliveTimeOut:在關(guān)閉持久連接前等待下一個請求的秒數(shù)?!裁搿?。MimeTypes:設(shè)置包含mimetypes信息的文件,一般是/etc/mime.types。DefaultType:默認的mimetype類型,一般是te*t/html。CGIPath:相當于給CGI程序使用的$PATH變量。SinglePostLimit:一次POST允許最大的字節(jié)數(shù),默認是1MB.AddType:
增加MimeType沒有指定的類型,例:
AddType
type
e*tension
[e*tension
...]。要使用cgi,必須添加cgi類型:AddType
application/*-d-cgi
cgiRedirect:重定向文件Aliases:指定路徑的別名。ScriptAlias:指定腳本路徑的虛擬路徑。附2〕:編譯中的出錯處理錯誤1:debian:/home/a/boa-0.94.13/src#
make
yacc
-d
boa_grammar.y
make:
yacc:
mand
not
found
make:
***
[y.tab.c]
Error
127
解決方法:
debian:/home/a/boa-0.94.13/src#
apt-get
install
bison
錯誤2:debian:/home/a/boa-0.94.13/src#
make
le*
boa_le*er.l
make:
le*:
mand
not
found
make:
***
[le*.yy.c]
Error
127
解決方法:
debian:/home/a/boa-0.94.13/src#
apt-get
install
fle*make:
Nothing
to
be
done
for
`all'.
說明make沒有檢查到需要編譯的東西,庫或者應用程序已經(jīng)編譯好了。make主要檢查的是時間戳,只要target比依賴的文件時間靠后它就認為不需要編譯.今天寫個程序,要求有輸入兩個數(shù)字,想都沒想就用了scanf〔〕;本想寫的嚴謹一些,就加了判斷條件if〔scanf〔"%d,%d〞,&a,&b〕!=2〕{perror("inputerror\n");e*it(1);}測試時,輸入少于兩了數(shù)據(jù),一個或不插入時錯誤信息被打印出來,但是當我輸入的數(shù)字個數(shù)超過兩個時,不會出現(xiàn)打印信息,測試結(jié)果也正常這樣讓我覺得這個判斷條件有些雞肋了,于是到網(wǎng)上找一下關(guān)于scanf〔〕原函數(shù)#include<stdio.h>#include<stdarg.h>#include"loc_incl.h"intscanf(constchar*format,...){va_listap;intretval;va_start(ap,format);retval=_doscan(stdin,format,ap);va_end(ap);returnretval;}其中,_doscan(stdin,fromat,ap)很復雜,大致功能定義一些后面需要用到的變量跳過format格式串中的空格,并且跳過輸入流中的空格輸入流stream與format格式串中的空白符〔空白符可以是空格(space)、制表符(tab)和新行符(newline)〕保持一致在format中的字符為'%'的前提下,stream中的字符也為'%',則繼續(xù)format當前字符為'*',表示讀指定類型的數(shù)據(jù)但不保存指定說明最大域?qū)?。在百分?%)與格式碼之間的整數(shù)用于限制從對應域讀入的最大字符數(shù)于寬度所以我出現(xiàn)的問題很好解釋了,我輸入數(shù)字時被放在輸入緩沖區(qū)中,scanf對有需要的數(shù)字進展格式化輸入,多余的還在緩沖區(qū)內(nèi),所以不會報錯。輸入一個數(shù)字后再輸入任何間隔符,都會被scanf吃掉,直到輸入第二個數(shù)字為止,格式化輸入完畢。工程中涉及到溫濕度傳感器,原理圖給出,用DHT11溫濕度一體ICDHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專用的數(shù)
字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有枀高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一
個電阻式感濕元件和一個NTC
測溫元件。單總線說明
DHT11器件采用簡化的單總線通信。單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換、控制均由單總線
完成。設(shè)備〔主機或從機〕通過一個漏枀開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時能夠
釋放總線,而讓其它設(shè)備使用總線;單總線通常要求外接一個約
5.1kΩ的上拉電阻,這樣,當總線閑置時,
其狀態(tài)為高電平。由于它們是主從結(jié)極,只有主機呼叫從機時,從機才能應答,因此主機器件都必須
嚴格遵循單總線序列,如果出現(xiàn)序列混亂,器件將不響應主機。單總線傳送數(shù)據(jù)位定義
DATA用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次傳送40位數(shù)據(jù),高位先
出。
數(shù)據(jù)格式:
8bit濕度整數(shù)數(shù)據(jù)
+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)
+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗位。校驗位數(shù)據(jù)定義
"8bit濕度整數(shù)數(shù)據(jù)
+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)
+8bit溫度小數(shù)數(shù)據(jù)〞8bit校驗位等于所
得結(jié)果的末8位。
例如一:接收到的40位數(shù)據(jù)為:
00110101
00000000
00011000
00000000
01001101
濕度高8位
濕度低8位
溫度高8位
溫度低8位
校驗位
計算:00110101+00000000+00011000+00000000=01001101下面是一些代碼,其中涉及到時序的地方做出注釋uint32_tRead_Temp_Hum(uint8_t*temp,uint8_t*hum)
{
uint32_tt_last;
uint8_thum_10,hum_01,temp_10,temp_01,chksum,chk;
uint32_ttc1,tc;
uint32_ti;
p3_2_counter=0;//用來檢測中斷是否產(chǎn)生,在中斷中進展p3_2_counter++;
t_last=p3_2_counter;
GPIOIntDisable(PORT1,5);
/************************************************************************************************
微處理器的I/O設(shè)置為輸出同時輸出低電平,且低電平保持時間不能小于18ms,然后微處理器的I/O
設(shè)置為輸入狀態(tài),由于上拉電阻,微處理器的I/O即DHT11的DATA數(shù)據(jù)線也隨之變高,等待DHT11作
出答復信號**************************************************************************************************/
GPIOSetDir(PORT1,5,1);//SetPIO1_5tooutput
GPIOSetValue(PORT1,5,0);
delay_ms(30);//保證時間大于18ms
GPIOSetValue(PORT1,5,1);//變成高電平
GPIOSetDir(PORT1,5,0);//setPIO1_5toinput
GPIOSetInterrupt(PORT1,5,0,0,0);//設(shè)置下降沿觸發(fā),使能中斷
GPIOIntEnable(PORT1,5);/************************************************************************************************
DHT11的DATA引腳檢測到外部信號有低電平時,等待外部信號低電平完畢,延遲后DHT11的DATA
引腳處于輸出狀態(tài),輸出
80微秒的低電平作為應答信號,緊接著輸出
80
微秒的高電平通知外設(shè)準備接
收數(shù)據(jù),微處理器的
I/O
此時處于輸入狀態(tài),檢測到
I/O
有低電平〔DHT11回應信號〕后,等待80微秒的高電平后的數(shù)據(jù)接收**************************************************************************************************/
for(i=0;i<3;i++)//應答信號剛好是三個跳變沿,全部承受后,進展數(shù)據(jù)的接收
{
GPIOSetInterrupt(PORT1,5,0,0,i&0*01);
while(p3_2_counter==t_last);//用來檢測是否有中斷產(chǎn)生,生成中斷后p3_2_counter++;
t_last=p3_2_counter;
}
/************************************************************************************************
由DHT11的DATA引腳輸出40位數(shù)據(jù),微處理器根據(jù)I/O電平的變化接收40位數(shù)據(jù),
位數(shù)據(jù)"0〞的格式為:
50
微秒的低電平和
26-28
微秒的高電平。
位數(shù)據(jù)"1〞的格式為:
50
微秒的低電平加
70
微秒的高電平。**************************************************************************************************/
for(i=0;i<40;i++)
{
GPIOSetInterrupt(PORT1,5,0,0,1);
while(p3_2_counter==t_last);//功能同上
t_last=p3_2_counter;
tc1=p3_2_tc;
//p3_2_tc=SysTick->VAL;在中斷中完成
GPIOSetInterrupt(PORT1,5,0,0,0);
while(p3_2_counter==t_last);
t_last=p3_2_counter;
if(p3_2_tc<tc1)
{
tc=tc1-p3_2_tc;
//高電平時間,低電平都是50us不判斷,判斷高電平是時間來判斷是‘0’or‘1’
}
else
{
tc=48000-(p3_2_tc-tc1);
}/***********************************************************************************************
DATA用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次傳送40位數(shù)據(jù),高位先出。
數(shù)據(jù)格式:
8bit濕度整數(shù)數(shù)據(jù)
+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)
+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗位。**************************************************************************************************/
if(i<8)
{
hum_10<<=1;
if(tc>=2328)//這里的2328是怎么得到的,系統(tǒng)時鐘設(shè)置為48MHz,(1/48MHZ)*2328=48.5us;
hum_10|=0*01;//上面提到位數(shù)據(jù)"0〞時高電平26-28微秒我們?nèi)?7us,位數(shù)據(jù)"1〞時高電平70,
}//判斷上下的臨界值〔27+70〕/2=48.5;
elseif(i<16)
{
hum_01<<=1;
if(tc>=2328)
hum_01|=0*01;
}
elseif(i<24)
{
temp_10<<=1;
if(tc>=2328)
temp_10|=0*01;
}
elseif(i<32)
{
temp_01<<=1;
if(tc>=2328)
temp_01|=0*01;
}
else
{
chksum<<=1;
if(tc>=2328)
chksum|=0*01;
}
}
/***********************************************************************************************
當一位數(shù)據(jù)傳輸完畢后,總線重新恢復高電平狀態(tài),下面的一次中斷,就是恢復高電平狀態(tài)同時也用來
同步p3_2_counter==t_last;**************************************************************************************************/
GPIOSetInterrupt(PORT1,5,0,0,1);
while(p3_2_counter==t_last);
GPIOIntDisable(PORT1,5);
*temp=temp_10;
*(temp+1)=temp_01;
*hum=hum_10;
*(hum+1)=hum_01;/************************************************************************************************
下面是對校驗位核對,如上面所訴
"8bit濕度整數(shù)數(shù)據(jù)
+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)
+8bit溫度小數(shù)數(shù)據(jù)〞8bit校驗位等于所**************************************************************************************************/
chk=hum_10;
chk+=hum_01;
chk+=temp_10;
chk+=temp_01;
if(chk==chksum)
return1;
else
return0;
}以上就是單總線下溫濕度傳感器的核心代碼,其中中斷局部不同處理器定義不同,這里就不進展闡述了。還有不處理器的系統(tǒng)時鐘設(shè)置不同,在臨界值得判斷也不一樣。關(guān)于ucos在lpc上移植:主要有四個文件,傳統(tǒng)的有三個文件:os_cpu_c.c,os_cpu_a.s,os_cpu.h還有一個是IRQ.incOs_cpu.h:這個文件相對來說還是很簡單的,關(guān)于變量的重新定義,堆棧生長度,臨界區(qū)了,最有特色的是運用swi軟中斷。Os_task_sw()肯定是用軟中斷了,在mdk中要聲明一個沒有定義的函數(shù),就要在這個函數(shù)前面加上__SWI(),也就是用它聲明,而__swi()就是一個關(guān)鍵字了。uc在*86上移植也是用的軟中斷int0*80。在lpc中一旦調(diào)用os_task_sw()就會觸發(fā)__swi(0*00)這個軟中斷,那它就會使arm進入管理模式然后執(zhí)行軟中斷函數(shù)SoftwareInterrupt,這個函數(shù)在os_cpu_a.s中定義,后續(xù)。關(guān)于os_task_sw()osstartHighRdy()進入臨界區(qū)的兩個函數(shù)還有一些ARM用到的函數(shù)它們?yōu)槭裁匆密浿袛喽挥闷胀ê瘮?shù)調(diào)用呢?答案是這樣的:ARM處理核有兩個指令集,用戶任務(wù)還可以使用兩種模式:用戶和系統(tǒng),組合起來就有4種方式了,各種方式對系統(tǒng)資源有不同的控制權(quán)限。為了使底層接口函數(shù)與處理器狀態(tài)無關(guān),同時在任務(wù)調(diào)用相應的函數(shù)時不需要知道函數(shù)位置,也就是說:統(tǒng)一進入管理模式,統(tǒng)一用軟中斷調(diào)用。Os_cpu_a.s:這個文件主要當然是SoftwareInterrupt了,在這個函數(shù)里有三方面跳轉(zhuǎn):1.os_task_sw2.osstartHighRdy3.SWI_E*ception1.一個任務(wù)切換也調(diào)用OSIntCt*Sw這個標號,說明它和中斷切換過程一樣,都是先保存老的再迎取新的,但是有一點不同:就是這兩個函數(shù)調(diào)用的模式不同:任務(wù)級切換是進入管理模式而中斷級是進入IRQ模式。妙就妙在雖然是進入的不同模式但一進來都是在SP指針下取老任務(wù)的數(shù)據(jù)然后保存,然后迎新。可以看出這時的SP指針一個是管理的一種情況是IRQ的。Spsr記錄了任務(wù)的環(huán)境,而不管什么模式都用R3來記錄spsr,然后保存,總之陳明計寫得太效率和有技巧了。2.osstartHighRdy其實就是調(diào)用OSIntCt*Sw_1,就不多說了它就是迎新唄3.這個函數(shù)在.c文件里,后續(xù)。Os_cpu_c.c:文件有一個OSTaskStkInit函數(shù)就很明顯了,按照堆棧格式模擬,就不多說了。SWI_E*ception這個函數(shù)有好幾路轉(zhuǎn)向,去除了第一和第二路,因為在os_cpu_a.s中定義了。臨界區(qū)函數(shù)其實就是進去把中斷位關(guān)閉就行了。但是還有一個陳添上去的一個全局變量OsEnterSum:主要來實現(xiàn)臨界區(qū)嵌套,當OsEnterSum=0的時候才開中斷。剩下的函數(shù)也是改變cpsr就完了沒什么。主要是在調(diào)用完SWI_E*ception這個函數(shù)后還得回SoftwareInterrupt里面實現(xiàn)任務(wù)的繼續(xù)運行關(guān)于函數(shù)的參數(shù)問題兩個參數(shù)一個放到R0一個放到R1中傳過來,呵呵。IRQ.inc:這個文件是匯編頭文件里面定義了一個宏,在不少應用里直接把它復制到IRQ.S中了,然后在寫上;/*中斷*/IRQ_HandlerHANDLERIRQ_E*ception;/*定時器0中斷*/Timer0_HandlerHANDLERTimer0_E*ception這就是對這個宏的運用,分別套用就行了,它實現(xiàn)了os對IRQ的管理。在這個宏里面調(diào)用了兩個函數(shù):一個是IRQ_E*ception_Function,一個是OSIntE*it。第一個可以是Timer0_E*ception在它里面調(diào)用timetick(),第二個調(diào)用OSIntE*it(),在這個函數(shù)里調(diào)用osIntct*Sw(),但是在includes.h中#defineOSIntCt*Sw()return,把這個函數(shù)給費了,呵呵,直接返回啦。然后在宏里判斷是否執(zhí)行中斷級切換。但是我就不明白陳為什么這樣做了。也可以還用os的osIntct*Sw()調(diào)用啊,如果回來了說明不切換,然后直接恢復現(xiàn)場也行吧。切換就調(diào)用osIntct*Sw唄。ISL20093是一款綜合性光傳感器,內(nèi)部有16位ADC轉(zhuǎn)換,通過I2C用戶配置參數(shù),可編程lu*范圍選擇。大致了解一下芯片知識,然后詳細追蹤代碼,看I2C實現(xiàn)。RE*TE*ternalresistorpinforADCreference;connectthispintogroundthrougha(nominal)100kΩresistor兩個二極管,一個隊可見光〔540nm〕敏感,一個對紅外線敏感,模式一對應第一個二極管工作,模式二對應第二個二極管工作,模式三對應二個二極管同時工作〔Diode1-Diode2〕。8*8位內(nèi)部控制存放器:2*8控制存放器2*8設(shè)置上下中斷閾值4*8data存放器,只讀模式,2個reading2個timercountsISL20093的原理圖如下所示:由原理圖可以看出,ISL20093數(shù)據(jù)傳輸是由I2C總線傳輸?shù)?,I2C協(xié)議簡單介紹一下。具體的定義這里不說了,主要是怎么用,以其中一種模式進展說明。I2CSDAOut從機數(shù)據(jù)時序,I2CSDAin主機發(fā)送的時序。解釋一下上面的時序:時鐘高電平時一個下降沿,表示開場信號Start。接著在8個時鐘周期內(nèi)發(fā)送10001000〔w〕前七位是從機地址,最后一位是代表〔R/W〕。下一個時鐘〔第九個時鐘〕,從機拉低應答。接下來8個時鐘周期是存放器的地址,00000***三位可變的。從機應答。主機接收后SCL高電平期間,由主機產(chǎn)生一個上升沿的信號作為停頓。主機產(chǎn)生一個下降沿作為start。接下來發(fā)送8位的讀指令,10001001.拉低SDA放棄總線。接下來從機發(fā)送8位數(shù)據(jù)。主機將SDA不操作,作為應答非信號。迫使從機釋放總線。主機發(fā)送停頓信號。A1-6代表從機地址,R7-0存放器地址,D7-0數(shù)據(jù)。I2C寫時序原理和上面一樣,對應讀寫位改變就行。這里只是I2CSDAOut只從機,I2CSDAin主機發(fā)送的。解釋一下上面的時序:時鐘高點評時一個下降沿,Start。接著在8個時鐘周期內(nèi)發(fā)送10001000〔w〕下一個時鐘,從機壓低應答。接下來8個時鐘周期是存放器的地址,00000***三位可變的。從機應答。主機接收后SCL高電平期間,由主機產(chǎn)生一個上升沿的信號作為停頓。主機產(chǎn)生一個下降沿作為start。接下來發(fā)送8位的讀指令,10001001.拉低SDA放棄總線。接下來從機發(fā)送8位數(shù)據(jù)。主機將SDA不操作,作為應答非信號。迫使從機釋放總線。主機發(fā)送停頓信號。A1-6代表從機地址,R7-0存放器地址,D7-0數(shù)據(jù)I2C的寫時序和上面類似。這里只是ISL20093的簡單介紹,I2C具體傳輸還要看LPC11C14配置存放器。配置LPC11C14可以不用考慮每個時序的數(shù)據(jù)。是不是覺得上面分析的時序沒有用了,其實還是有用的,當你用io口模擬時序時就必須要考慮每個時序的數(shù)據(jù)了。這種情況還是存在的,有的IC傳輸協(xié)議不是標準I2C的協(xié)議,而是變種協(xié)議,大致一樣,細節(jié)處要自己考慮。下一篇準備寫一下LPC11C14s上的I2C存放器配置,以及,存放器控制時序方法。很多時候我們需要在程序退出的時候做一些諸如釋放資源的操作,但程序退出的方式有很多種,比方main()函數(shù)運行完畢、在程序的*個地方用e*it()完畢程序、用戶通過Ctrl+C或Ctrl+break操作來終止程序等等,因此需要有一種與程序退出方式無關(guān)的方法來進展程序退出時的必要處理。方法就是用ate*it()函數(shù)來注冊程序正常終止時要被調(diào)用的函數(shù)。
ate*it()函數(shù)的參數(shù)是一個函數(shù)指針,函數(shù)指針指向一個沒有參數(shù)也沒有返回值的函數(shù)。ate*it()的函數(shù)原型是:intate*it(void(*)(void));
在一個程序中最多可以用ate*it()注冊32個處理函數(shù),這些處理函數(shù)的調(diào)用順序與其注冊的順序相反,也即最先注冊的最后調(diào)用,最后注冊的最先調(diào)用。下面是一段代碼例如:
#include<stdlib.h>
//使用ate*it()函數(shù)所必須包含的頭文件stdlib.h
#include<stdio.h>
voidfn1(void);
intmain(void)
{
ate*it(fn1);
printf("a./n");
return0;
}
voidfn1()
{
printf("b./n");
}
輸出結(jié)果是:a.b.什么是倉儲系統(tǒng)編輯倉儲系統(tǒng)指的是產(chǎn)品分揀或儲存接收中使用的設(shè)備和運作策略的組合。[1]倉儲系統(tǒng)的構(gòu)成編輯·存儲空間·貨物·倉儲設(shè)施設(shè)備·人員·作業(yè)及管理系統(tǒng)等要素。倉儲系統(tǒng)的經(jīng)濟優(yōu)化編輯對于倉儲系統(tǒng)的根本要求是滿足供給需求前提下,盡量減少存貯物資的數(shù)量,從而降低存貯費用,提高存貯系統(tǒng)經(jīng)濟效益。為到達這一要求,在存貯管理和運輸上必須選擇合理的策略。確定性存貯模型的特點是需求消耗速度和入庫補充特性都是確定的。它又依入庫物資速率是否有限制和出庫物資是否允許短缺分為有限供給率、無限供給率、允許缺貨、不許缺貨四種類型。本文主要討論基于(β,S)混合策略確實定性存貯理論,即物資補充和消耗滿足一定的規(guī)律下,當存貯量Q低于最底庫存量β時,就進展物資補充,把存貯量提高到S;反之,當Q>S時,就不做補充。一、物流倉儲模型的建立(一)無限供給率根本問題假設(shè)①無限供給率,即定貨物資在規(guī)定時間一次到貨。每次定貨量為常數(shù)Q;②需求連續(xù)均勻,速度為常數(shù)R,t時間的需求量為R(t);③當存貯量下降到β時,又進展下一次補充。存貯量隨時間的變化如下圖;④每次定貨費用C0和單位物資年存貯費C1為常數(shù);⑤年度保障經(jīng)費用Cy為運輸費Cd和存貯費Cb之和,即Cy=Cd+Cb.。(二)數(shù)學模型的建立與分析在每次輸送量Q,年需求量D的條件下,年運輸次數(shù)為,每次運輸費用C0,因而年運輸費用為;在無限供給率及常需求速度情況下,物資存貯量以勻速減小。當存貯量接近戒備量β時,一次定貨入庫。因而,年平均存貯量為,于是年存貯費用為;由此得到年度保障費用公式:由公式可以看出,增加每次定貨量Q,一方面可以減少年度運輸費Cd,另一方面又增加年存貯費Cb。研究每次定貨量Q對年度保障費用Cy的動態(tài)影響,將公式積分得到:,由此計算得到最小經(jīng)濟定貨量,相應的年度保障經(jīng)費優(yōu)化值.二、應用舉例(一)問題陳述為滿足市場需求,*物資倉庫每年從上級倉庫申請補充*型號物資5000箱,每箱物資每月存貯費用折算大約50元,其每次運輸費10000元,每次運量為200箱。倉庫不允許缺貨,始終保持800箱的庫存量用于市場調(diào)撥?,F(xiàn)明確研究問題為:如何調(diào)整運輸方案和運輸量,在滿足市場供給的情況下,使倉庫經(jīng)費最少。(二)數(shù)學模型的驗證計算根據(jù)的運輸存貯模型,可知當前每次運輸量Q=200箱,倉庫最低存貯要求β=800箱,單位物資年度存貯費用C1=50*12=600元。代入年度經(jīng)費公式,得到當前倉庫年度保障經(jīng)費Cy≈80萬元。現(xiàn)考慮每次運量為變量,采取優(yōu)化方案。計算每次定貨入庫量≈408箱,則年度運輸存貯綜合經(jīng)費=72.5萬元。(三)基于Vensim的動力學建模對于物流倉儲系統(tǒng),由于其物資補充和消耗規(guī)律易于描述,經(jīng)費構(gòu)造流圖簡單,適合使用系統(tǒng)動力學方法建立經(jīng)濟模型加以分析和研究,從而有利于決策者選擇更加合理的策略,提高系統(tǒng)經(jīng)濟效益。針對上述案例,明確研究對象為每次定貨入庫量Q對度綜合經(jīng)費Cy的影響,現(xiàn)基于Vensim仿真平臺,建立"定貨量-經(jīng)費〞動力學模型如下:在建立的動力學模型中,調(diào)整定貨入庫變量Q數(shù)值,將每次運輸量取整,即每次運輸入庫408箱物資。利用模型再次仿真運算,得到=72.5萬,=25次。費用比擬結(jié)果如下列圖:可見采取優(yōu)化方案后,雖然增加了物資存貯的經(jīng)費,但是運輸本錢Cd降低幅度遠遠大于存貯費用Cb的提高量,使得最終總經(jīng)費得到了有效的減少,年度保障費用比擬結(jié)果如下:為此,將每次運輸量取整,采取優(yōu)化措施,即每次運輸入庫400箱。運次減少一半,運輸周期延長了一倍??紤]真實系統(tǒng)運次和運輸周期條件可以實現(xiàn)的情況下,采取這樣的方案不但使得每年綜合保障經(jīng)費節(jié)省了約7.5萬元,而且大大節(jié)省了人力物力的開支。概述編輯這里所稱的"倉儲〞包括生產(chǎn)和供給領(lǐng)域中各種類型的儲存?zhèn)}庫和配送中心,當然包括普通倉庫,物流倉庫以及倉儲管理系統(tǒng)貨代倉庫。RF-WMS倉儲管理系統(tǒng)包括軟件、硬件、管理經(jīng)歷。傳統(tǒng)的倉儲管理系統(tǒng)概念中忽略了管理經(jīng)歷和自動識別硬件的缺失。倉儲管理系統(tǒng)中的軟件指的是支持整個系統(tǒng)運作的軟件局部,包括收貨處理、上架管理、揀貨作業(yè)、月臺管理、補貨管理、庫內(nèi)作業(yè)、越庫操作、循環(huán)盤點、RF操作、加工管理、矩陣式收費等。倉儲管理系統(tǒng)中的硬件指的是用于打破傳統(tǒng)數(shù)據(jù)采集和上傳的瓶頸問題,利用自動識別技術(shù)和無線傳輸提高數(shù)據(jù)的精度和傳輸?shù)乃俣?。管理?jīng)歷指的是開發(fā)商根據(jù)其開發(fā)經(jīng)歷中客戶的管理方式和理念整合的一套管理理念和流程,為企業(yè)做到真正的管理。優(yōu)點編輯·根底資料管理更加完善文檔利用率高倉儲管理系統(tǒng)·庫存準確·操作效率高·庫存低,物料資產(chǎn)使用率高·現(xiàn)有的操作規(guī)程執(zhí)行難度小·易于制定合理的維護方案·數(shù)據(jù)及時,本錢降低·提供歷史的記錄分析·規(guī)程文件變更后的及時傳遞和正確使用·倉庫與財務(wù)的對帳工作量見效效率提高·預算控制嚴格、退庫業(yè)務(wù)減少特點編輯從財務(wù)軟件、進銷存軟件CIMS,從MRP、MRPII到ERP,代表了中國企業(yè)從粗放型管理走向集約管理的要求,競爭的劇烈和對本錢的要求使得管理對象表現(xiàn)為:整和上游、企業(yè)本身、下游一體化供給鏈的信息和資源。而倉庫,尤其是制造業(yè)中的倉庫,作為鏈上的節(jié)點,不同鏈節(jié)上的庫存觀不同,在物流供給鏈的管理中,不再把庫存作為維持生產(chǎn)和銷售的措施,而將其作為一種供給鏈的平衡機制,其作用主要是協(xié)調(diào)整個供給鏈。但現(xiàn)代企業(yè)同時又面臨著許多不確定因素,無論他們來自分供方還是來自生產(chǎn)或客戶,對企業(yè)來說處理好庫存管理與不確定性關(guān)系的唯一方法是加強企業(yè)之間信息的交流和共享,增加庫存決策信息的透明性、可靠性和實時性。而這,正是WMS所要幫助企業(yè)解決的問題。WMS軟件和進銷存管理軟件的最大區(qū)別在于:進銷存軟件的目標是針對于特定對象〔如倉庫〕的商品、單據(jù)流動,是對于倉庫作業(yè)結(jié)果的記錄、核對和管理——報警、報表、結(jié)果分析,比方記錄商品出入庫的時間、經(jīng)手人等;而WMS軟件則除了管理倉庫作業(yè)的結(jié)果記錄、核對和管理外最大的功能是對倉庫作業(yè)過程的指導和標準:即不但對結(jié)果進展處理,更是通過對作業(yè)動作的指導和標準保證作業(yè)的準確性、速度和相關(guān)記錄數(shù)據(jù)的自動登記〔入計算機系統(tǒng)〕,增加倉庫的效率、管理透明度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河南鄭州熱力集團有限公司招聘筆試參考題庫含答案解析
- 2025年湖南華菱線纜股份有限公司招聘筆試參考題庫含答案解析
- 2025年度家庭保姆雇傭與家庭生活美學合同4篇
- 2025年消防工程總承包與應急響應服務(wù)合同
- 2025年社區(qū)宣傳欄制作及公益廣告投放合同3篇
- 二零二五版定制門窗設(shè)計研發(fā)與市場推廣合同4篇
- 湛江科技學院《語言基礎(chǔ)》2023-2024學年第一學期期末試卷
- 運城學院《心理咨詢專業(yè)導論》2023-2024學年第一學期期末試卷
- 二零二五版門衛(wèi)人員應急響應能力提升合同4篇
- 二零二五年度教育信息化項目投資合同4篇
- T-SDLPA 0001-2024 研究型病房建設(shè)和配置標準
- (人教PEP2024版)英語一年級上冊Unit 1 教學課件(新教材)
- 全國職業(yè)院校技能大賽高職組(市政管線(道)數(shù)字化施工賽項)考試題庫(含答案)
- 2024胃腸間質(zhì)瘤(GIST)診療指南更新解讀 2
- 光儲電站儲能系統(tǒng)調(diào)試方案
- 2024年二級建造師繼續(xù)教育題庫及答案(500題)
- 小學數(shù)學二年級100以內(nèi)連加連減口算題
- 建設(shè)單位如何做好項目管理
- 三年級上遞等式計算400題
- 一次性餐具配送投標方案
- 《中華民族多元一體格局》
評論
0/150
提交評論