999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

西門子S7協(xié)議研究及基于嵌入式平臺的驅(qū)動開發(fā)

2019-10-09 00:45:20侯建華
自動化儀表 2019年9期
關(guān)鍵詞:嵌入式

侯建華

(西安西電電氣研究院有限責(zé)任公司,陜西 西安 710075)

0 引言

西門子SIMATIC控制器在工業(yè)自動化領(lǐng)域應(yīng)用廣泛。S7協(xié)議為西門子控制器與控制器、控制器與人機(jī)接口(human machine interface,HMI)等之間提供了穩(wěn)定可靠的工業(yè)通信,可以實(shí)現(xiàn)數(shù)據(jù)采集、組態(tài)、診斷、監(jiān)控等多種功能[1]。但S7協(xié)議是西門子的私有協(xié)議且不公開,這給第三方應(yīng)用與西門子控制器之間的數(shù)據(jù)集成帶來了障礙。本文針對基于工業(yè)以太網(wǎng)和RFC1006標(biāo)準(zhǔn)的S7通信協(xié)議進(jìn)行了研究,給出和分析了S7協(xié)議的OSI參考模型、S7通信建立的過程和報(bào)文格式,并在ARM+Linux嵌入式平臺上設(shè)計(jì)開發(fā)了S7協(xié)議驅(qū)動程序,實(shí)現(xiàn)了對西門子S7-1500 PLC的數(shù)據(jù)讀寫操作。

1 S7協(xié)議概述

西門子SIMATIC所有控制器,例如S7系列PLC、其他嵌入式或基于計(jì)算機(jī)的控制器均支持S7協(xié)議。S7協(xié)議是一個協(xié)議族,是應(yīng)用層的協(xié)議,支持基于工業(yè)以太網(wǎng)的Profinet、Profibus和MPI等通信。而基于工業(yè)以太網(wǎng)的RFC1006/ISO on TCP(ISO Transport Service on top of the TCP Version: 3)是S7協(xié)議中應(yīng)用廣泛的一種。其底層遵循的是通用的以太網(wǎng)標(biāo)準(zhǔn),PLC CPU模塊和以太網(wǎng)模塊均支持此通信[1]。

2 S7協(xié)議模型

基于以太網(wǎng)ISO on TCP方式的S7通信,是建立在RFC1006標(biāo)準(zhǔn)之上的。西門子PLC與對象伙伴進(jìn)行通信,使用RFC1006標(biāo)準(zhǔn)中定義的102端口[2-3]。其OSI參考模型如圖1所示。

第1~4層是通用的以太網(wǎng)通信標(biāo)準(zhǔn)。第4層RFC1006為西門子S7以太網(wǎng)通信提供服務(wù)。第5層TPKT為應(yīng)用層數(shù)據(jù)傳輸協(xié)議,介于TCP和第6層COTP協(xié)議之間。這是一個傳輸服務(wù)協(xié)議,主要用來在COTP和TCP之間建立橋梁,封裝傳輸協(xié)議數(shù)據(jù)單元(transport protocol data units,TPDUs)。TPKT的作用是包含S7協(xié)議(5~7層)的數(shù)據(jù)長度。第6層面向連接的傳輸協(xié)議(connection-oriented transport protocol,COTP)是位于TCP之上的協(xié)議。COTP 以“包”為基本單位來傳輸數(shù)據(jù),其作用是定義了數(shù)據(jù)傳輸?shù)幕締挝籔DU和幀類型。在S7通信中,PDU類型主要為數(shù)據(jù)幀DT data。第7層S7通信,這一層和用戶數(shù)據(jù)相關(guān),主要定義了要訪問的數(shù)據(jù)的地址、格式、長度等信息[2-5]。

圖1 西門子S7協(xié)議OSI參考模型

3 S7通信過程

應(yīng)用程序與西門子PLC進(jìn)行S7通信,其通信過程如圖2所示。

圖2 S7通信過程示意圖

①建立TCP連接。

②建立ISO on TCP連接。

③建立S7連接。

④按S7協(xié)議讀寫數(shù)據(jù)。

4 S7協(xié)議報(bào)文幀格式

S7協(xié)議報(bào)文幀結(jié)構(gòu)如圖3所示。其報(bào)文分三部分:TPKT幀頭、COTP包和S7 PDU[2-6]。

圖3 S7協(xié)議報(bào)文幀結(jié)構(gòu)圖

4.1 TPKT幀頭

TPKT幀頭包括:①版本號(Version),ISO on TCP(RFC1006)版本號,即最新版0x03;②包長度(Packet Length),包括TPKT幀頭、COTP和S7 PDU整個包的長度。

4.2 COTP包

COTP包根據(jù)應(yīng)用的不同共分為5種類型:連接請求(connect request,CR)、連接確認(rèn)(connect confirm,CC)、斷開請求(disconnect request,DR)、數(shù)據(jù)幀(data,DT)、擴(kuò)展數(shù)據(jù)幀(expedited data,ED)。一般常用的是CR和DT包。當(dāng)請求建立ISOon TCP連接時為CR包且后面沒有S7 PDU時,在ISO on TCP連接建立后,再進(jìn)行S7連接及S7數(shù)據(jù)通信時都為DT包。因此,正常通信時CR包只有一次,僅用于建立ISO on TCP連接。

4.3 S7 PDU

S7 PDU包括以下內(nèi)容。

①報(bào)頭:S7協(xié)議的報(bào)文頭,指示了S7協(xié)議的標(biāo)識、參數(shù)區(qū)和數(shù)據(jù)區(qū)的長度,在返回報(bào)文中還將包括狀態(tài)碼,指示錯誤等級和錯誤碼。

②參數(shù)區(qū):表示要讀取或?qū)懭霐?shù)據(jù)區(qū)域的參數(shù)格式,指示了數(shù)據(jù)區(qū)的傳輸單位、長度、區(qū)域、地址、數(shù)據(jù)項(xiàng)個數(shù)等信息。

③數(shù)據(jù)區(qū):表示從PLC返回或者要寫入PLC的數(shù)據(jù)。當(dāng)向PLC發(fā)送的是請求建立S7連接或者讀取數(shù)據(jù)的報(bào)文時,報(bào)文沒有數(shù)據(jù)區(qū)。

5 嵌入式S7協(xié)議驅(qū)動程序開發(fā)

5.1 嵌入式平臺

嵌入式平臺采用ARM+Linux,選用基于Cortex-A8架構(gòu)的德州儀器(TI)公司AM3352芯片作為主處理器,主頻為800 MHz,運(yùn)算能力高達(dá)1 600 DMIPS,配置512 MB DDR3和512 MB NAND FLASH,集成2路CAN、2路千兆網(wǎng)口、8路內(nèi)部ADC、6路UART、2路SPI、3路PWM、3路eCAP等接口。硬件平臺還包括電源模塊、以太網(wǎng)模塊、4路RS232/485模塊、掉電參數(shù)保存模塊、時鐘模塊、SD卡存儲模塊、LED狀態(tài)指示燈等[7]。

基于以上平臺,開發(fā)S7協(xié)議驅(qū)動程序。嵌入式平臺軟件架構(gòu)如圖4所示。系統(tǒng)為模塊化設(shè)計(jì),每個協(xié)議驅(qū)動和管理模塊都是一個獨(dú)立的應(yīng)用程序,所有的數(shù)據(jù)交互均以總線的形式在獨(dú)立開辟的內(nèi)存緩沖區(qū)上流轉(zhuǎn)。各驅(qū)動程序可獨(dú)立開發(fā),獨(dú)立下載,互不耦合。日志模塊負(fù)責(zé)異常和輸出的日志打印。初始化模塊負(fù)責(zé)讀取驅(qū)動需要的參數(shù)文件并初始化驅(qū)動。數(shù)據(jù)管理模塊負(fù)責(zé)開辟內(nèi)存緩沖區(qū),并與緩沖區(qū)進(jìn)行交互,將驅(qū)動采集或上層應(yīng)用寫入的數(shù)據(jù)進(jìn)行保存,完成通道、設(shè)備、點(diǎn)的數(shù)據(jù)采集和存儲。驅(qū)動管理模塊負(fù)責(zé)各類驅(qū)動模塊的管理,自動加載系統(tǒng)中存在的驅(qū)動并進(jìn)行監(jiān)護(hù)[8-10]。

圖4 嵌入式平臺軟件架構(gòu)圖

5.2 S7驅(qū)動程序設(shè)計(jì)

S7驅(qū)動程序模塊由C++語言開發(fā),主要實(shí)現(xiàn)對S7協(xié)議第5、6、7層編程,包括驅(qū)動對象類、通道類、設(shè)備類、變量類、TCP通信類、組織查詢報(bào)文類、報(bào)文解析類、xml解析器、打印日志類等。在Linux平臺下,將文件交叉編譯成可執(zhí)行的exe文件,在嵌入式平臺上并行運(yùn)行,完成不同的功能。平臺上電啟動后驅(qū)動程序首先加載由配置管理工具配置的xml文件,完成初始化工作,建立S7通信連接,再循環(huán)進(jìn)行S7數(shù)據(jù)的讀寫過程。對讀取的數(shù)據(jù)會實(shí)時寫入內(nèi)存緩沖區(qū),不斷刷新,以供其他模塊調(diào)用[8-10]。

①初始化。

驅(qū)動啟動后首先在內(nèi)存中構(gòu)建驅(qū)動對象,加載和解析xml配置文件,獲取PLC地址、端口號、機(jī)架槽號和變量點(diǎn)表信息,連接內(nèi)存緩沖區(qū),打開通信端口,完成一系列初始化工作。

②建立通信。

在完成初始化后,驅(qū)動自動組織兩條通信請求報(bào)文用于建立ISO_on_TCP連接和S7連接。發(fā)送COTP報(bào)文給PLC,在COTP報(bào)文中包含“連接請求”和目標(biāo)PLC CPU的機(jī)架號和槽號,PLC反饋COTP報(bào)文,進(jìn)行“連接確認(rèn)”,建立ISO_on_TCP連接。然后再發(fā)送S7通信報(bào)文給PLC,請求建立S7 通信,PLC反饋S7報(bào)文進(jìn)行“連接確認(rèn)”。下一步將進(jìn)行數(shù)據(jù)的讀寫操作[2-5]。 S7驅(qū)動初始化及通信流程如圖5所示。

圖5 S7驅(qū)動初始化及通信流程圖

③讀寫數(shù)據(jù)。

S7驅(qū)動讀寫數(shù)據(jù)流程如圖6所示。S7驅(qū)動對點(diǎn)進(jìn)行循環(huán)掃描,根據(jù)協(xié)議幀格式組織合成S7通信報(bào)文并發(fā)送,并對PLC返回的報(bào)文進(jìn)行判斷和解析,同時完成日志打印和與內(nèi)存緩沖區(qū)的數(shù)據(jù)交互,以實(shí)現(xiàn)對PLC數(shù)據(jù)的讀寫操作。

④與內(nèi)存緩沖區(qū)交互。

驅(qū)動初始化過程中,會根據(jù)通道、設(shè)備和點(diǎn)信息在內(nèi)存中創(chuàng)建表,建立內(nèi)存緩沖區(qū)用于統(tǒng)一存放數(shù)據(jù),并不斷刷新緩沖區(qū),作為驅(qū)動與其他模塊進(jìn)行數(shù)據(jù)交互的接口。在掃描前,首先檢查是否有執(zhí)行寫操作的點(diǎn)。如果有,優(yōu)先進(jìn)行寫操作。寫操作時,首先對讀取數(shù)據(jù)與待寫入的數(shù)據(jù)進(jìn)行比較,如果數(shù)據(jù)相同,則不用執(zhí)行寫操作,以提高效率。寫操作的點(diǎn)執(zhí)行完后,再執(zhí)行只讀點(diǎn)的操作。S7驅(qū)動讀寫數(shù)據(jù)流程如圖7所示。

圖6 S7驅(qū)動讀寫數(shù)據(jù)流程圖

圖7 S7驅(qū)動與內(nèi)存緩沖區(qū)交互圖

6 測試結(jié)果

測試的PLC為S7-1515,在嵌入式平臺添加S7通道。選擇PLC,設(shè)置好IP地址,端口號為102,TSAP為0302,增加待測的數(shù)據(jù)點(diǎn),下載配置到嵌入式系統(tǒng),重啟后與PLC就自動建立起了S7連接。通過開發(fā)的上位軟件就可以看到實(shí)時采集的數(shù)據(jù),可實(shí)現(xiàn)對PLC輸入、輸出、位存儲區(qū)、數(shù)據(jù)塊、定時器、計(jì)數(shù)器區(qū)域數(shù)據(jù)的讀取,并可向輸出、位存儲區(qū)、數(shù)據(jù)塊成功寫入數(shù)據(jù)。測試結(jié)果驗(yàn)證了S7協(xié)議和驅(qū)動程序的正確性,實(shí)現(xiàn)了嵌入式平臺系統(tǒng)與PLC的S7通信[11]。

7 結(jié)束語

本文主要對基于以太網(wǎng)和RFC 1006標(biāo)準(zhǔn)的S7協(xié)議進(jìn)行了研究,給出了S7協(xié)議的參考模型、S7通信建立的過程和報(bào)文格式,并在ARM+Linux嵌入式平臺上設(shè)計(jì)開發(fā)了S7協(xié)議驅(qū)動程序,實(shí)現(xiàn)了對西門子S7-1500 PLC中各存儲區(qū)數(shù)據(jù)的讀寫操作,從而驗(yàn)證了S7協(xié)議及S7驅(qū)動程序的正確性。西門子S7系列PLC在工業(yè)自動化領(lǐng)域應(yīng)用廣泛。通過本文,可以對西門子S7協(xié)議有一個較深刻的認(rèn)識,為用戶開發(fā)應(yīng)用程序,以及實(shí)現(xiàn)與西門子PLC的通信提供了參考。

猜你喜歡
嵌入式
Focal&Naim同框發(fā)布1000系列嵌入式揚(yáng)聲器及全新Uniti Atmos流媒體一體機(jī)
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設(shè)計(jì)與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發(fā)平臺
基于嵌入式系統(tǒng)Windows CE的應(yīng)用程序開發(fā)
嵌入式單片機(jī)在電機(jī)控制系統(tǒng)中的應(yīng)用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
Altera加入嵌入式視覺聯(lián)盟
主站蜘蛛池模板: 国产精品免费p区| 欧美日韩理论| 99人体免费视频| 欧美综合中文字幕久久| 国产美女人喷水在线观看| 毛片大全免费观看| 亚洲国产成人自拍| 欧美国产日韩在线观看| 手机在线看片不卡中文字幕| 深爱婷婷激情网| 黄色网址免费在线| 日韩久久精品无码aV| 99久久精品美女高潮喷水| 国内精品久久久久久久久久影视| 在线a网站| 国内丰满少妇猛烈精品播| 国产91特黄特色A级毛片| 欧美有码在线| 久草视频福利在线观看| 国产精品久久自在自线观看| 亚洲国产精品不卡在线| 久久精品波多野结衣| 亚洲综合专区| 999在线免费视频| 欧美综合中文字幕久久| 亚洲Aⅴ无码专区在线观看q| 日本在线国产| 欧美午夜理伦三级在线观看| 国产精品99久久久久久董美香| 噜噜噜综合亚洲| 亚洲国产欧洲精品路线久久| 亚洲毛片网站| 又粗又硬又大又爽免费视频播放| 国产精品成人AⅤ在线一二三四| www.精品国产| 国产亚洲精品无码专| 狠狠v日韩v欧美v| 亚洲国产系列| 国产aaaaa一级毛片| 亚洲欧美日本国产专区一区| 91精选国产大片| 亚洲欧洲综合| 老熟妇喷水一区二区三区| 欧美一区精品| 激情综合图区| 亚洲精品少妇熟女| 精品成人免费自拍视频| 国产欧美日韩精品综合在线| 国产性生交xxxxx免费| 自拍偷拍欧美| 成人免费午间影院在线观看| 国产午夜福利在线小视频| 91无码网站| 91成人精品视频| 欧美国产日本高清不卡| 国产精品手机在线观看你懂的| 91网在线| 性网站在线观看| 亚洲熟妇AV日韩熟妇在线| 99热线精品大全在线观看| 成人亚洲视频| 亚洲色图在线观看| 国产精品视频观看裸模| 欧美在线伊人| 亚洲成av人无码综合在线观看| 青青久久91| 91久久夜色精品国产网站 | 国产一级小视频| 国产熟女一级毛片| 日本亚洲欧美在线| 国产在线视频福利资源站| 无码丝袜人妻| 精品国产中文一级毛片在线看| 漂亮人妻被中出中文字幕久久| 91青青草视频在线观看的| 亚洲清纯自偷自拍另类专区| 亚洲男人的天堂在线观看| 亚洲人视频在线观看| 激情综合网激情综合| 在线无码九区| 在线观看精品自拍视频| 亚洲免费三区|