亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        侯建華

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

        0 引言

        西門子SIMATIC控制器在工業(yè)自動化領(lǐng)域應(yīng)用廣泛。S7協(xié)議為西門子控制器與控制器、控制器與人機接口(human machine interface,HMI)等之間提供了穩(wěn)定可靠的工業(yè)通信,可以實現(xiàn)數(shù)據(jù)采集、組態(tài)、診斷、監(jiān)控等多種功能[1]。但S7協(xié)議是西門子的私有協(xié)議且不公開,這給第三方應(yīng)用與西門子控制器之間的數(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é)議族,是應(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)標準,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)通信提供服務(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進行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ù)應(yīng)用的不同共分為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ū)動和管理模塊都是一個獨立的應(yīng)用程序,所有的數(shù)據(jù)交互均以總線的形式在獨立開辟的內(nèi)存緩沖區(qū)上流轉(zhuǎn)。各驅(qū)動程序可獨立開發(fā),獨立下載,互不耦合。日志模塊負責(zé)異常和輸出的日志打印。初始化模塊負責(zé)讀取驅(qū)動需要的參數(shù)文件并初始化驅(qū)動。數(shù)據(jù)管理模塊負責(zé)開辟內(nèi)存緩沖區(qū),并與緩沖區(qū)進行交互,將驅(qū)動采集或上層應(yīng)用寫入的數(shù)據(jù)進行保存,完成通道、設(shè)備、點的數(shù)據(jù)采集和存儲。驅(qū)動管理模塊負責(zé)各類驅(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)域應(yīng)用廣泛。通過本文,可以對西門子S7協(xié)議有一個較深刻的認識,為用戶開發(fā)應(yīng)用程序,以及實現(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)
        電視技術(shù)(2012年1期)2012-06-06 08:13:58
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        日韩精品人妻少妇一区二区| 亚洲旡码a∨一区二区三区 | 少妇真实被内射视频三四区| 亚洲国产精品日韩av不卡在线| 成人免费xxxxx在线视频| 视频网站在线观看不卡| 中文字幕日韩有码国产| 国产精品国产三级国产不卡| 蜜桃一区二区三区视频网址| 日韩精品久久久肉伦网站| 国产A√无码专区| 熟女少妇av免费观看| 被灌醉的日本人妻中文字幕| 国产动作大片中文字幕| 两个黑人大战嫩白金发美女| 亚洲国产综合精品久久av| 日本一区二区在线高清| 国产99久久久国产精品免费看| 女同亚洲女同精品| 国产熟女精品一区二区| 美女丝袜美腿玉足视频| 无码少妇精品一区二区免费动态| 国产精品23p| 久久精品国产白丝爆白浆| 日本三级香港三级人妇99| 国产福利酱国产一区二区| 成人综合亚洲欧美一区h| 蜜桃网站免费在线观看视频| 国产午夜毛片v一区二区三区| 亚洲视频在线看| 亚洲精品国产精品系列| 97色伦图片97综合影院| 国产大学生粉嫩无套流白浆| 4hu44四虎www在线影院麻豆| 国产精品一区二区三区播放| 内地老熟女老少配视频| 中字无码av电影在线观看网站| 中文片内射在线视频播放| 丰满少妇弄高潮了www| 亚洲一区二区三区日本久久九| 国内色精品视频在线网址|