• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    μC/Modbus在STM32上的移植及從站設(shè)計

    2014-12-18 11:14:27陳文禮饒毅高翔
    現(xiàn)代電子技術(shù) 2014年24期

    陳文禮+饒毅+高翔

    摘 ?要: 為了解決工業(yè)測控系統(tǒng)儀表數(shù)量多,通信協(xié)議不兼容,組網(wǎng)困難的問題,在此給出一種Modbus從站設(shè)計方法。從站系統(tǒng)平臺基于STM32F103處理器和μC/OS?Ⅱ嵌入式實時操作系統(tǒng),通過移植μC/Modbus協(xié)議棧實現(xiàn)Modbus RTU從站通信功能。在此詳細(xì)分析了μC/Modbus的架構(gòu)和工作流程,給出了移植及使用方法,能夠幫助讀者快速開發(fā)出符合標(biāo)準(zhǔn)的Modbus從站設(shè)備。

    關(guān)鍵詞: μC/Modbus; μC/OS?Ⅱ; STM32F103; 從站

    中圖分類號: TN919?34; TP368.1 ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼: A ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2014)24?0090?04

    Transplantation of μC/Modbus on STM32 and slave device design

    CHEN Wen?li, RAO Yi, GAO Xiang

    (Tangshan Kaicheng Electric Control Equipment Group Co., Ltd., Tangshan 063020, China)

    Abstract: In order to reduce instrumentation quantity, realize communications protocol compatibility and solve networking difficulty of industrial measurement and control system, a design method of Modbus slave is presented in this paper. The slave device platform is based on STM32F103 processor and μC/OS?II real?time embedded operating system. Modbus RTU slave communication function is realized by porting μC/Modbus protocol stack. The μC/Modbus architecture and workflow are analyzed in this paper. The transplantation and use methods are given to help readers to develop a qualified Modbus slave device quickly.

    Keywords: μC/Modbus; μC/OS?II; STM32F103; slave device

    隨著計算機(jī)技術(shù)的飛速發(fā)展,現(xiàn)代工業(yè)測控系統(tǒng)變得越來越復(fù)雜,儀表種類繁多且來自不同廠家,因此通信協(xié)議的標(biāo)準(zhǔn)化、統(tǒng)一化對整個系統(tǒng)的聯(lián)網(wǎng)顯得尤為重要。Modbus 協(xié)議是電子儀器儀表的一種通用語言,協(xié)議定義了電子設(shè)備能識別和使用的信息結(jié)構(gòu),廣泛用于工業(yè)通信領(lǐng)域,其優(yōu)點(diǎn)是實時性好,可靠性高,適用于小到中等規(guī)模的數(shù)據(jù)傳輸。

    自1979年由莫迪康公司發(fā)明以來,逐漸成為工業(yè)領(lǐng)域最流行的協(xié)議。盡管目前各種工業(yè)通信協(xié)議不斷涌現(xiàn),但Modbus憑借其簡單而精致的結(jié)構(gòu)以及開放性和無會員限制的特點(diǎn)仍得到越來越多的支持。國內(nèi)企業(yè)對Modbus 則更為青睞。幾乎所有工業(yè)設(shè)備、智能儀表等都在使用它作為通信標(biāo)準(zhǔn),HMI和組態(tài)軟件也都把它作為所支持的通信協(xié)議之一。

    μC/Modbus是一個針對嵌入式應(yīng)用的通用Modbus 協(xié)議棧,具有結(jié)構(gòu)清晰簡單,響應(yīng)速度快,占用資源少,單任務(wù)多通道等特點(diǎn)。將μC/Modbus移植到 ARM Cortex?M3 處理器上就可以構(gòu)架出高性價比的嵌入式產(chǎn)品,對于減少開發(fā)周期和提高產(chǎn)品的質(zhì)量等方面有著重要的意義。

    1 ?μC/Modbus的架構(gòu)及工作流程

    μC/Modbus源代碼包括有4個文件夾:Source、OS、Ports、Product。其中Source文件夾下的程序是相對獨(dú)立的、與硬件平臺和操作系統(tǒng)無關(guān)的部分,也就是說這部分在使用時不需要做任何改動。包含文件:MB.C、MB.H,MB_DEF.H,MB_UTIL.C,MBS_CORE.C 。

    以下3個文件文件的程序是需要用戶根據(jù)使用的軟硬件平臺和應(yīng)用需求做相應(yīng)移植和修改的:

    OS???μC/Modbus與操作系統(tǒng)的接口程序。包含文件:MB_OS.C,MB_OS.H。

    Ports???μC/Modbus與CPU的接口程序。包含文件:CPU.H,MB_BSP.C。

    Product???μC/Modbus的配置文件和用戶應(yīng)用程序。包含文件:MB_CFG.H,MB_DATA.C。各模塊之間的關(guān)系如圖1所示。

    μC/Modbus協(xié)議棧要求處理器具有一個或多個串行接口、能夠容納Modbus數(shù)據(jù)幀的RAM空間和一個定時器。對操作系統(tǒng)的要求是能夠建立一個接收任務(wù)和一個消息事件隊列。μC/Modbus采用一個任務(wù)處理所有通道接收的數(shù)據(jù)幀,空閑時任務(wù)只是等待消息隊列上的事件。當(dāng)任何通道接收到數(shù)據(jù)幀時,一個指向收到數(shù)據(jù)幀通道的指針被發(fā)布到消息隊列上,任務(wù)收到消息后解析該數(shù)據(jù)包,并做相應(yīng)的回復(fù)響應(yīng)。

    μC/Modbus為每個通道分配一個MODBUS_CH類型的數(shù)據(jù)結(jié)構(gòu),MODBUS_CH數(shù)據(jù)結(jié)構(gòu)里包括通道號,工作模式,節(jié)點(diǎn)地址,通信參數(shù),超時計數(shù),發(fā)送緩存,接收緩存等。串口接收中斷服務(wù)程序會把收到的字節(jié)放置在接收緩存中,直到收到結(jié)束標(biāo)志。如果該通道被配置用于Modbus ASCII模式,包的末端為一個換行字符(即0x0A)。如果該通道被配置為Modbus RTU模式,一個數(shù)據(jù)幀發(fā)送結(jié)束后至少要有3.5個字節(jié)的空閑時間(參見Modbus RTU通訊規(guī)范)。本設(shè)計采用Modbus RTU模式,需要CPU提供一個定時器,以保證數(shù)據(jù)幀接收結(jié)束超時機(jī)制。如圖2所示,μC/Modbus為每個通道分配的MODBUS_CH數(shù)據(jù)結(jié)構(gòu)里都包含一個超時計數(shù)器TimeoutCtr。串口初始化時,μC/Modbus會根據(jù)所設(shè)置的波特率計算出一個超時計數(shù)值。每次收到數(shù)據(jù),該通道的RTU計數(shù)器都會重置為超時計數(shù)值。例如一個通道配置為9 600 b/s,那么3.5個字符的傳輸時間為3 646 μs,假如CPU定時周期為1 ms,那么超時計數(shù)值為4,為了提高容錯性μC/Modbus會在理論值上多一個定時周期,也就是此例最終的超時計數(shù)值等于5。串口每次接收數(shù)據(jù)都會對計數(shù)器重置,在定時中斷里,計數(shù)值遞減。當(dāng)計數(shù)值遞減到0時,就會發(fā)送一個指向該超時通道的消息指針。μC/Modbus RTU模式下代碼工作流程如下:

    MB_CommRxTxISR_Handler() ??? MB_BSP.C

    串口收到數(shù)據(jù),并觸發(fā)接收中斷,中斷服務(wù)函數(shù)MB_CommRxTxISR_Handler調(diào)用MB_RxByte()函數(shù)進(jìn)行處理:

    MB_RxByte() ??? MB.C

    根據(jù)通道的工作模式,將接收的數(shù)據(jù)傳遞給ASCII或RTU 處理程序。如果是RTU調(diào)用 MB_RTU_RxByte()。

    MB_RTU_RxByte() ??? MB.C

    串口接收到的數(shù)據(jù)存放到接收緩存RXBUF[]里。由于RTU幀結(jié)束是按時間定界的,MB_RTU_RxByte()重置通道RTU定時計數(shù)器??,表示接收幀還沒有結(jié)束。一個完整幀的接收完成信號是通過前面所述的RTU計時超時產(chǎn)生的(參見 MB_RTU_TmrUpdate()???MB.C)。

    MB_OS_RxTask() ??? MB_OS.C

    μC/Modbus所有通信都是由MB_OS_RxTask()接收任務(wù)來處理。任務(wù)等待來自RTU定時器的超時消息,表明一個數(shù)據(jù)幀已接收結(jié)束。該消息實際上是一個指向Modbus通道的指針。然后調(diào)用MB_RxTask()(MB.C)判斷是Master還是Slave工作模式,如果是Slave模式則調(diào)用 MBS_RxTask()(MBS_CORE.C)。 MBS_RxTask()根據(jù)ASCII或RTU模式調(diào)用MBS_ASCII_Task()(MBS_CORE.C)或MBS_RTU_Task()(MBS_CORE.C)做該消息的實際處理:

    MBS_RTU_Task() – MBS_CORE.C

    MBS_RTU_Task()首先判斷接收的幀是否完整,然后調(diào)用MB_RTU_RxCalcCRC驗證數(shù)據(jù)是否正確。如果是一個有效的幀,則調(diào)用MBS_FCxx_Handler()來解析:

    MBS_FCxx_Handler() ??? MBS_CORE.C

    該函數(shù)根據(jù)收到的功能碼,調(diào)用相應(yīng)的功能碼處理函數(shù)。并生產(chǎn)回復(fù)數(shù)據(jù)幀存放在TxFrameData[]數(shù)組里。

    MB_RTU_Tx() ??? MB.C

    如果從站需要回復(fù)一個數(shù)據(jù)幀給Modbus主站,這個函數(shù)就會被調(diào)用。 MB_RTU_Tx()將TxFrameData[]里的數(shù)據(jù)復(fù)制到發(fā)送緩存TXBUF[]中。 并是通過調(diào)用MB_RTU_TxCalcCRC()計算CRC校驗。然后調(diào)用MB_Tx()來啟動傳輸。

    MB_Tx()?MB.C

    這個函數(shù)用來將回復(fù)的數(shù)據(jù)幀發(fā)送到Modbus主站。將指針TxBufPtr指向TXBUF[]并使能發(fā)送完成中斷。通過調(diào)用MB_TxByte()來發(fā)送第一個字節(jié),在發(fā)送完成中斷里TxBufPtr遞增以發(fā)送下一個數(shù)據(jù),直到全部發(fā)送完成:

    MB_TxByte()?MB.C

    首先檢查剩余待發(fā)送的字節(jié)數(shù)TxBufByteCtr,如果TxBufByteCtr等于0則表明消息幀全部發(fā)送完成,則關(guān)閉發(fā)送中斷。如果TxBufByteCtr大于0,則調(diào)用MB_BSP.C文件里的串口發(fā)送函數(shù)MB_CommTx1(),將TxBufPtr指向的字節(jié)數(shù)據(jù)發(fā)送到串口。TxBufPtr加1以指向下一個數(shù)據(jù),TxBufByteCtr減1以記憶剩余待發(fā)送的字節(jié)數(shù)。

    2 ?μC/OS?Ⅱ操作系統(tǒng)接口部分移植

    為了建立Modbus接收任務(wù)及實現(xiàn)消息機(jī)制, μC/Modbus需要在MB_OS.C文件里實現(xiàn)3個函數(shù)和一個接收任務(wù)。

    MB_OS_Init()

    MB_OS_RxSignal()

    MB_OS_Exit()

    MB_OS_RxTask()

    首先用戶需要定義消息事件變量、任務(wù)優(yōu)先級及任務(wù)堆棧大小,其中消息單元數(shù)等于Modbus通道數(shù)[1]。

    static ?OS_EVENT ? ? ? ? ? ?*MB_OS_RxQ;

    static ?void ? ? *MB_OS_RxQTbl[MODBUS_CFG_MAX_CH];

    #define ?MB_OS_CFG_RX_TASK_PRIO ? ? ? ? ? ? ? ?3

    #define MB_OS_CFG_RX_TASK_ID ? MB_OS_CFG_RX_

    TASK_PRIO

    #define ?MB_OS_CFG_RX_TASK_STK_SIZE ? ? ? ? ? ?256

    MB_OS_Init ()

    用于初始化μC/OS?II操作系統(tǒng)接口,創(chuàng)建一個消息隊列和一個等待要接收的數(shù)據(jù)包的任務(wù)。主要代碼如下[2]:

    MB_OS_RxQ=OSQCreate(&MB_OS_RxQTbl[0], ?MODBUS_CFG_MAX_CH);

    (void)OSTaskCreateExt((void (*)(void *)) MB_OS_RxTask,

    (void ? ? ? ? ? *) 0,

    (OS_STK *)&MB_OS_RxTaskStk[MB_OS_CFG_RX_TASK_STK_SIZE ? 1],

    (INT8U ? ? ? ? ? ) MB_OS_CFG_RX_TASK_PRIO,

    (INT16U ? ? ? ? ?) MB_OS_CFG_RX_TASK_ID,

    (OS_STK ? ? ? ? *)&MB_OS_RxTaskStk[0],

    (INT32U) MB_OS_CFG_RX_TASK_STK_SIZE,

    (void ? ? ? ? ? *) 0,

    (INT16U)(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));

    MB_OS_RxSignal()

    一個數(shù)據(jù)包接收結(jié)束時MB_OS_RxSignal()就會被調(diào)用。其主要代碼就是向消息隊列發(fā)布消息OSQPost(MB_OS_RxQ, (void *)pch);其中參數(shù)pch為指向接收到數(shù)據(jù)包的Modbus通道的數(shù)據(jù)結(jié)構(gòu)。

    MB_OS_Exit()

    此函數(shù)在Modbus任務(wù)終止時被調(diào)用,用于刪除任務(wù)和 消息隊列。

    OSTaskDel(MB_OS_CFG_RX_TASK_PRIO);

    OSQDel(MB_OS_RxQ, OS_DEL_ALWAYS, ?&err);

    MB_OS_RxTask()

    這個任務(wù)是由MB_OS_Init()創(chuàng)建, 如前面所述該任務(wù)只是簡單等待消息,并調(diào)用MB_RxTask()主要代碼如下:

    while (DEF_TRUE) {

    pch=(MODBUS_CH*)OSQPend(MB_OS_RxQ,0,&err); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?MB_RxTask(pch); }

    μC/Modbus已經(jīng)提供了基于μC/OS?Ⅱ操作系統(tǒng)的接口程序,如果用戶系統(tǒng)使用的是μC/OS?Ⅱ則不需要做任何改動。但μC/Modbus可以在任何實時操作系統(tǒng)下運(yùn)行,只是需要用戶來完成接口程序。

    3 ?STM32F103處理器接口部分移植

    μC/Modbus源碼Ports文件夾下的程序是與硬件平臺關(guān)聯(lián)的。CPU.H用于定義數(shù)據(jù)類型、處理器堆棧數(shù)據(jù)字長、堆棧增長方向、任務(wù)切換宏和臨界區(qū)訪問處理方式。MB_BSP.C用于操作串口和RTU定時器[3]。

    OS_CPU.H 頭文件移植到Cortex?M3平臺時,需要重新定義包含與編譯器無關(guān)的數(shù)據(jù)類型。代碼如下:

    typedef ? ? ? ? ? ?void ? ? ?CPU_VOID;

    typedef ?unsigned ?char ? ? ?CPU_CHAR;

    typedef ?unsigned ?char ? ? ?CPU_BOOLEAN;

    typedef ?unsigned ?char ? ? ?CPU_INT08U;

    typedef ? ?signed ?char ? ? ?CPU_INT08S;

    typedef ?unsigned ?short ? ? CPU_INT16U;

    typedef ? ?signed ?short ? ? CPU_INT16S;

    typedef ?unsigned ?int ? ? ? CPU_INT32U;

    typedef ? ?signed ?int ? ? ? CPU_INT32S;

    typedef ? ? ? ? ? ?float ? ? CPU_FP32;

    typedef ? ? ? ? ? ?double ? ?CPU_FP64;

    定義存儲模式,Cortex?M3 使用的是小端存儲模式。

    #define ?CPU_CFG_ENDIAN_TYPE ? CPU_ENDIAN_TYPE_LITTLE

    定義臨界區(qū)代碼訪問涉及到的全局中斷開關(guān)指令有OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。 在OS_CPU.H 頭文件中定義如下[4]:

    typedef ?CPU_INT32U ?CPU_SR;

    #define ?CPU_CRITICAL_ENTER() ? ?{cpu_sr = CPU_SR_Save();}

    #define ?CPU_CRITICAL_EXIT() ? ? {CPU_SR_Restore(cpu_sr);}

    其中CPU_SR_Save ()和CPU_SR_Restore () 分別對應(yīng)關(guān)中斷和開中斷處理,需要使用匯編代碼實現(xiàn),代碼如下:

    CPU_SR_Save

    MRS ? ? R0, PRIMASK ? ? ? ? ? ? ? ? ?;保存PRIMASK

    CPSID ? I ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;關(guān)中斷

    BX ? ? ?LR

    CPU_SR_Restore

    MSR ? ? PRIMASK, R0 ? ? ? ? ? ? ? ? ?;恢復(fù)PRIMASK

    BX ? ? ?LR

    MB_BSP.C中實現(xiàn)串口操作、串口初始化、串口配置、串口發(fā)送接收中斷服務(wù)程序和定時中斷服務(wù)程序,具體實現(xiàn)參考STM32固件庫。

    MB_CommExit()???關(guān)閉使用的所有串行接口

    MB_CommPortCfg()???配置串口通信參數(shù)

    MB_CommRxTxISR_Handler()???串口接收、發(fā)送中斷服務(wù)程序,需要加入如下代碼。

    if (Rx Interrupt) {

    pch?>RxCtr++;

    MB_RxByte(pch, c);

    }

    if (Tx Interrupt) {

    pch?>TxCtr++;

    MB_TxByte(pch);

    }

    MB_CommRxIntDis()???使能串口接收中斷。

    MB_CommRxIntEn()???禁止串口接收中斷。

    MB_CommTx1()???發(fā)送一個字節(jié)數(shù)據(jù)。

    MB_CommTxIntDis()???禁止串口發(fā)送中斷。

    MB_CommTxIntEn()???使能串口發(fā)送中斷。

    MB_RTU_TmrInit()???初始化RTU定時器。

    MB_RTU_TmrExit()???停用RTU定時器。

    MB_RTU_TmrISR_Handler()???RTU 定時中斷服務(wù)程序。需要加入如下代碼。

    MB_RTU_TmrCtr++;

    MB_RTU_TmrUpdate() ;

    4 ?μC/ Modbus的使用及應(yīng)用程序設(shè)計

    移植部分的代碼編寫完成后,就可以根據(jù)自己的應(yīng)用需求配置μC/Modbus和設(shè)計應(yīng)用程序。

    在MB_CFG.H文件中配置參數(shù)。

    定義設(shè)備為Modbus從站設(shè)備

    #define ?MODBUS_CFG_SLAVE_EN ? ? ?DEF_ENABLED ? ? ? ?#define ?MODBUS_CFG_MASTER_EN ? ? DEF_DISABLED ? ? ? ? 設(shè)置從站支持Modbus RTU模式

    #define ?MODBUS_CFG_ASCII_EN ? DEF_DISABLED ? ? ? ? ? ? ? ? ?#define ?MODBUS_CFG_RTU_EN ? ? DEF_ENABLED

    設(shè)置通道數(shù)

    #define ?MODBUS_CFG_MAX_CH ? ? 1

    設(shè)置串口發(fā)送接收緩存大小

    #define ?MODBUS_CFG_BUF_SIZE ? ? ? 255

    設(shè)置禁用浮點(diǎn)數(shù)

    #define ?MODBUS_CFG_FP_EN ? ? ? ? ? DEF_DISABLED

    設(shè)置設(shè)備支持的命令碼

    #define ?MODBUS_CFG_FC01_EN ? ? ? ? DEF_ENABLED

    #define ?MODBUS_CFG_FC02_EN ? ? ? ? DEF_ENABLED

    #define ?MODBUS_CFG_FC03_EN ? ? ? ? DEF_ENABLED

    #define ?MODBUS_CFG_FC04_EN ? ? ? ? DEF_ENABLED

    #define ?MODBUS_CFG_FC05_EN ? ? ? ? DEF_ENABLED

    #define ?MODBUS_CFG_FC06_EN ? ? ? ? DEF_ENABLED

    #define ?MODBUS_CFG_FC15_EN ? ? ? ? DEF_ENABLED

    #define ?MODBUS_CFG_FC16_EN ? ? ? ? DEF_ENABLED

    根據(jù)所支持的命令碼在MB_DATA.C文件中實現(xiàn)以下函數(shù):

    MB_CoilRd()用于響應(yīng)01功能碼, 讀一個線圈的值。

    MB_CoilWr()用于響應(yīng)05、15功能碼,寫一個線圈的值。

    MB_DIRd()用于響應(yīng)02功能碼,讀一個離散輸入的值。

    MB_InRegRd()用于響應(yīng)04功能碼。讀一個輸入寄存器的值。

    MB_HoldingRegRd()用于響應(yīng)03功能碼,讀取一個保持寄存器的值。

    MB_HoldingRegWr()用于響應(yīng)06、16功能碼,寫一個保持寄存器的值。

    最后用戶就可以在main函數(shù)里或在用戶任務(wù)里啟動μC/ Modbus。首先調(diào)用MB_Init()初始化μC/Modbus,然后通過MB_CfgCh()配置Modbus通道。一旦通道配置完成,就可以與Modbus主站通信而不需要用戶參與。例如設(shè)從站設(shè)備具有一個Modbus RTU端口、9 600 b/s、從站地址為1。代碼如下[5]:

    MB_Init(1000); ? //初始化 μC/Modbus,時鐘頻率 1 000 Hz

    MB_CfgCh ( ? 1, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Modbus通道號

    MODBUS_SLAVE, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 從設(shè)備

    0,

    MODBUS_MODE_RTU, ? ? ? ? ? ? ?//Modbus RTU模式

    MODBUS_USARTPort, ? ? ? ? ? ? ? ? ? // UART串口號

    9600, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//波特率

    8, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //8個數(shù)據(jù)位

    MODBUS_PARITY_NONE , ? ? ? ? ? ? ? ? ? ? //無校驗

    1, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //1個停止位

    MODBUS_WR_EN); ? ? ? ? ? ? ? ? ? ? ? ?//允許寫操作

    5 ?結(jié) ?語

    本文主要論述了μC/Modbus在Cortex?M3內(nèi)核處理器上的移植過程并給出關(guān)鍵代碼,移植后的μC/Modbus能夠穩(wěn)定運(yùn)行于STM32F103處理器上。本移植能通用于所有Cortex?M3處理器和μC/OS?Ⅱ操作系統(tǒng)平臺上,對于將μC/Modbus移植到其他體系平臺上同樣具有參考作用。實驗表明μC/Modbus 是一款簡單高效移植方便的標(biāo)準(zhǔn)Modbus協(xié)議棧。讀者在了解μC/Modbus工作原理及移植過程之后,也可進(jìn)一步做優(yōu)化操作,比如利用STM32的串口DMA功能取代中斷方式,以進(jìn)一步降低CPU的開銷。

    參考文獻(xiàn)

    [1] LABROSSE J J. μC/OS?Ⅱ:源碼公開的實時嵌入式操作系統(tǒng)[M].紹貝貝,譯.北京:中國電力出版社,2001.

    [2] YIU J. Cortex?M3權(quán)威指南[M].宋巖,譯.北京:清華大學(xué)出版社,2008.

    [3] 張桂,金國強(qiáng),李輝.基于ARM平臺Modbus RTU協(xié)議的研究與實現(xiàn)[J].電力科學(xué)與工程,2011(1):23?27.

    [4] 王曉鳴.實時操作系統(tǒng)μC/OS?Ⅱ在ARM上的移植[J].機(jī)電一體化,2007(1):56?58.

    [5] 周軍,陳偉峰.基于ARM9和μC/OS?Ⅱ的Modbus通信協(xié)議的實現(xiàn)[J].自動化儀表,2009(2):24?26.

    [6] 潘迪夫,習(xí)可.以PLC為通信主站的Modbus控制網(wǎng)絡(luò)的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2010,33(5):142?144.

    只有这里有精品99| 色网站视频免费| 19禁男女啪啪无遮挡网站| 人人妻人人澡人人爽人人夜夜| 赤兔流量卡办理| 一级毛片黄色毛片免费观看视频| 亚洲天堂av无毛| 亚洲精品国产色婷婷电影| 在现免费观看毛片| 18禁观看日本| 久久久久久久久久久免费av| 99热国产这里只有精品6| 成人漫画全彩无遮挡| 亚洲欧美精品综合一区二区三区| 丝袜喷水一区| 制服丝袜香蕉在线| 又粗又硬又长又爽又黄的视频| 国产精品 欧美亚洲| 汤姆久久久久久久影院中文字幕| 色播在线永久视频| 中文字幕另类日韩欧美亚洲嫩草| 高清视频免费观看一区二区| 国产一区二区激情短视频 | 尾随美女入室| 女性生殖器流出的白浆| 色94色欧美一区二区| 看十八女毛片水多多多| 中文字幕另类日韩欧美亚洲嫩草| 欧美日韩一区二区视频在线观看视频在线| 日韩人妻精品一区2区三区| 99re6热这里在线精品视频| 久久精品熟女亚洲av麻豆精品| 久久久国产精品麻豆| 哪个播放器可以免费观看大片| av网站在线播放免费| 日本av手机在线免费观看| 久久久久人妻精品一区果冻| 久久精品熟女亚洲av麻豆精品| 色婷婷久久久亚洲欧美| av天堂久久9| 在线观看免费高清a一片| 丝袜脚勾引网站| 亚洲精品日本国产第一区| 久久久国产精品麻豆| 亚洲成色77777| 欧美精品一区二区大全| 丝袜人妻中文字幕| 18在线观看网站| 国产精品成人在线| 人人妻人人澡人人看| 桃花免费在线播放| 成人三级做爰电影| 制服人妻中文乱码| 热99国产精品久久久久久7| 欧美成人精品欧美一级黄| 久久久久久人妻| 十八禁高潮呻吟视频| 精品人妻在线不人妻| 嫩草影视91久久| 久久精品久久久久久噜噜老黄| 欧美精品一区二区大全| 精品免费久久久久久久清纯 | 久久天躁狠狠躁夜夜2o2o | 亚洲一区中文字幕在线| 午夜福利影视在线免费观看| 国产精品嫩草影院av在线观看| 好男人视频免费观看在线| 免费日韩欧美在线观看| www.自偷自拍.com| 欧美xxⅹ黑人| 国产一区亚洲一区在线观看| 久久久久网色| 久久av网站| 在线观看免费日韩欧美大片| 国产99久久九九免费精品| 蜜桃国产av成人99| 国产探花极品一区二区| 99久久精品国产亚洲精品| 99久久99久久久精品蜜桃| 亚洲伊人色综图| 人人妻人人澡人人爽人人夜夜| 日韩伦理黄色片| av国产久精品久网站免费入址| 999久久久国产精品视频| 伦理电影大哥的女人| 久久这里只有精品19| 午夜日韩欧美国产| 秋霞伦理黄片| 国产精品无大码| 久久99热这里只频精品6学生| 亚洲精品国产区一区二| 国产男女超爽视频在线观看| 国产成人啪精品午夜网站| 亚洲欧美一区二区三区国产| 亚洲,欧美,日韩| 日本色播在线视频| 亚洲综合精品二区| 欧美97在线视频| a级毛片在线看网站| av一本久久久久| 欧美成人午夜精品| 女人久久www免费人成看片| 又大又黄又爽视频免费| 国产精品嫩草影院av在线观看| 免费少妇av软件| 久久免费观看电影| 中国国产av一级| 久久久精品区二区三区| 免费高清在线观看日韩| 成人国语在线视频| 少妇人妻精品综合一区二区| 女性生殖器流出的白浆| 中国三级夫妇交换| 狂野欧美激情性bbbbbb| 在线精品无人区一区二区三| 精品国产一区二区久久| 美女国产高潮福利片在线看| 久久久欧美国产精品| 国产精品偷伦视频观看了| 免费观看性生交大片5| 三上悠亚av全集在线观看| 亚洲av日韩精品久久久久久密 | 爱豆传媒免费全集在线观看| 亚洲精品第二区| 十八禁网站网址无遮挡| 各种免费的搞黄视频| 亚洲一区中文字幕在线| 亚洲成av片中文字幕在线观看| 亚洲色图 男人天堂 中文字幕| 日本av手机在线免费观看| 亚洲美女搞黄在线观看| 亚洲精品自拍成人| 大片免费播放器 马上看| 国产又爽黄色视频| 欧美日韩视频精品一区| 人妻人人澡人人爽人人| 人人妻人人爽人人添夜夜欢视频| 欧美人与性动交α欧美精品济南到| 久久久久久久精品精品| 美女视频免费永久观看网站| 99国产综合亚洲精品| 精品午夜福利在线看| 欧美日韩国产mv在线观看视频| 日韩一区二区三区影片| 亚洲伊人色综图| 不卡视频在线观看欧美| 波野结衣二区三区在线| 中文欧美无线码| 国产精品免费大片| 丁香六月欧美| 亚洲欧美激情在线| 日本欧美视频一区| 美女午夜性视频免费| 90打野战视频偷拍视频| 汤姆久久久久久久影院中文字幕| 亚洲av成人精品一二三区| 在线观看三级黄色| 久久久久视频综合| 国产亚洲午夜精品一区二区久久| av福利片在线| 亚洲精品乱久久久久久| 人人妻人人添人人爽欧美一区卜| 在现免费观看毛片| www.av在线官网国产| 一本—道久久a久久精品蜜桃钙片| 超碰成人久久| 岛国毛片在线播放| 亚洲精品国产一区二区精华液| 97人妻天天添夜夜摸| 人妻一区二区av| 日韩不卡一区二区三区视频在线| 男人爽女人下面视频在线观看| 午夜免费男女啪啪视频观看| 精品国产乱码久久久久久小说| 9191精品国产免费久久| 久久久欧美国产精品| 操出白浆在线播放| 一级a爱视频在线免费观看| 色播在线永久视频| 制服丝袜香蕉在线| 久久久久久久久久久久大奶| 日韩不卡一区二区三区视频在线| 别揉我奶头~嗯~啊~动态视频 | 欧美精品高潮呻吟av久久| 一级,二级,三级黄色视频| 日日爽夜夜爽网站| 久久久国产欧美日韩av| 天天添夜夜摸| 欧美成人精品欧美一级黄| 久久精品亚洲熟妇少妇任你| 亚洲四区av| 日韩一区二区三区影片| 免费少妇av软件| 最近中文字幕2019免费版| 91国产中文字幕| 一级毛片电影观看| 少妇人妻精品综合一区二区| 精品卡一卡二卡四卡免费| 精品国产国语对白av| 韩国精品一区二区三区| 国产探花极品一区二区| 久久99精品国语久久久| 久久青草综合色| 久久久久久人妻| 成年美女黄网站色视频大全免费| 最新的欧美精品一区二区| 久久影院123| 如何舔出高潮| 人体艺术视频欧美日本| 少妇人妻 视频| 丰满少妇做爰视频| 日韩 欧美 亚洲 中文字幕| 久久久久久久久久久免费av| 亚洲美女视频黄频| av不卡在线播放| 国产精品久久久人人做人人爽| 不卡视频在线观看欧美| 中文字幕人妻丝袜制服| 在线观看免费午夜福利视频| 亚洲 欧美一区二区三区| 久久精品亚洲熟妇少妇任你| 亚洲国产毛片av蜜桃av| 精品免费久久久久久久清纯 | 亚洲欧美成人综合另类久久久| 捣出白浆h1v1| 亚洲av成人精品一二三区| 国精品久久久久久国模美| 免费黄频网站在线观看国产| 国产成人精品久久二区二区91 | 久久久久人妻精品一区果冻| 一级毛片我不卡| 精品一区二区三卡| 亚洲一区二区三区欧美精品| 日本爱情动作片www.在线观看| 日韩 亚洲 欧美在线| 人人妻人人爽人人添夜夜欢视频| 亚洲第一区二区三区不卡| 最黄视频免费看| 成人黄色视频免费在线看| 日韩中文字幕视频在线看片| 国产1区2区3区精品| 建设人人有责人人尽责人人享有的| 欧美 日韩 精品 国产| 亚洲国产精品999| 一本色道久久久久久精品综合| 2021少妇久久久久久久久久久| 久久久精品免费免费高清| 哪个播放器可以免费观看大片| 七月丁香在线播放| 热99国产精品久久久久久7| 午夜免费观看性视频| 91aial.com中文字幕在线观看| 成人国产av品久久久| 老司机影院成人| 欧美成人精品欧美一级黄| 日韩一区二区视频免费看| 成人亚洲欧美一区二区av| 日本vs欧美在线观看视频| 欧美乱码精品一区二区三区| 午夜福利一区二区在线看| 菩萨蛮人人尽说江南好唐韦庄| 2021少妇久久久久久久久久久| 美女午夜性视频免费| 色精品久久人妻99蜜桃| 91老司机精品| 亚洲成人一二三区av| 亚洲精华国产精华液的使用体验| 亚洲,欧美,日韩| 国产极品天堂在线| 大码成人一级视频| 麻豆乱淫一区二区| 国产成人一区二区在线| 午夜激情久久久久久久| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲国产av新网站| 国产无遮挡羞羞视频在线观看| 欧美变态另类bdsm刘玥| 日韩一本色道免费dvd| 黑人猛操日本美女一级片| 亚洲av综合色区一区| 免费高清在线观看日韩| 成人三级做爰电影| 国产一级毛片在线| 国产精品一国产av| 欧美日韩精品网址| 交换朋友夫妻互换小说| 亚洲四区av| 国产一区二区激情短视频 | 伊人久久大香线蕉亚洲五| 久久久久久久久久久免费av| 男人操女人黄网站| 久久久国产一区二区| 久久久精品区二区三区| 国产一区二区激情短视频 | 亚洲美女搞黄在线观看| 99久国产av精品国产电影| 91成人精品电影| 美女大奶头黄色视频| 看免费av毛片| 99久国产av精品国产电影| 国产xxxxx性猛交| 中文天堂在线官网| 国产激情久久老熟女| 亚洲精品在线美女| 日本黄色日本黄色录像| 又粗又硬又长又爽又黄的视频| 日韩 亚洲 欧美在线| 亚洲国产精品999| 观看av在线不卡| 天天躁日日躁夜夜躁夜夜| 国产xxxxx性猛交| 久久精品国产亚洲av涩爱| 国产黄色视频一区二区在线观看| 国产精品久久久久久久久免| 国产在线免费精品| 亚洲国产av新网站| 色婷婷久久久亚洲欧美| 成年动漫av网址| a级毛片在线看网站| 日本爱情动作片www.在线观看| 亚洲三区欧美一区| 91精品三级在线观看| 欧美少妇被猛烈插入视频| 久久国产精品男人的天堂亚洲| 欧美日韩一级在线毛片| 晚上一个人看的免费电影| 在线观看免费日韩欧美大片| 狂野欧美激情性bbbbbb| 永久免费av网站大全| 亚洲欧美清纯卡通| 国产av精品麻豆| 国产成人a∨麻豆精品| 在线天堂中文资源库| 91老司机精品| 欧美激情 高清一区二区三区| 日韩av免费高清视频| 国产亚洲av片在线观看秒播厂| 99精品久久久久人妻精品| 另类精品久久| 国产熟女午夜一区二区三区| 国产精品久久久久久久久免| 亚洲一卡2卡3卡4卡5卡精品中文| 啦啦啦啦在线视频资源| 这个男人来自地球电影免费观看 | 少妇被粗大的猛进出69影院| 欧美另类一区| 欧美变态另类bdsm刘玥| 国产片内射在线| 考比视频在线观看| 美女扒开内裤让男人捅视频| 亚洲精品久久成人aⅴ小说| 成年女人毛片免费观看观看9 | 精品一品国产午夜福利视频| 2018国产大陆天天弄谢| 一区福利在线观看| 免费久久久久久久精品成人欧美视频| 亚洲国产毛片av蜜桃av| 中文精品一卡2卡3卡4更新| 国产亚洲精品第一综合不卡| 日韩中文字幕视频在线看片| 国产淫语在线视频| 欧美中文综合在线视频| 日韩一区二区视频免费看| www.精华液| 一区福利在线观看| 伦理电影免费视频| 深夜精品福利| 久久久久久久精品精品| 女人久久www免费人成看片| 一二三四中文在线观看免费高清| 赤兔流量卡办理| www.精华液| 亚洲精品久久成人aⅴ小说| 日本猛色少妇xxxxx猛交久久| 亚洲av在线观看美女高潮| 精品久久久久久电影网| 午夜福利视频在线观看免费| 777米奇影视久久| 男女无遮挡免费网站观看| 久久久久精品久久久久真实原创| 日韩欧美精品免费久久| 欧美av亚洲av综合av国产av | 99久久综合免费| 久久狼人影院| 最黄视频免费看| 777久久人妻少妇嫩草av网站| 国产伦理片在线播放av一区| 观看av在线不卡| 亚洲,一卡二卡三卡| 国产野战对白在线观看| 亚洲av欧美aⅴ国产| 精品少妇内射三级| 国产日韩欧美亚洲二区| 国产精品无大码| 婷婷成人精品国产| 中文字幕人妻熟女乱码| 久久精品国产a三级三级三级| 亚洲一卡2卡3卡4卡5卡精品中文| 久久久久久久大尺度免费视频| 亚洲精品日韩在线中文字幕| 妹子高潮喷水视频| bbb黄色大片| 精品亚洲乱码少妇综合久久| av又黄又爽大尺度在线免费看| 新久久久久国产一级毛片| 国产精品无大码| 久久精品亚洲熟妇少妇任你| 一个人免费看片子| 街头女战士在线观看网站| 美国免费a级毛片| 80岁老熟妇乱子伦牲交| 午夜av观看不卡| 老司机亚洲免费影院| 高清视频免费观看一区二区| 成人国产av品久久久| 免费观看人在逋| 免费日韩欧美在线观看| 日韩人妻精品一区2区三区| 国产日韩欧美视频二区| 亚洲av国产av综合av卡| 女性被躁到高潮视频| 日韩视频在线欧美| 免费黄频网站在线观看国产| 又大又爽又粗| 亚洲四区av| av有码第一页| 久久ye,这里只有精品| 人人妻,人人澡人人爽秒播 | 国产亚洲av高清不卡| 热99久久久久精品小说推荐| av免费观看日本| 水蜜桃什么品种好| 99精国产麻豆久久婷婷| 欧美久久黑人一区二区| 精品一品国产午夜福利视频| av福利片在线| 久久久久久人人人人人| 精品一区二区三区四区五区乱码 | 久热这里只有精品99| 伦理电影免费视频| 黄色视频不卡| 亚洲综合精品二区| 国产av精品麻豆| 卡戴珊不雅视频在线播放| 日韩制服丝袜自拍偷拍| 亚洲精品一区蜜桃| 91国产中文字幕| 久久国产亚洲av麻豆专区| 精品亚洲成a人片在线观看| 日韩不卡一区二区三区视频在线| 日韩欧美精品免费久久| 亚洲精品美女久久久久99蜜臀 | 爱豆传媒免费全集在线观看| 人人妻,人人澡人人爽秒播 | 国产视频首页在线观看| 国产 精品1| 精品酒店卫生间| 美女扒开内裤让男人捅视频| 丁香六月天网| 国产一区二区在线观看av| 18禁观看日本| 如日韩欧美国产精品一区二区三区| 我要看黄色一级片免费的| 久久久久精品人妻al黑| 国产精品女同一区二区软件| 亚洲成色77777| 五月天丁香电影| 欧美日韩成人在线一区二区| 男人舔女人的私密视频| 一级片'在线观看视频| 国产精品久久久av美女十八| 国产成人91sexporn| 亚洲图色成人| 在线看a的网站| 久久这里只有精品19| 韩国高清视频一区二区三区| 成人黄色视频免费在线看| 女的被弄到高潮叫床怎么办| 观看av在线不卡| 嫩草影视91久久| 少妇人妻 视频| 国产亚洲精品第一综合不卡| 国产成人欧美在线观看 | 一二三四中文在线观看免费高清| 欧美激情 高清一区二区三区| 美女扒开内裤让男人捅视频| 日韩电影二区| 亚洲欧洲精品一区二区精品久久久 | 色婷婷久久久亚洲欧美| 精品免费久久久久久久清纯 | 男女高潮啪啪啪动态图| kizo精华| 男女边吃奶边做爰视频| 精品人妻一区二区三区麻豆| 日本wwww免费看| 久久久久久久大尺度免费视频| 久久免费观看电影| 欧美精品亚洲一区二区| 亚洲国产欧美一区二区综合| 丝袜脚勾引网站| 久久免费观看电影| 一二三四在线观看免费中文在| 丝袜美腿诱惑在线| 日韩免费高清中文字幕av| 波野结衣二区三区在线| 男人爽女人下面视频在线观看| 丝袜人妻中文字幕| 人人妻,人人澡人人爽秒播 | 久久青草综合色| 免费观看av网站的网址| 久久久久久免费高清国产稀缺| 成人国产麻豆网| 日本欧美视频一区| 人人澡人人妻人| 亚洲成人av在线免费| 最近的中文字幕免费完整| 久久精品久久久久久噜噜老黄| 欧美av亚洲av综合av国产av | 伦理电影大哥的女人| a级毛片黄视频| 日本av免费视频播放| 少妇精品久久久久久久| 我的亚洲天堂| 亚洲七黄色美女视频| 久久精品久久久久久久性| 99热网站在线观看| 黄片小视频在线播放| 欧美乱码精品一区二区三区| 欧美日韩成人在线一区二区| 一个人免费看片子| 天堂8中文在线网| 丝袜美腿诱惑在线| 在线观看www视频免费| 亚洲免费av在线视频| 欧美变态另类bdsm刘玥| 精品国产国语对白av| 18在线观看网站| 新久久久久国产一级毛片| 久久午夜综合久久蜜桃| 精品国产乱码久久久久久男人| 久久久久国产精品人妻一区二区| 99香蕉大伊视频| 美女中出高潮动态图| 亚洲精品av麻豆狂野| 大话2 男鬼变身卡| 国产精品久久久久久精品古装| 国产97色在线日韩免费| 免费在线观看完整版高清| av国产久精品久网站免费入址| 美女大奶头黄色视频| 丝瓜视频免费看黄片| 丰满乱子伦码专区| 大陆偷拍与自拍| 秋霞在线观看毛片| 国产97色在线日韩免费| 99国产精品免费福利视频| 亚洲精品日本国产第一区| 日韩伦理黄色片| 国产av一区二区精品久久| 王馨瑶露胸无遮挡在线观看| 男女下面插进去视频免费观看| 777久久人妻少妇嫩草av网站| 天天操日日干夜夜撸| 1024视频免费在线观看| 在线 av 中文字幕| 中文天堂在线官网| 老司机影院成人| 国产极品天堂在线| 免费黄网站久久成人精品| 国产一区亚洲一区在线观看| 欧美变态另类bdsm刘玥| 日日摸夜夜添夜夜爱| 夫妻性生交免费视频一级片| 97人妻天天添夜夜摸| 日本色播在线视频| 久久久国产欧美日韩av| 中文字幕最新亚洲高清| 午夜福利免费观看在线| 欧美日韩精品网址| 99精品久久久久人妻精品| 国产精品麻豆人妻色哟哟久久| 成人毛片60女人毛片免费| 五月天丁香电影| 国产精品一区二区在线观看99| 操美女的视频在线观看| 黑人巨大精品欧美一区二区蜜桃| 成人亚洲精品一区在线观看| 热re99久久国产66热| 成人毛片60女人毛片免费| 久久久久久免费高清国产稀缺| 精品国产一区二区久久| 亚洲第一av免费看| av一本久久久久| 成年人免费黄色播放视频| 最近手机中文字幕大全| 久久久久久久久久久久大奶| 亚洲成人一二三区av| 成人国语在线视频| 亚洲成人国产一区在线观看 | 久久人人爽av亚洲精品天堂| 成人亚洲精品一区在线观看| 亚洲欧美中文字幕日韩二区| 波多野结衣一区麻豆| 国产日韩欧美在线精品| 9色porny在线观看| 欧美日韩一区二区视频在线观看视频在线| 欧美精品亚洲一区二区| 欧美日韩一级在线毛片| 青春草视频在线免费观看| 久久青草综合色| 51午夜福利影视在线观看| 啦啦啦啦在线视频资源| 极品人妻少妇av视频| 久久精品aⅴ一区二区三区四区| 制服人妻中文乱码|