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

?

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

2019-10-09 00:45:20侯建華
自動化儀表 2019年9期
關(guān)鍵詞:驅(qū)動程序緩沖區(qū)西門子

侯建華

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

0 引言

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

1 S7協(xié)議概述

西門子SIMATIC所有控制器,例如S7系列PLC、其他嵌入式或基于計算機的控制器均支持S7協(xié)議。S7協(xié)議是一個協(xié)議族,是應用層的協(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é)議中應用廣泛的一種。其底層遵循的是通用的以太網(wǎng)標準,PLC CPU模塊和以太網(wǎng)模塊均支持此通信[1]。

2 S7協(xié)議模型

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

第1~4層是通用的以太網(wǎng)通信標準。第4層RFC1006為西門子S7以太網(wǎng)通信提供服務。第5層TPKT為應用層數(shù)據(jù)傳輸協(xié)議,介于TCP和第6層COTP協(xié)議之間。這是一個傳輸服務協(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通信過程

應用程序與西門子PLC進行S7通信,其通信過程如圖2所示。

圖2 S7通信過程示意圖

①建立TCP連接。

②建立ISO on TCP連接。

③建立S7連接。

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

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

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

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

4.1 TPKT幀頭

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

4.2 COTP包

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

4.3 S7 PDU

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

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

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

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

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

5.1 嵌入式平臺

嵌入式平臺采用ARM+Linux,選用基于Cortex-A8架構(gòu)的德州儀器(TI)公司AM3352芯片作為主處理器,主頻為800 MHz,運算能力高達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è)計,每個協(xié)議驅(qū)動和管理模塊都是一個獨立的應用程序,所有的數(shù)據(jù)交互均以總線的形式在獨立開辟的內(nèi)存緩沖區(qū)上流轉(zhuǎn)。各驅(qū)動程序可獨立開發(fā),獨立下載,互不耦合。日志模塊負責異常和輸出的日志打印。初始化模塊負責讀取驅(qū)動需要的參數(shù)文件并初始化驅(qū)動。數(shù)據(jù)管理模塊負責開辟內(nèi)存緩沖區(qū),并與緩沖區(qū)進行交互,將驅(qū)動采集或上層應用寫入的數(shù)據(jù)進行保存,完成通道、設(shè)備、點的數(shù)據(jù)采集和存儲。驅(qū)動管理模塊負責各類驅(qū)動模塊的管理,自動加載系統(tǒng)中存在的驅(qū)動并進行監(jiān)護[8-10]。

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

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

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

①初始化。

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

②建立通信。

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

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

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

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

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

驅(qū)動初始化過程中,會根據(jù)通道、設(shè)備和點信息在內(nèi)存中創(chuàng)建表,建立內(nèi)存緩沖區(qū)用于統(tǒng)一存放數(shù)據(jù),并不斷刷新緩沖區(qū),作為驅(qū)動與其他模塊進行數(shù)據(jù)交互的接口。在掃描前,首先檢查是否有執(zhí)行寫操作的點。如果有,優(yōu)先進行寫操作。寫操作時,首先對讀取數(shù)據(jù)與待寫入的數(shù)據(jù)進行比較,如果數(shù)據(jù)相同,則不用執(zhí)行寫操作,以提高效率。寫操作的點執(zhí)行完后,再執(zhí)行只讀點的操作。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ù)點,下載配置到嵌入式系統(tǒng),重啟后與PLC就自動建立起了S7連接。通過開發(fā)的上位軟件就可以看到實時采集的數(shù)據(jù),可實現(xiàn)對PLC輸入、輸出、位存儲區(qū)、數(shù)據(jù)塊、定時器、計數(shù)器區(qū)域數(shù)據(jù)的讀取,并可向輸出、位存儲區(qū)、數(shù)據(jù)塊成功寫入數(shù)據(jù)。測試結(jié)果驗證了S7協(xié)議和驅(qū)動程序的正確性,實現(xiàn)了嵌入式平臺系統(tǒng)與PLC的S7通信[11]。

7 結(jié)束語

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

猜你喜歡
驅(qū)動程序緩沖區(qū)西門子
嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計與實現(xiàn)
西門子重型燃機出海
能源(2017年7期)2018-01-19 05:05:05
西門子亮相CIIF201
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
西門子 分布式I/O Simatic ET 200AL
西門子引領(lǐng)制造業(yè)的未來
自動化博覽(2014年7期)2014-02-28 22:32:28
地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計與實現(xiàn)
AVS標準中的視頻碼流緩沖區(qū)校驗模型分析
驅(qū)動程序更新與推薦
驅(qū)動程序更新與推薦
高邮市| 望都县| 那曲县| 迁安市| 新巴尔虎左旗| 永清县| 香格里拉县| 蓝田县| 溆浦县| 繁昌县| 通化县| 吉首市| 鄂托克前旗| 西城区| 七台河市| 邻水| 定结县| 综艺| 和林格尔县| 靖边县| 玉树县| 永修县| 湖州市| 资溪县| 灵宝市| 建阳市| 丹江口市| 耒阳市| 文化| 翁源县| 建德市| 沙湾县| 泌阳县| 河西区| 衡阳市| 志丹县| 嘉善县| 南雄市| 临邑县| 宝兴县| 汉中市|