西門子—自由口通訊知識_第1頁
西門子—自由口通訊知識_第2頁
西門子—自由口通訊知識_第3頁
西門子—自由口通訊知識_第4頁
西門子—自由口通訊知識_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、S7-200系列自由口通訊的實(shí)現(xiàn)及應(yīng)用i引言為了達(dá)到和通訊協(xié)議已知的控制設(shè)備進(jìn)行數(shù)據(jù)交換,以提高自動化控制系統(tǒng)的靈活性,很多pic制造商都相繼的開發(fā)出了方便、靈活的自由口通訊方式,例如三菱公司的fx2系列pic, omro n公司的cjml系列的pic,西門子公司的S7-200系列pic等都提供了自由口通 訊模式。自由口通訊是指pic提供了串行的通訊硬件,和用于定制通訊協(xié)議的相關(guān)指令,在控制系統(tǒng)中,當(dāng)要和 pic連接的控制設(shè)備的通訊協(xié)議已知時(shí),可以在pic中進(jìn)行編程定制通訊協(xié)議,和控制設(shè)備進(jìn)行數(shù)據(jù)通訊。本文主要介紹西門子S7-200的自由口和計(jì)算機(jī)的串口進(jìn)行的通訊,計(jì)算機(jī)中采用visuai b

2、asic進(jìn)行編程,從而實(shí)現(xiàn)計(jì)算機(jī)與可編程控制器的直接 控制。該通訊方式具有效率高、容易實(shí)現(xiàn)、通訊硬件簡單、容易配置等特點(diǎn)在工業(yè)控制領(lǐng)域 中被廣泛應(yīng)用。2 S7-200通訊指令及特殊字節(jié)采用自由口通訊方式時(shí),S7-200上的rs485 口完全由用戶控制,可以與任何協(xié)議已知的 設(shè)備進(jìn)行通訊,在這種情況下通訊協(xié)議完全由用戶制定,為此,S7-200提供了用于進(jìn)行通訊協(xié)議定制的特殊標(biāo)志位以及相關(guān)的通訊指令。2.1特殊標(biāo)志字節(jié)S7-200用于自由口通訊模式定義的特殊標(biāo)志字節(jié)有smb30和smb130, smb30用于s7-200的端口 0的通訊,smb130用于S7-200的端口 1的通訊,兩者的格式一樣

3、,下面我們以smb130為例,介紹其組成。smb130各位的含義如下:PPDBBBMMpp :兩位用于選擇通訊的校驗(yàn)方式當(dāng)這兩位的組合是:00無校驗(yàn) 01偶校驗(yàn) 10無校驗(yàn)11奇校驗(yàn)d :這一位用于選擇通訊的數(shù)據(jù)位數(shù)d=1時(shí)7個(gè)數(shù)據(jù)位,d=0時(shí)8個(gè)數(shù)據(jù)位bbb :用于選擇自由口通訊是的波特率,這三位的組合和通訊波特率的關(guān)系如下:000 38400bps001 19200bps010 9600bps011 4800bps100 2400bps101 1200bps110 600 bps111 300 bpsmm:用于通訊協(xié)議的選擇,當(dāng)這兩位的組合是:00 ppi從站模式01自由口通訊模式 10

4、ppi主站模式2.2接收信息的狀態(tài)字節(jié)S7-200在自由口通訊時(shí)用于接受信息的狀態(tài)有smb86和smb186,smb86用于S7-200的端口 0的通訊,smb186用于S7-200的端口 1的通訊,兩者的格式一樣,下面我們以smb186為例,介紹其組成。 smb186各位的含義如下:NRE00TCPn=1時(shí):表示禁止接收信息r=1時(shí):表示接收信息結(jié)束e=1時(shí):表示收到結(jié)束字符t=1時(shí):表示接收信息超時(shí)錯(cuò)誤c=1時(shí):表示接收信息字符超長錯(cuò)誤p=1時(shí):表示接收信息奇、偶校驗(yàn)錯(cuò)誤 2.3接收信息的控制字節(jié)S7-200在自由口通訊時(shí)用于接受信息的控制字節(jié)有smb87和smb187 , smb87用于

5、s7-200的端口 0的通訊,smb187用于S7-200的端口 1的通訊,兩者的格式一樣,下面我們以smb187為例,介紹其組成。smb187各位的含義如下:enscecilc/mtmrbk0en=0時(shí):禁止接收信息en=1時(shí):允許接收信息sc=0時(shí):不使用起始字符開始sc=1時(shí):使用起始字符做為接收信息的開始ec=0時(shí):不使用結(jié)束字符結(jié)束ec=1時(shí):使用結(jié)束字符做為接收信息的結(jié)束il=0時(shí):不使用空閑線檢測il=1時(shí):使用空閑線檢測c/m=0時(shí):定時(shí)器是字符定時(shí)器 c/m=1時(shí):定時(shí)器是信息定時(shí)器 tmr=0時(shí):不使用超時(shí)檢測 tmr=1時(shí):使用超時(shí)線檢測 bk=0時(shí):不使用中斷檢測bk=

6、1時(shí):使用中斷檢測丟1 英它和曰由口謹(jǐn)饑育關(guān)的特殊宇SIVB88* SME1 8 8Sh'E S 9 . SME1 1定*結(jié)束早符SM 瀘/9 0 S t -T1/*/1 9 O空嗣銭檢測田間識定 Iff Ims :SKTW92 . SMW1 9 2 j13 B1因間檢測設(shè)定10": m s :SKC 9,SN1B1 3要掛收的最大宇符皈2.5自由口通訊的指令(1) 發(fā)送指令xmt其指令格式如圖所示:XMTENTBLPORT發(fā)送指令用于激活發(fā)送數(shù)據(jù)緩沖區(qū)tbl中的數(shù)據(jù),數(shù)據(jù)格式如下所示, 數(shù)據(jù)緩沖區(qū)中的第一個(gè)數(shù)據(jù)是指定要發(fā)送的數(shù)據(jù)的總字節(jié)數(shù),最大為255個(gè),從第二個(gè)數(shù)據(jù)開始是

7、依次要發(fā)送的數(shù)據(jù)。port指定用于發(fā)送的端口,在發(fā)送完緩沖區(qū)中的最后一個(gè)數(shù)據(jù)時(shí)產(chǎn)生中斷事件。(2) 發(fā)送指令rcv其指令格式如圖所示:XMTENTBLPORT接收指令rcv用于從指定的端口接收數(shù)據(jù),并將接收到的數(shù)據(jù)存儲與其參數(shù)tbl所指定的緩沖區(qū)內(nèi),緩沖區(qū)的第一個(gè)字節(jié)指示接收到的字節(jié)數(shù)量,第二個(gè)字節(jié)指示接收的起始字符, 最后一個(gè)字節(jié)指示的是結(jié)束字符,起始字符和結(jié)束字符之間的是接收到的數(shù)據(jù),同發(fā)送緩沖區(qū)一樣,接收緩沖區(qū)的最大數(shù)量也是255個(gè)字節(jié)。(3) 與自由口通訊有關(guān)的中斷 (見表2)慕2與自由口通1H有去的中斷中曲事件號中曲事件岀W6P-R11檸咳宅農(nóng)中曲2EP0RT1升始擺枚中斷巴疔n夏茯

8、憲戰(zhàn)中斷pic自由口通訊的程序設(shè)計(jì) 3.1自由口通訊的初始化子程序(見圖1)在瓦Ui 碩媳花呂麗白也遵審gei in n jfc角幾逐E右口竟直由口1喬1* ” &蚩訐 n瘠竹jgl啊耳致QCtt血T養(yǎng)1MOV_B1-f ucun1!NtMJT*SM813O祝逢傾砂|$MB1S3的gft劃IM東書K US用麗yg忤并空方監(jiān)鼻 MOV BENOOUTkSMBier在瓦Ui 碩媳花呂麗白也遵審gei in n jfc角幾逐E右口竟直由口1喬1* ” &蚩訐 n瘠竹jgl啊耳致QCtt血T養(yǎng)在瓦Ui 碩媳花呂麗白也遵審gei in n jfc角幾逐E右口竟直由口1喬1* ” &

9、;蚩訐 n瘠竹jgl啊耳致QCtt血T養(yǎng)圖 1(a)$M011I-MOV_B£|Jf|Jf|¥1 1C Nt,ASH «卿Out產(chǎn)MSI殆Mta 4I說MN*艙椿扌町i電?gSMO1mOv wT 1fNENOXIHOUT圖 1(b)卜jTdFpc站血中科.鶴京退主天申袖魂幡旬申M傳iMo.時(shí)農(nóng)農(nóng)總國中話理fff*申皿事傳囚和SM01ATCM1 1£j|UENOXIIILNA盤龍翎W* 3»JT'LATCHEKEM)曝收芫先牢”MT電EVNTE HI )糠豊Im*nm笈氏三式中¥INTO:常辭暢謹(jǐn)nRhFXft中聖INll圖 1

10、(c)圖 1(d)3.2自由口通訊的發(fā)送子程序(見圖2)m 1SMOOT IN-VB100TmOv wEtiENO圖 2(a)pEBO圖 3(a)1卜圖 2(b)SM02*_ NEXT)VB1000* TBL-PORISHOO1 H(1MQ 1"一¥$泗mtvEaoomit劇"口,逋it*的幵隔豊切嗚AHls仍式楊收勤的mief征科vssooff 咄幀“ 無中SMO1-HtvmhM2MOV_OWEHENO製QUL_91當(dāng)強(qiáng)口 taiT'Frrirf Its wife 1 ,當(dāng)湊口1在有不町壞袴收5»GE?iI叮右知從 vBaooffgpytt丸護(hù)

11、Mid1 |gg11r* NronEnenow<mtfVdiL13.3自由口通訊的接收程序(見圖3)圖 3(b)3.4自由口通訊的開始接收中斷服務(wù)程序(見圖4)m 1卜力CPV灼開力存1曲中阿長墳紀(jì)TM1M11CO圖4自由口通訊的開始接收中斷服務(wù)程序3.5自由口通訊的接收完成中斷服務(wù)程序(見圖5)IPVCW疔宅虎中料序圖5自由口通訊的接收完成中斷服務(wù)程序3 vb中的串行口通訊組件介紹3.1 vb中串行通訊控件的引用在vb的標(biāo)準(zhǔn)工具箱中并沒有用于串行通訊的控件,在使用時(shí)需要引用,引用的方法是在vb界面中的下拉菜單中選擇 工程/部件,在出現(xiàn)的可選文件中選擇msccomm32.ocx,選擇引用

12、后在vb的標(biāo)準(zhǔn)工具箱中就會出現(xiàn)vb下的串行口通訊控件。如果無法按照上述的方法在部件中成功地引用組件,也可以使用該程序中的瀏覽功能,到windows/system 目錄下去找msccomm32.ocx,并打開該文件。3.2 vb中串行通訊控件的屬性(1)commport :該屬性用于設(shè)置 vb應(yīng)用程序所使用的串行口號,其設(shè)置值為116 ,對 應(yīng)計(jì)算機(jī)的com1com16號端口。(2) sett in gs :該屬性用于設(shè)置串行口的通訊參數(shù),其格式為“ bbbb p, d , s"其中bbb為通訊的波特率,波特率范圍為30019200 bps ; p為奇偶校驗(yàn)方式,其設(shè)置方法是e代表偶校

13、驗(yàn),o代表奇校驗(yàn),n代表無校驗(yàn);d為通訊的數(shù)據(jù)位數(shù),通常是 8位或7位;s代 表停止位,停止位的設(shè)定值有1、1.5、2。例如,setting屬性的設(shè)置為,mscomm。settings= 9600 , n, 8, 1表示通訊波特率為 9600 ,無校驗(yàn),8個(gè)數(shù)據(jù)位,1個(gè)停止位。(3) portope :在使用串行口進(jìn)行通訊前必須先打開串行口,該屬性用于串行口的打開與 關(guān)閉,其設(shè)置值為true或false,分別代表串行口的打開與關(guān)閉。(4) in put :該屬性的作用是從輸入緩沖器中將數(shù)據(jù)讀入到程序中,并清除緩沖區(qū)中已被 讀走的內(nèi)容。(5) output :該屬性的作用是從程序中寫數(shù)據(jù)到輸出緩

14、沖器中,寫入到輸出緩沖器中的內(nèi)容由串口發(fā)送出去。(6) inputlen :該屬性指定由串行口讀入的字符串長度,vb所寫的程序可以使用該屬性將存放在輸入緩沖器中讀入,但欲指定所讀入的字符的長度則可以通過該屬性來設(shè)置,默認(rèn)值是0,在默認(rèn)情況下,in put指令一次讀取所有輸入緩沖區(qū)中的數(shù)據(jù)。(7) rthrehold :該屬性用于設(shè)置當(dāng)輸入緩沖器中接收到的字符數(shù)等于該屬性的設(shè)定值時(shí),弓丨發(fā)接受事件 on -comm 事件。當(dāng) mscomm.rthreho -ld=0 時(shí)不會產(chǎn)生 on comm 事件。(8) inbuffercount :該屬性是指已接收到的并放在輸入緩沖器中等待讀取的字符的數(shù)量

15、。 在使用時(shí)可把該屬性設(shè)置為 0用來清除輸入緩沖器。(9) in putmode :該屬性用于設(shè)置由in put屬性取回的數(shù)據(jù)的形式。該屬性設(shè)置值如表3。奉3屬性設(shè)髯值則豐示誦也呻山厲忖取回宇召七武旳杖Icrolnpullh L山E inci /in-ui M t回二鉗制*;亍的訣福3.3 vb中串行通訊控件的事件(1) commevent屬性用于傳回下列所述的值之一,來表示不同的通訊錯(cuò)誤或事件,通訊錯(cuò)誤的返回值如表 4所示。表4逼訊錯(cuò)浣的透回值常敦-V說明1001搖收到一個(gè)中斷信尋此中斷信號可在傳詵端通過厲怕設(shè)衍CcrrCvniCTSlO1002CTS傳諛失敗:1003匚島傳詵失敗:I n&

16、#163; “rnFi lItt100*1-ni : H-f(Ln1006該按端口侶速wniCCIC10C?竜波線15按lS0i.'jctE1008長吹寄存器隘出rilRni;1009奇儁校驗(yàn)錯(cuò)俁二 crrE.rifl kFuH10101專手竊桿S3苗出CcrdE j-hiCCE1011端口讀捲錯(cuò)逞(2)通訊事件的返回值如表5所示。萋5逼訊亭件的逼回值IBC-rriEM JnJl1支薩竊存器中的宇訶薊比 itT-h.id設(shè)走齒小CcvtE wH eCclW2吹列RE*hokJ參朝新豬定的宇訶該爭件保持E到輸入耀沖區(qū)的:':rrf .?7&BS線的狀交發(fā)主變化4CSRfc

17、i的狀態(tài)發(fā)生變化C cn£ vCCE(T線的狀戀笈生變址CcimEyRingcD收列採轉(zhuǎn)信號C rr£ vECF7盪列故梶結(jié)柬宇釘3.4 visual basic中用于串口通訊的程序代碼(1) 在form1的代碼的公共部分定義變量:dim rcvlenthas integer定義接收數(shù)據(jù)長度的整形變量dim rcv() as byte定義接收數(shù)據(jù)的動態(tài)數(shù)組dim send(50) as byte定義發(fā)送數(shù)據(jù)的動態(tài)數(shù)組(2) 在 form1 load 的代碼中對 mscomm1 控件進(jìn)行設(shè)置:private sub form_load()rcvlenth=0mport=1 指

18、定計(jì)算機(jī)通訊的端口號mscomm1.settings = "9600,n,8,1" 設(shè)置通訊波特率及校驗(yàn)方式mscomm1.inputmode= cominputmodebinarymscomm1.rthreshold=1mscomm1.inputlen=0mscomm1.outbuffercount=0if not mscomm1.portopen then mscomm1.portopen = trueend sub(3) 在 mscomm1 的 oncomm() 事件中加入以下代碼 ,用于接收數(shù)據(jù):private sub mscomm1_on-comm()dim i as intgerdim rcvtemp() as byteredim preserve rcv (mscom-m1.inbuffercount) as byteselect case -meventcase comevreceivercvte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論