国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32的Modbus-Profibus網(wǎng)關(guān)的軟件實現(xiàn)

2018-12-22 01:27李洲山
無線互聯(lián)科技 2018年16期
關(guān)鍵詞:主站報文數(shù)據(jù)處理

李洲山

(西安建筑科技大學(xué) 信息與控制工程學(xué)院,陜西 西安 710055)

隨著信息技術(shù)和自動化技術(shù)的高速發(fā)展,各種現(xiàn)場總線應(yīng)用廣泛而且各有優(yōu)缺點[1],從而出現(xiàn)了多總線共存的現(xiàn)象。然而,不同現(xiàn)場總線之間的不兼容性給用戶帶來極大的不便。因此,不同總線標準之間的協(xié)議集成逐漸成為一個研究熱點,文章正是基于這樣的狀況,選擇了國內(nèi)應(yīng)用廣泛的Modbus總線和Profibus-DP總線作為研究對象,主要從總線時序方面研究了兩種協(xié)議之間的雙向轉(zhuǎn)換過程。在Profibus-DP總線側(cè),協(xié)議轉(zhuǎn)換模塊作為從站與PLC主站進行通信,在Modbus總線一側(cè),協(xié)議轉(zhuǎn)換模塊作為主站向Modbus從站設(shè)備寫入命令并讀取從站數(shù)據(jù)。通過本文開發(fā)的協(xié)議轉(zhuǎn)換模塊用戶能夠?qū)odbus從站設(shè)備快速組態(tài)到Profibus-DP總線網(wǎng)絡(luò),有助于增強Modbus的組網(wǎng)能力,在工程應(yīng)用中可以縮短工程周期,降低自動控制系統(tǒng)設(shè)計和維護的費用,使系統(tǒng)設(shè)計更為靈活。

1 協(xié)議轉(zhuǎn)換的數(shù)據(jù)交換原理

對整個協(xié)議轉(zhuǎn)換模塊而言,Profibus-DP側(cè)的主站和從站的數(shù)據(jù)交換是同步運行的,主站在請求數(shù)據(jù)后只有從站應(yīng)答后才會繼續(xù)執(zhí)行程序。Modbus總線上站與從站之間的數(shù)據(jù)交換則是根據(jù)輪詢的數(shù)據(jù)查詢方式完成的。但是,Profibus-DP的數(shù)據(jù)處理和Modbus側(cè)的通信過程則是獨立運行的。兩種協(xié)議之間的數(shù)據(jù)轉(zhuǎn)換是在VPC3+C芯片中通過映射關(guān)系完成的。在模塊上電后,主站完成初始化,檢測從站是否準備好數(shù)據(jù)通信,如果從站準備好數(shù)據(jù)交換,DP主站將對從站進行相關(guān)參數(shù)設(shè)置,并檢查從站接口的配置狀態(tài)。如果DP從站已經(jīng)準備好數(shù)據(jù)交換,則Profibus-DP側(cè)主站與從站進行數(shù)據(jù)交換。同理,Profibus-DP側(cè)從站進行與主站相對應(yīng)的操作。

2 數(shù)據(jù)交換方式選擇

協(xié)議轉(zhuǎn)換設(shè)計的重點是對串口收發(fā)程序的實現(xiàn)。目前,基于微處理器串口的數(shù)據(jù)處理方式有3種:(1)輪詢方式。這種方式是通過程序持續(xù)性的查詢接口設(shè)備的數(shù)據(jù)信息,相對程序開銷比較大,不能保證數(shù)據(jù)處理的快速性要求。(2)中斷方式。這種通信方式大幅度提升了數(shù)據(jù)處理速度,但是同樣也要占用一部分系統(tǒng)資源,如果不停出現(xiàn)中斷,系統(tǒng)程序開銷也會大幅度增加[2]。(3)DMA通信方式。這種通信方式能夠?qū)④浖绦蛱幚淼墓δ芤平唤o硬件處理,無論在數(shù)據(jù)處理速度還是數(shù)據(jù)交換的可靠性等方面,相比于軟件處理數(shù)據(jù),都占有明顯的優(yōu)勢。

3 協(xié)議轉(zhuǎn)換模塊的主程序設(shè)計

在Profibus-DP主站與Modbus從站進行通信時,通信請求由DP主站發(fā)出,當協(xié)議轉(zhuǎn)換模塊接收到請求報文后,通過協(xié)議芯片VPC3+C對報文進行解析[3],然后處理報文,提取數(shù)據(jù)域信息,通過協(xié)議數(shù)據(jù)映射關(guān)系,Profibus-DP中的數(shù)據(jù)從新封裝成為Modbus格式發(fā)送給從站設(shè)備。當從站設(shè)備返回應(yīng)答信息時,同樣經(jīng)過這個過程將數(shù)據(jù)傳輸?shù)絇rofibus-DP主站一側(cè)。

3.1 主程序流程

根據(jù)上述報文處理結(jié)構(gòu)設(shè)計相關(guān)主程序來控制協(xié)議轉(zhuǎn)換模塊的數(shù)據(jù)處理過程,該過程大體分為3部分:(1)對STM32微控制器的初始化,包括配置系統(tǒng)時鐘、配置嵌套中斷向量表、配置看門狗時鐘、初始化數(shù)據(jù)緩存區(qū)、初始化協(xié)議芯片等工作。(2)循環(huán)地不斷從協(xié)議芯片VPC3+C讀取數(shù)據(jù)和寫數(shù)據(jù)。(3)如果有外部診斷,系統(tǒng)會進入中斷程序[4]。協(xié)議轉(zhuǎn)換的函數(shù)主題如下所示,主要包含程序初始化、數(shù)據(jù)循環(huán)讀寫、中斷處理程序。

Int main(void)

{

u8 i;

RCC_Configuration();

NVIC_Configuration();

VC3_GPIO_Configuration();

SysTick_GPIO_Configuration();

SysTick_Configuration();

DisableInterrupts();

VC3_RST=0;

init_data_buffer();

vpc3_buf_check();

user_dps_reset();

EnableInterrupts();

USART_AS_Init();

InitTimer2();

IWDG_Configuration();

while (1)

{

LEDexOut=LEDexIn;

DP_status=Read_byte_vpc3(spc3_is_reg_status0_add);

if(DP_status)

{

IWDG_ReloadCounter();

}

read_data_from_spc3();

write_data_to_spc3();

diag_check();

CHKSFRData();

if(CommportCount>200)

{

USART_AS_Init();

InitTimer2();

CommportCount=0;

}

}

}

3.2 主程序函數(shù)原型

/* 函數(shù)原型 -----------------------------------------------*/

void RCC_Configuration(void); / /Configure different system clock

void NVIC_Configuration(void); //配 置嵌套中斷向量表

void IWDG_Configuration(void); //配 置看門狗

void init_data_buffer(void); //初 始化數(shù)據(jù)緩存區(qū)

void user_dps_reset(void); //初 始化VPC3

void dps2_reset_user_wd(void); //reset the WDT of vpc3

void read_data_from_VPC3+C(void); //rea d data from the RAM of vpc3

void write_data_to_VPC3+C(void); //write data to the RAM of vpc3

void diag_check(void);//check the buffers and state

void vpc3_buf_check(void); //檢 查寫入與讀出vpc3的數(shù)據(jù)是否相同

4 結(jié)語

文章主要設(shè)計了協(xié)議轉(zhuǎn)換的主程序以及串口收發(fā)程序,設(shè)計了模塊在Profibus-DP總線側(cè)的從站功能程序以及模塊在Modbus總線側(cè)的主站功能程序,設(shè)計內(nèi)容主要包括程序的初始化和數(shù)據(jù)處理中斷方式。最后,本文根據(jù)整體設(shè)計介紹了協(xié)議轉(zhuǎn)換模塊對兩種總線協(xié)議數(shù)據(jù)轉(zhuǎn)換的實現(xiàn)方式,包括數(shù)據(jù)如何映射、中斷過程怎樣進入、主循環(huán)程序怎樣進行等。通過報文轉(zhuǎn)換、數(shù)據(jù)收發(fā)等程序,最終成功實現(xiàn)了Modbus協(xié)議和Profibus協(xié)議的轉(zhuǎn)換,在工業(yè)應(yīng)用中具有一定的實際意義。

猜你喜歡
主站報文數(shù)據(jù)處理
基于J1939 協(xié)議多包報文的時序研究及應(yīng)用
認知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補與極大似然估計法*
ILWT-EEMD數(shù)據(jù)處理的ELM滾動軸承故障診斷
CTCS-2級報文數(shù)據(jù)管理需求分析和實現(xiàn)
淺析反駁類報文要點
基于OS2主站系統(tǒng)的海量數(shù)據(jù)共享技術(shù)研究
多表遠程集抄主站系統(tǒng)
ATS與列車通信報文分析
基于希爾伯特- 黃變換的去噪法在外測數(shù)據(jù)處理中的應(yīng)用
基于改進經(jīng)濟壓差算法的主站AVC的研究
隆昌县| 长汀县| 沙雅县| 鲜城| 延长县| 沙田区| 金堂县| 巴彦淖尔市| 汾阳市| 内黄县| 饶河县| 双流县| 宝坻区| 伊吾县| 二连浩特市| 延津县| 什邡市| 乌鲁木齐县| 敖汉旗| 洮南市| 东光县| 青冈县| 奈曼旗| 扎兰屯市| 丹江口市| 太和县| 逊克县| 无极县| 旺苍县| 梅州市| 秦皇岛市| 张北县| 安多县| 丰县| 富民县| 象山县| 武山县| 锡林郭勒盟| 海安县| 扶余县| 华亭县|