技術(shù)頻道

      一種S7-300與S7-200自由口無(wú)線通信實(shí)現(xiàn)方法

      1 項(xiàng)目簡(jiǎn)介
      濱州市污水處理廠占地100萬(wàn)立方米。采用德國(guó)BIOLAK污水處理工藝,日處理水規(guī)模為10萬(wàn)立方米。項(xiàng)目使用四套S7-300和兩套S7-200建成分布式控制系統(tǒng),完成整個(gè)污水處理的控制、數(shù)據(jù)采集功能,本文僅敘述了項(xiàng)目的一部分——S7-300和S7-200通信內(nèi)容。
      S7-200PLC作為小型PLC,以其功能強(qiáng)、性價(jià)比高在工控領(lǐng)域中被廣泛應(yīng)用。在S7-200與S7-300或WINCC通信時(shí),通常需要安裝EM277或CP243-1模塊,成本升高,使得S7-200性價(jià)比優(yōu)勢(shì)大打折扣。自由口通信是S7-200的突出特點(diǎn)之一,本文介紹了一種經(jīng)濟(jì)靈活的通信方法,其可行性、可靠性在實(shí)際工程中得到驗(yàn)證。圖1為濱州污水處理廠監(jiān)控中心。
       圖1 濱州污水處理廠監(jiān)控中心
      圖1 濱州污水處理廠監(jiān)控中心
      2 工程應(yīng)用中的硬件及網(wǎng)絡(luò)結(jié)構(gòu)
      濱州污水處理廠自動(dòng)化監(jiān)控系統(tǒng)中,兩刮泥橋上各有一臺(tái)S7-200PLC,每臺(tái)PLC控制8臺(tái)吸泥泵及刮泥橋的正反向運(yùn)動(dòng)。S7-200PLC的柜子安裝在刮泥橋上,處于不停地來(lái)回運(yùn)動(dòng)中,不適合進(jìn)行有線通信,采取了無(wú)線數(shù)傳電臺(tái)方式。
      S7-200CPU上的通信口是基于RS485的,通過(guò)一個(gè)RS485/232轉(zhuǎn)換器將S7-200連接到電臺(tái);在脫水機(jī)房的S7-300上掛一串口通信模塊CP340,并連接到數(shù)傳電臺(tái),通過(guò)編程便可以實(shí)現(xiàn)S7-300與S7-200間的通信;監(jiān)控室的上位機(jī)以MPI總線方式與S7-300通信,便可間接監(jiān)控S7-200。系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2
      圖2 通信結(jié)構(gòu)圖
      2 通信結(jié)構(gòu)圖
      3 通信功能的實(shí)現(xiàn)
      通信程序要實(shí)現(xiàn)S7-300向一個(gè)S7-200站發(fā)送7個(gè)字節(jié)的數(shù)據(jù),然后接收并存儲(chǔ)該S7-200返回的6個(gè)字節(jié)數(shù)據(jù)。S7-300發(fā)送的7個(gè)字節(jié)中,第1個(gè)字節(jié)是地址信息,第2、3、4字節(jié)是吸泥泵及刮泥橋控制數(shù)據(jù)信息,第5、6字節(jié)是1、2字節(jié)和3、4字節(jié)異或值,作為校驗(yàn)判斷信息,第7位字節(jié)數(shù)據(jù)信息無(wú)意義,僅僅是為了觸發(fā)一次S7-200的字符接收中斷程序;S7-200向S7-300發(fā)送的6個(gè)字節(jié)中,第1個(gè)字節(jié)是S7-200的站地址信息,第2、3、4字節(jié)是吸泥泵及刮泥橋狀態(tài)數(shù)據(jù)信息,第5、6字節(jié)為校驗(yàn)信息。
      3.1 S7-300端通信程序
      在自由口模式下,無(wú)論S7-200還是S7-300,通信協(xié)議完全由程序控制。CP340通過(guò)調(diào)用FB2 P_RCV來(lái)接收數(shù)據(jù),調(diào)用FB3 P_SEND來(lái)發(fā)送數(shù)據(jù)。發(fā)送功能塊FB3 P_SEND的參數(shù)REQ上升沿初始化發(fā)送請(qǐng)求,參數(shù)DB_NO指定發(fā)送數(shù)據(jù)塊編號(hào),參數(shù)DBB_NO是發(fā)送數(shù)據(jù)在參數(shù)DB_NO指定數(shù)據(jù)塊中起始字節(jié),LEN指定傳輸數(shù)據(jù)的字節(jié)長(zhǎng)度;接收功能塊FB2 P_RCV參數(shù)EN_R允許讀數(shù)據(jù),參數(shù)DB_NO指定接收數(shù)據(jù)塊編號(hào),參數(shù)DBB_NO是接收數(shù)據(jù)在參數(shù)DB_NO指定數(shù)據(jù)塊中起始字節(jié)。
      S7-300采用輪循方式與兩S7-200通信,即第一秒內(nèi)向1號(hào)站發(fā)送數(shù)據(jù),然后接收1號(hào)站返回的數(shù)據(jù)(S7-200在接收到S7-300發(fā)送的數(shù)據(jù)后會(huì)立刻向S7-300發(fā)送數(shù)據(jù));第二秒內(nèi)向2號(hào)站發(fā)送數(shù)據(jù),然后接收2號(hào)站返回的數(shù)據(jù),不停地循環(huán)通信。S7-300通信程序流程如圖3。
      圖3 S7-300通信程序流程圖
      3 S7-300通信程序流程圖
      S7-300通信程序詳細(xì)介紹
      AN M 30.0
      L S5T#2S
      SD T 1
      A M 30.0
      R T 1
      L T 1
      T MW 40
      NOP 0
      A T 1
      = M 30.0
      //設(shè)一2秒定時(shí)器,定時(shí)時(shí)間到自動(dòng)進(jìn)行下一次定時(shí),當(dāng)前值存入MW40
      A(
      L MW 40
      L 102
      >I
      )
      A(
      L MW40
      L 200
      <I
      )
      = M30.1
      // 定時(shí)器第一秒鐘內(nèi),即102<MW40<200,M30.1為1
      A(
      L MW 40
      L 2
      >I
      )
      A(
      L MW 40
      L 100
      <I
      )
      = M 30.2
      //定時(shí)器第二秒鐘內(nèi)M30.2為1
      A (
      A M 30.1
      JNB _001
      L 0
      T MW 34
      SET
      SAVE
      CLR
      _001: A BR
      )
      JNB _002
      L 0
      T MW 36
      _002: NOP 0
      // M30.1為1時(shí),即定時(shí)器第一秒內(nèi),使MW34=0、MW36=0,作為起始字節(jié)值
      A (
      A M 30.2
      JNB _003
      L 8
      T MW 34
      SET
      SAVE
      CLR
      _003: A BR
      )
      JNB _004
      L 8
      T MW 36
      _004: NOP 0
      // M30.2為1時(shí),即定時(shí)器第二秒內(nèi),使MW34=8、MW36=8,作為起始字節(jié)值
      O M 30.1
      O M 30.2
      = M 33.0
      A M 33.0
      = L 20.0
      BLD 103
      CALL "P_SEND" , DB19
      REQ :=L20.0
      R :=
      LADDR :=320
      DB_NO :=2
      DBB_NO:=MW34
      LEN :=7
      DONE :=M50.1
      ERROR :=M50.2
      STATUS:=MW52
      NOP 0
      // 調(diào)用發(fā)送指令,當(dāng)M30.1為1時(shí)(其上升沿初始化發(fā)送請(qǐng)求),即定時(shí)器第一秒內(nèi)發(fā)送DB2.DBB0起始的7個(gè)字節(jié),第一個(gè)字節(jié)為1站地址;當(dāng)M30.2為1時(shí)(其上升沿初始化發(fā)送請(qǐng)求),即定時(shí)器第2秒內(nèi)發(fā)送DB2.DBB8起始的7個(gè)字節(jié),第一個(gè)字節(jié)為2站地址
      A M 33.0
      = L 20.0
      BLD 103
      CALL "P_RCV" , DB20
      EN_R :=L20.0
      R :=
      LADDR :=320
      DB_NO :=22
      DBB_NO:=MW36
      NDR :=M60.1
      ERROR :=M60.2
      LEN :=MW62
      STATUS:=MW64
      NOP 0
      // 調(diào)用接收指令,當(dāng)M30.1為1時(shí)(允許讀數(shù)據(jù)),即定時(shí)器第一秒內(nèi)接收1號(hào)S7-200站回傳的6字節(jié)數(shù)據(jù),存入DB22數(shù)據(jù)塊中,起始字節(jié)為DB22.DBB0;當(dāng)M30.2為1時(shí),即定時(shí)器第2秒內(nèi)接收2號(hào)S7-200站回傳的6字節(jié)數(shù)據(jù),存入DB22數(shù)據(jù)塊中,起始字節(jié)為DB22.DBB8
      3.2 S7-200端通信程序
      S7-200 PLC程序分為主程序、子程序和中斷程序,主程序完成控制和子程序調(diào)用功能,子程序完成通信口初始化功能,中斷程序完成數(shù)據(jù)的接收和發(fā)送功能。發(fā)送數(shù)據(jù)采用發(fā)送指令XMT,接收數(shù)據(jù)采用逐字節(jié)接收方法,通信口接收每個(gè)字節(jié)都會(huì)暫存到特殊存儲(chǔ)器SMB2中,并且產(chǎn)生中斷,利用中斷程序控制數(shù)據(jù)的接收。由于S7-200CPU的通信是建立在RS-485半雙工通信硬件的基礎(chǔ)上,接收和發(fā)送不能同時(shí)進(jìn)行。通信中斷程序要做到:接收指令不結(jié)束,就不能執(zhí)行發(fā)送指令。
      反映S7-200CPU工作方式的模式開(kāi)關(guān)當(dāng)前位置的特殊存儲(chǔ)器位為SM0.7,它控制自由端口模式的進(jìn)入。當(dāng)模式開(kāi)關(guān)處于TERM位置時(shí),SM0.7為0;當(dāng)模式開(kāi)關(guān)處于RUN位置時(shí),SM0.7為1。SMB30是自由口模式控制字節(jié),用來(lái)設(shè)定校驗(yàn)方式、通信協(xié)議、波特率等通信參數(shù)(其各個(gè)位含義參閱相關(guān)手冊(cè)),中斷事件號(hào)8為端口0接收字符中斷,中斷事件號(hào)9為端口0發(fā)送完成中斷。
      當(dāng)SM0.7為1時(shí),調(diào)用子程序SBR_0設(shè)置SMB30,允許進(jìn)行自由口通信;SM0.7為0時(shí),調(diào)用子程序SBR_1重新設(shè)置SMB30,停止自由口通信,恢復(fù)PPI通信,便于用Micro/WIN軟件對(duì)CPU運(yùn)行狀態(tài)進(jìn)行監(jiān)視。S7-200通信程序流程如圖4
      圖4 S7-200通信程序流程圖
      4 S7-200通信程序流程圖
      S7-200通信程序詳細(xì)介紹(1號(hào)站)
      主程序MAIN(只給出與通信有關(guān)程序)
      LD SM0.1
      MOVB 1, VB1
      //設(shè)置站地址
      LD SM0.7
      EU
      O SM0.1
      CALL SBR_0
      //首次運(yùn)行或模式開(kāi)關(guān)從TERM打到ON時(shí)定義通信口為自由口
      LD SM0.7
      ED
      CALL SBR_1
      //模式開(kāi)關(guān)從ON撥到TERM時(shí)定義通信口為PPI從站
      子程序SBR_0
      LD SM0.0
      MOVB 16#09, SMB30
      ENI
      ATCH INT_11, 8
      //定義通信口0為自由口模式,9.6K波特率,無(wú)校驗(yàn),8位數(shù)據(jù)位,連接接收字符中斷為中斷程序INT_11
      子程序SBR_1
      LD SM0.0
      MOVB 16#C0, SMB30
      DTCH 8
      DTCH 9
      //恢復(fù)普通PPI通信設(shè)置
      中斷程序INT_11
      LD SM0.0
      AB= SMB2, VB1
      MOVW +5, VW200
      MOVD &VB640, VD688
      ATCH INT_12, 8
      //若站地址正確,連接接收字符中斷到中斷程序INT_12,并使VW200=5來(lái)計(jì)數(shù),在INT_12中連續(xù)接收五個(gè)字節(jié);若站地址錯(cuò)誤,則繼續(xù)由INT_11接收字節(jié)數(shù)據(jù),要在S7-300中程序中將其余六個(gè)字節(jié)的高位進(jìn)行設(shè)計(jì),避免出現(xiàn)為內(nèi)容1或2地址信息的字節(jié),即使傳輸過(guò)程中因外界干擾,其余六個(gè)字節(jié)出現(xiàn)為1或2的假地址情況,程序也會(huì)在接下來(lái)1~2個(gè)接收過(guò)程中,因INT_13中斷程序中的校驗(yàn)指令作用,得到錯(cuò)誤校驗(yàn)值,而恢復(fù)到正常接收狀態(tài)。
      中斷程序INT_12
      LD SM0.0
      MOVB SMB2, *VD688
      INCD VD688
      DECW VW200
      //接收5個(gè)字節(jié)
      LD SM1.0
      MOVB 1, VB639
      MOVW VW639, VW700
      XORW VW641, VW700
      ATCH INT_13, 8
      //通過(guò)異或指令進(jìn)行數(shù)據(jù)校驗(yàn),連接接收字符中斷到中斷程序INT_13,即由第七個(gè)字節(jié)觸發(fā)中斷程序INT_13
      中斷程序INT_13
      LD SM0.0
      DTCH 8
      //中斷分離
      LDW= VW700, VW643
      MOVD VD640, VD400 //校驗(yàn)正確,將控制信息數(shù)據(jù)存到VB400~VB402
      MOVB 6, VB600
      MOVB VB1, VB601
      BMB VB100, VB602, 5
      ATCH INT_14, 9
      XMT VB600, 0
      //校驗(yàn)正確,使能發(fā)送,發(fā)送6字節(jié)數(shù)據(jù)VB601~VB606,連接發(fā)送指令結(jié)束到中斷程序INT_14
      LDW<> VW700, VW643
      ATCH INT_11, 8
      //校驗(yàn)不正確,連接接收字符中斷到中斷程序INT_11,進(jìn)行新一次接收
      中斷程序INT_14
      LD SM0.0
      DTCH 9
      ATCH INT_11, 8
      //發(fā)送結(jié)束則連接接收字符中斷到中斷程序INT_11,進(jìn)行新一次接收
      4 電臺(tái)選型和故障判斷
      數(shù)傳電臺(tái)選擇了深圳友訊達(dá)科技發(fā)展公司的FC-201/B,該數(shù)傳電臺(tái)以其價(jià)格合理、運(yùn)行穩(wěn)定在國(guó)內(nèi)得到廣泛應(yīng)用。通過(guò)友訊達(dá)提供的電臺(tái)軟件pfc5對(duì)電臺(tái)進(jìn)行參數(shù)設(shè)置,在S7-200兩個(gè)站處將電臺(tái)參數(shù)設(shè)置為:發(fā)射頻率453.00,接收頻率465.00,空中速率1200bps,工作模式為透明模式,串口波特率9600bps,串口校驗(yàn)和設(shè)為無(wú);在S7-300站處將電臺(tái)的參數(shù)中發(fā)射頻率設(shè)為465.00,接收頻率設(shè)為453.00,與S7-200站處電臺(tái)收發(fā)頻率對(duì)應(yīng),其余參數(shù)一致。
      FC-201/B數(shù)傳電臺(tái)有一個(gè)發(fā)送和接收指示燈,當(dāng)發(fā)送數(shù)據(jù)時(shí)為紅燈,接收數(shù)據(jù)時(shí)為綠燈。根據(jù)此燈可以方便的判斷通訊是否正常,正常情況下,S7-300輪循方式與兩S7-200通信,即第一秒內(nèi)向1號(hào)站發(fā)送數(shù)據(jù),然后接收1號(hào)站返回的數(shù)據(jù)(S7-200在接收到S7-300發(fā)送的數(shù)據(jù)后會(huì)立刻向S7-300發(fā)送數(shù)據(jù));第二秒內(nèi)向2號(hào)站發(fā)送數(shù)據(jù),然后接收2號(hào)站返回的數(shù)據(jù),不停地循環(huán)通信。S7-300站處電臺(tái)通訊指示燈紅閃一下,接著綠閃一下,處在不停的紅-綠-紅-綠循環(huán)狀態(tài)。而S7-200站在接收S7-300發(fā)送的數(shù)據(jù)時(shí),要經(jīng)過(guò)地址數(shù)據(jù)字節(jié)判斷,確認(rèn)地址為本站,并且對(duì)接收數(shù)據(jù)進(jìn)行校驗(yàn),確定接收數(shù)據(jù)無(wú)誤才回傳S7-300數(shù)據(jù),但是只要S7-300發(fā)送數(shù)據(jù),S7-200就接收數(shù)據(jù),即使是發(fā)送給另一個(gè)S7-200站的數(shù)據(jù)。所以在無(wú)外界干擾,數(shù)據(jù)發(fā)送沒(méi)有校驗(yàn)錯(cuò)誤的情況下,S7-200站處的電臺(tái)通訊燈是綠閃兩下,紅閃一下,處在不停的綠-綠-紅循環(huán)狀態(tài),即接收兩次數(shù)據(jù),發(fā)送一次數(shù)據(jù)。如果通訊出現(xiàn)故障,根據(jù)通訊燈的閃爍狀態(tài),便可很容易查出通訊故障所在。
      5 結(jié)束語(yǔ)
      上位機(jī)WINCC通過(guò)訪問(wèn)S7-300的數(shù)據(jù)塊DB2和DB22,就可以實(shí)現(xiàn)對(duì)兩個(gè)S7-200PLC站的監(jiān)控。自本系統(tǒng)投入運(yùn)行以來(lái),運(yùn)行穩(wěn)定可靠,收到用戶好評(píng)。本通信方案經(jīng)濟(jì)、靈活,程序可移植性強(qiáng),對(duì)于類(lèi)似項(xiàng)目具有很高的借鑒意義。

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 国产福利一区视频| 波多野结衣精品一区二区三区 | 97精品国产一区二区三区| 日本一区二区三区免费高清| 国产精品va无码一区二区| 视频一区二区中文字幕| 日韩欧美一区二区三区免费观看 | 免费无码VA一区二区三区| 亚洲av无码天堂一区二区三区| 无码少妇一区二区三区芒果| 亚洲午夜电影一区二区三区| 高清一区二区三区免费视频| 精品一区二区三区高清免费观看| 国产凸凹视频一区二区| 午夜视频在线观看一区| 亚洲丶国产丶欧美一区二区三区| 日韩人妻无码一区二区三区久久 | 色窝窝免费一区二区三区| 亚洲视频一区二区三区四区| 久久精品亚洲一区二区三区浴池| 无码少妇一区二区性色AV| 亚洲线精品一区二区三区| 中文字幕人妻丝袜乱一区三区 | 一色一伦一区二区三区| 一本一道波多野结衣AV一区| 中文字幕一区二区三区人妻少妇| 亚洲丰满熟女一区二区v| 一区二区不卡在线| 精品人妻无码一区二区色欲产成人| 亚洲一区二区三区久久| 亚洲熟妇AV一区二区三区宅男| 色噜噜狠狠一区二区三区| 亚洲一区二区三区在线观看网站| 国产精品一区在线麻豆| 日韩在线视频一区| 久久久精品日本一区二区三区| 久久国产三级无码一区二区| 久久人妻内射无码一区三区| 亚洲视频一区二区三区四区| 免费萌白酱国产一区二区| 日韩一本之道一区中文字幕|