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

?

多設(shè)備系統(tǒng)中的狀態(tài)顯示和數(shù)據(jù)傳輸設(shè)計(jì)

2017-11-24 11:53:05
關(guān)鍵詞:寄存器報(bào)文指令

(中國(guó)郵政集團(tuán)公司 上海研究院,上海 200062)

多設(shè)備系統(tǒng)中的狀態(tài)顯示和數(shù)據(jù)傳輸設(shè)計(jì)

余飛

(中國(guó)郵政集團(tuán)公司 上海研究院,上海 200062)

為了滿足越來(lái)越多的工業(yè)設(shè)備需要進(jìn)行數(shù)據(jù)傳輸、狀態(tài)顯示的需求,設(shè)計(jì)了一種工業(yè)設(shè)備狀態(tài)顯示和數(shù)據(jù)傳輸系統(tǒng)。利用CAN總線將設(shè)備的實(shí)時(shí)數(shù)據(jù)傳送到數(shù)據(jù)傳輸顯示板并進(jìn)行狀態(tài)顯示,再通過(guò)Modbus RTU協(xié)議傳送到西門子S7-1200 PLC上,從而完成數(shù)據(jù)的傳輸。該系統(tǒng)實(shí)現(xiàn)了在應(yīng)用中編程,具有可連接設(shè)備多、成本低、可靠性高等特點(diǎn)。

CAN總線;Modbus RTU;IAP;S7-1200

引 言

隨著工業(yè)4.0和中國(guó)制造2025戰(zhàn)略的不斷深入推進(jìn),工業(yè)企業(yè)的自動(dòng)化、智能化水平不斷提高,有越來(lái)越多的工業(yè)設(shè)備開始具備數(shù)據(jù)通信和可視化的功能,以方便現(xiàn)場(chǎng)監(jiān)視和集中監(jiān)控、提高操作安全性,這就要求在設(shè)計(jì)產(chǎn)品和系統(tǒng)時(shí)充分考慮到這些需求。

工業(yè)設(shè)備之間的數(shù)據(jù)通信往往具有節(jié)點(diǎn)多、數(shù)據(jù)量小、實(shí)時(shí)性和突發(fā)性強(qiáng)的特點(diǎn),這就要求整個(gè)系統(tǒng)有較好的負(fù)載處理能力[1]。當(dāng)前很多工業(yè)設(shè)備都具備通信功能,但受限于各種實(shí)際情況,大多閑置而得不到使用。本文設(shè)計(jì)了一種數(shù)據(jù)顯示傳輸系統(tǒng),能夠采集工業(yè)設(shè)備運(yùn)行狀態(tài)并實(shí)現(xiàn)相應(yīng)的控制。

1 系統(tǒng)的總體結(jié)構(gòu)

系統(tǒng)的總體結(jié)構(gòu)圖如圖1所示。各底層的設(shè)備通過(guò)CAN總線和數(shù)據(jù)傳輸顯示板交換信息。采用CAN通信接口有如下好處:很多工業(yè)設(shè)備特別是運(yùn)動(dòng)控制設(shè)備都支持CAN總線,可以節(jié)約投資;CAN總線支持多主、多從工作方式,網(wǎng)絡(luò)上的任意節(jié)點(diǎn)在任意時(shí)刻都可以主動(dòng)地向其他節(jié)點(diǎn)發(fā)送信息,滿足高突發(fā)性要求;采用非破壞性的總線仲裁技術(shù),多點(diǎn)同時(shí)發(fā)送信息時(shí),按優(yōu)先級(jí)順序通信,避免網(wǎng)絡(luò)癱瘓。

數(shù)據(jù)傳輸顯示板通過(guò)Modbus總線和PLC或HMI相連。Modbus總線是當(dāng)前較為通用的現(xiàn)場(chǎng)總線,可靠性高,易于擴(kuò)展,支持廠家多,程序開發(fā)也十分方便。本文中可編程邏輯器(PLC)選擇西門子公司S7-1200系列作為通信機(jī),可擴(kuò)展最多3個(gè)通信模塊,支持Profinet總線,并可通過(guò)交換機(jī)接入以太網(wǎng)。

圖1 系統(tǒng)總體結(jié)構(gòu)圖

數(shù)據(jù)傳輸顯示板結(jié)構(gòu)框圖如圖2所示。該電路板采用意法半導(dǎo)體的STM32F103芯片作為主控芯片,通過(guò)SPI接口和液晶模塊相連,通過(guò)CAN接口和各設(shè)備相連,通過(guò)RS485接口和PLC相連,另外保留一個(gè)RS422接口用于外部調(diào)試。

圖2 數(shù)據(jù)傳輸顯示板結(jié)構(gòu)框圖

2 數(shù)據(jù)傳輸顯示板的設(shè)計(jì)

2.1 CAN總線通信接口設(shè)計(jì)

CAN總線通信接口如圖3所示。CAN收發(fā)器采用ADI公司的ADM3053,這款器件將雙通道隔離器、CAN收發(fā)器和隔離DC/DC轉(zhuǎn)換器集成于單個(gè)芯片中,采用5 V單電源供電,在CAN協(xié)議控制器與物理層總線之間創(chuàng)建一個(gè)完全隔離的接口,能以最高1 Mbps的速率工作??紤]到工廠相對(duì)惡劣的生產(chǎn)環(huán)境和設(shè)備的安裝距離,本文將通信速率定在50 kbps。

CAN總線基于ISO開放系統(tǒng)互聯(lián)模型,定義了物理層和數(shù)據(jù)鏈路層,一次通信能發(fā)送或接收8個(gè)字節(jié)的數(shù)據(jù),完全能夠滿足設(shè)備通信的需求。應(yīng)用層的功能則由用戶程序來(lái)完成,主要包括初始化程序、發(fā)送程序和接收程序[2]。

圖3 CAN總線接口電路圖

發(fā)送程序首先將數(shù)據(jù)打包成完整的CAN報(bào)文格式,利用函數(shù)Can_Send_Msg()來(lái)實(shí)現(xiàn)。本函數(shù)使用的結(jié)構(gòu)體變量TxMessage由CanTxMsg定義。同樣在接收?qǐng)?bào)文時(shí),使用CanRxMsg類型,它們都是由庫(kù)文件定義的結(jié)構(gòu)體類型。對(duì)于TxMessage結(jié)構(gòu)體,有如下成員:① StdID:保存的是報(bào)文的標(biāo)準(zhǔn)ID,由于文中使用的是擴(kuò)展ID,故不需要對(duì)它賦值。② ExtID:保存的是報(bào)文的擴(kuò)展ID,為32位無(wú)符號(hào)數(shù),一般可以在其中放3個(gè)字節(jié)。③ IDE:用于設(shè)置報(bào)文的IDE位,即使用標(biāo)準(zhǔn)ID還是擴(kuò)展ID,本文使用擴(kuò)展ID。④ RTP:用于設(shè)置報(bào)文的RTP位,即確定是數(shù)據(jù)幀還是控制幀,本文發(fā)送的是數(shù)據(jù)幀。⑤ DLC:用于設(shè)置數(shù)據(jù)段的字節(jié)長(zhǎng)度,可取的范圍是0~8。⑥ Data[0]~Data[8]:這些Data數(shù)組即為CAN報(bào)文中數(shù)據(jù)段的內(nèi)容,Data的數(shù)量要與DLC段設(shè)置的一致。設(shè)置好之后,調(diào)用CAN_Transmit()函數(shù)即可將數(shù)據(jù)發(fā)出。

接收程序主要放在中斷函數(shù)中實(shí)現(xiàn)。首先在初始化函數(shù)中將FIFO0消息掛號(hào)中斷使能位置1,即允許該中斷。其次在中斷服務(wù)函數(shù)USB_LP_CAN1_RX0_IRQHandler()中調(diào)用庫(kù)函數(shù)CAN_Receive(),把FIFO0中接收到的報(bào)文讀到CanRxMsg類型的全局變量RxMessage中,其接收?qǐng)?bào)文結(jié)構(gòu)體與發(fā)送結(jié)構(gòu)體類似。

2.2 人機(jī)界面(HMI)接口設(shè)計(jì)

圖4 LCD 接口電路圖

本文選用的液晶模塊是HS12864-20中文圖形液晶模塊,其控制器為臺(tái)灣矽創(chuàng)電子的ST7920。該模塊內(nèi)建中文字庫(kù),支持8字符×4行中文字符顯示,西文字符半寬顯示,支持并行和串行接口,內(nèi)部自建振蕩源,具有自動(dòng)電源啟動(dòng)復(fù)位功能。其接口圖如圖4所示,MCU端為主機(jī),LCD采用串行接口控制模式,和MCU通過(guò)SPI接口相連接。由于MCU只發(fā)不收,只需要連接片選信號(hào)線PB12、時(shí)鐘信號(hào)線PB13、主設(shè)備輸出線PB15。PC4為液晶背光控制,PC5為復(fù)位控制[3]。

首先對(duì)液晶模塊進(jìn)行初始化,用于功能設(shè)定、清屏、設(shè)置游標(biāo)等操作。初始化完成之后,通過(guò)SPI總線將需要顯示的內(nèi)容寫入顯示RAM(DDRAM)中。先寫入地址計(jì)數(shù)器的地址,再寫入需要顯示的字符。MCU定時(shí)向液晶模塊發(fā)送機(jī)器的狀態(tài)信息,這樣液晶屏幕上可以滾動(dòng)顯示機(jī)器的狀態(tài)。

LCD模塊的串口時(shí)序圖如圖5所示,CS是片選輸入,高有效,SCLK為串行時(shí)鐘輸入,SID為串行數(shù)據(jù)線。當(dāng)時(shí)鐘SCLK上升沿到達(dá)時(shí),傳輸一個(gè)數(shù)據(jù)位。無(wú)論是發(fā)送數(shù)據(jù)還是命令,一開始先傳輸起始字節(jié),包括發(fā)送5個(gè)連續(xù)的“1”,此時(shí)傳輸計(jì)數(shù)器重置并且被同步,跟隨的2位分別為讀寫標(biāo)志位R/W及命令/數(shù)據(jù)標(biāo)志位RS,最后一位是0。起始字節(jié)發(fā)送完成后,接下來(lái)的8位命令/數(shù)據(jù)被分成兩個(gè)字節(jié)發(fā)送,每個(gè)字節(jié)的高4位為有效數(shù)據(jù)位,低4位則為0。

圖5 LCD模塊的串口時(shí)序圖

2.3 IAP設(shè)計(jì)

當(dāng)數(shù)據(jù)傳輸顯示板在現(xiàn)場(chǎng)安裝并使用后,根據(jù)實(shí)際需求的變化,可能需要對(duì)該電路板的固件進(jìn)行更新。這時(shí)采用傳統(tǒng)編程工具下載的方式,就會(huì)顯得耗時(shí)費(fèi)力。這時(shí)可以利用STM32系列芯片的在應(yīng)用中編程(In Application Programming,IAP)功能,通過(guò)通信接口實(shí)現(xiàn)對(duì)固件的更新升級(jí)。實(shí)現(xiàn)IAP功能的固件包含兩個(gè)部分:BootLoader和UserApp。其中BootLoader部分通過(guò)編程工具進(jìn)行燒錄,UserApp部分可以在燒錄BootLoader后通過(guò)通信接口進(jìn)行下載,用戶程序放置在UserAPP中[4-5]。

STM32F103芯片的程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、寄存器和輸入/輸出端口被組織在同一個(gè)4 GB的線性地址空間內(nèi),內(nèi)部Flash地址起始于0x8000 0000。本文將BootLoader放在內(nèi)部Flash的0x8000 0000~0x8000 4000區(qū)域,大小為16 KB,UserAPP放在0x8000 4000以后的區(qū)域。USART1為通信接口,系統(tǒng)上電復(fù)位后執(zhí)行BootLoader程序,先檢測(cè)撥碼開關(guān)的電平,如為低,則等待更新UserAPP程序,否則立即執(zhí)行原有的UserAPP程序,BootLoader工作流程圖如圖6所示。

圖6 BootLoader 工作流程圖

在BootLoader程序中需要執(zhí)行Flash的擦除與燒寫工作。STM32F103 的片內(nèi)Flash 以頁(yè)為單位組織,大小為1 KB。復(fù)位后Flash存儲(chǔ)器默認(rèn)為寫保護(hù)狀態(tài),可以通過(guò)軟件設(shè)置FLASH_CR 寄存器中的LOCK 位進(jìn)行寫保護(hù)。在寫保護(hù)狀態(tài)下只能按序在FLASH_KEYR 寄存器中寫入控制字CW1=0x45670123和CW2=0xCDEF89AB,才能開啟對(duì)Flash的訪問(wèn)權(quán)限。Flash需要擦除后再編程,最小擦除單位為頁(yè),也可以整體擦除,編程后應(yīng)將Flash進(jìn)行上鎖保護(hù)以防止意外寫入。Flash編程每次可以寫入16位,F(xiàn)LASH_CR寄存器的PG位必須置1。閃存編程和擦除控制器(FPEC)先讀出指定地址的內(nèi)容并檢查是否被擦除,如未被擦除則不執(zhí)行編程并在FLASH_SR寄存器的PGERR位提出警告(唯一的例外是當(dāng)要燒寫的數(shù)值是0x0000時(shí), 0x0000可被正確燒入且PGERR位不被置位)。FLASH_SR寄存器的EOP為1時(shí)表示編程結(jié)束。

運(yùn)行代碼從 BootLoader 區(qū)跳轉(zhuǎn)到應(yīng)用程序區(qū)時(shí),用下面的代碼設(shè)定跳轉(zhuǎn)地址:

//定義UserAPP燒錄初始地址

#define IAPSTART0x8004000

//關(guān)中斷

_ _disable_irq();

//主堆棧指針指向復(fù)位指令地址

Jump_To_Application=(pFunction)(*(vu32*) (IAPSTART+4));

_ _set_MSP(*(vu32*) IAPSTART);

Jump_To_Application();

從BootLoader跳轉(zhuǎn)到UserAPP后,在初始化階段需要將中斷向量表根據(jù)燒錄地址進(jìn)行偏移,系統(tǒng)時(shí)鐘和外設(shè)中斷等也必須重新初始化,因?yàn)樗鼈兪峭耆?dú)立的兩個(gè)程序[6]。

2.4 Modbus RTU從站設(shè)計(jì)

本文中PLC和數(shù)據(jù)傳輸顯示板之間的通信采用Modbus RTU協(xié)議。Modbus RTU是一個(gè)基于串行總線的通信協(xié)議,對(duì)應(yīng)用層、串行數(shù)據(jù)鏈路層以及物理層制定了標(biāo)準(zhǔn)。該協(xié)議物理層一般采用RS485半雙工電路,數(shù)據(jù)鏈路層定義了數(shù)據(jù)幀的組成及收發(fā),應(yīng)用層定義了具體的報(bào)文傳輸協(xié)議,特別是功能碼的定義。Modbus通信由主設(shè)備先發(fā)出消息,包括設(shè)備地址、功能代碼、數(shù)據(jù)地址和CRC校驗(yàn)。從設(shè)備收到消息后,根據(jù)通信地址決定是否回復(fù),回復(fù)消息包含確認(rèn)的功能代碼、返回?cái)?shù)據(jù)和CRC校驗(yàn)。如果主設(shè)備發(fā)出的通信地址為零,則為廣播消息,從設(shè)備均不回復(fù)。

上位機(jī)通過(guò)輪詢各個(gè)數(shù)據(jù)傳輸顯示板,將設(shè)備的數(shù)據(jù)收集上來(lái),并將設(shè)置、控制命令發(fā)送下去。數(shù)據(jù)傳輸顯示板支持0x03、0x06、0x10三種功能碼,分別可以實(shí)現(xiàn)讀保持寄存器、寫單個(gè)寄存器、寫多個(gè)寄存器。

建立Modbus通信表是軟件設(shè)計(jì)的重要環(huán)節(jié),由于每個(gè)參數(shù)都涉及到多臺(tái)機(jī)器,將各個(gè)參數(shù)以結(jié)構(gòu)體數(shù)組的方式組織起來(lái),包含32個(gè)成員,對(duì)應(yīng)于電路板所連接的32臺(tái)機(jī)器。從站接收到主站發(fā)出的讀寫命令并進(jìn)行解析,根據(jù)功能碼的不同進(jìn)行回復(fù),對(duì)于寫寄存器的命令則通過(guò)CAN總線下發(fā)到相應(yīng)的機(jī)器中去。如果數(shù)據(jù)傳輸顯示板從PLC接收到了無(wú)法處理的請(qǐng)求(比如該請(qǐng)求是讀取一個(gè)不存在的寄存器),那么它會(huì)返回一個(gè)異常響應(yīng),通知PLC出現(xiàn)了何種錯(cuò)誤[7]。

3 PLC端通信程序設(shè)計(jì)

3.1 Modbus RTU 主站設(shè)計(jì)

本文中Modbus RTU主站為西門子公司的PLC S7-1200,通過(guò)在CPU上擴(kuò)展一個(gè)串口模塊實(shí)現(xiàn)。利用PLC中集成的Modbus RTU協(xié)議,應(yīng)用程序直接調(diào)用相關(guān)的指令即可進(jìn)行通信。

Modbus_Comm_Load指令用于接口的初始化,用來(lái)設(shè)置相關(guān)的硬件端口號(hào)、波特率、奇偶校驗(yàn)等參數(shù)。Modbus_Master指令用于Modbus主站利用Modbus_Comm_Load指令組態(tài)的端口進(jìn)行通信,該指令對(duì)發(fā)送和接收的操作是分開的,故在程序設(shè)計(jì)中需要調(diào)用兩次該指令,用戶程序通過(guò)輪詢Modbus_Master 指令了解傳送和接收的完成情況,其指令格式如下:

“Modbus_Master_DB_Send”(REQ := “Modbus”.Send.Enable,

MB_ADDR := 1,

MODE := 2,

DATA_ADDR := 40129,

DATA_LEN := 32,

DONE => “Modbus”.Send.Done,

BUSY => “Modbus”.Send.Busy,

ERROR => “Modbus”.Send.Error,

STATUS => “Modbus”.Send.Status,

DATA_PTR := “Modbus”.Send.TX);

其中,REQ用于使能發(fā)送/接收操作,MB_ADDR用于設(shè)置Modbus從站地址,0為廣播地址。DATA_ADDR和MODE參數(shù)用于共同確定Modbus消息中使用的功能代碼,可以從PLC數(shù)據(jù)手冊(cè)中查詢。如要實(shí)現(xiàn)0x03功能碼,則MODE為0,DATA_ADDR為Modbus寄存器地址加上40 001。DATA_LEN用于表示此請(qǐng)求中要訪問(wèn)的位數(shù)或字節(jié)數(shù)。DONE、BUSY、ERROR、STATUS均為通信過(guò)程的狀態(tài)量。DATA_PTR用于指向要寫入或讀取的數(shù)據(jù)地址。

3.2 Profinet通信設(shè)計(jì)

圖7 連接參數(shù)配置圖

S7-1200系列PLC可以通過(guò)Profinet接入以太網(wǎng),從而實(shí)現(xiàn)更廣泛的網(wǎng)絡(luò)連接。同樣應(yīng)用程序可以調(diào)用相應(yīng)的指令完成,其發(fā)送、接收操作分別由TSEND_C、TRCV_C這兩個(gè)函數(shù)完成,同時(shí)還必須完成組態(tài)中的TCP/IP連接參數(shù)配置,如圖7所示。其中,端點(diǎn)為本機(jī)項(xiàng)目的名稱,接口為分配給接口的名稱,子網(wǎng)為分配給Profinet子網(wǎng)的名稱,地址為本機(jī)的IP地址,連接類型為TCP,連接ID由系統(tǒng)生成,用于和背景數(shù)據(jù)塊相連接,連接數(shù)據(jù)指向要發(fā)送和接收的數(shù)據(jù)結(jié)構(gòu)。由于這里本機(jī)是服務(wù)器端,不需要選擇主動(dòng)建立連接。端口號(hào)為程序所分配的本地端口號(hào)。同樣,在客戶機(jī)端也要做相應(yīng)的配置。

結(jié) 語(yǔ)

[1] 韓靈山,姜帥,江豪,等.基于Modbus的設(shè)備能耗信息化系統(tǒng)設(shè)計(jì)及應(yīng)用[J].自動(dòng)化與儀表,2016,31(11):47-49.

[2] 王慶雙,蔡冬生.基于ARM的CAN通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].航空電子技術(shù),2011(1):9-13.

[3] 常玉臣,郭其一.基于Modbus協(xié)議的液晶顯示控制模塊設(shè)計(jì)[J].工業(yè)儀表與自動(dòng)化裝置,2010(1):48-51.

[4] 汪晶晶,蘇建徽,孫佩石.基于串口通信的 DSP 應(yīng)用程序在線升級(jí)方法[J].微型機(jī)與應(yīng)用,2013,32(14):15-17,24.

[5] 楊晶,何鵬舉,朱升林,等.具有遠(yuǎn)程升級(jí)功能的網(wǎng)絡(luò)化智能溫控器[J].測(cè)控技術(shù),2012,31(11):6-10.

[6] 吳瑞娜,張建奇,梁喜軍.基于STM32的GPRS遠(yuǎn)程在線升級(jí)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化技術(shù)與應(yīng)用,2015,34(12):34-37.

[7] 劉生輝,王克英,廖顏深.智能開關(guān)柜操控裝置Modbus-RTU通訊協(xié)議的設(shè)計(jì)[J].電測(cè)與儀表,2010,47(7):77-80.

余飛(工程師),主要從事物流自動(dòng)化設(shè)備的研究與開發(fā)。

DesignofStatusDisplayandDataTransmissionSystemforMulti-device

YuFei

(Shanghai Research Institute,China Post Group,Shanghai 200062,China)

As more and more industrial equipments need data transmission and status display,a status display and data transmission system is designed in the paper.The CAN bus is used to transmit real-time data from equipment to the data transmission and status display board for status display,then the data is transmitted to the SIEMENS S7-1200 PLC through the Modbus RTU protocol.The system can be programmed in application,and has the ability to connect more equipment with low cost and high reliability.

CAN bus;Modbus RTU;IAP;S7-1200

TP2

A

2017-08-25)

猜你喜歡
寄存器報(bào)文指令
聽我指令:大催眠術(shù)
基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
汽車電器(2022年9期)2022-11-07 02:16:24
CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
淺析反駁類報(bào)文要點(diǎn)
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
分簇結(jié)構(gòu)向量寄存器分配策略研究*
ATS與列車通信報(bào)文分析
坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
遵化市| 商城县| 贵南县| 滦平县| 平利县| 珠海市| 湖州市| 建水县| 怀来县| 上饶县| 个旧市| 卫辉市| 甘德县| 密山市| 兰西县| 黄梅县| 保靖县| 大宁县| 浏阳市| 新干县| 江山市| 交城县| 冀州市| 徐水县| 阿图什市| 土默特左旗| 昌邑市| 贵德县| 丹江口市| 石首市| 北辰区| 沈丘县| 阜城县| 长垣县| 嘉黎县| 金寨县| 锦屏县| 二连浩特市| 桂平市| 清水县| 华阴市|