原創(chuàng) 2017-08-26 旺火 技成培訓(xùn)
旺火科技『技成培訓(xùn)』關(guān)注中國領(lǐng)先制造業(yè)在線教育品牌
工控人最多最專業(yè)最集中的微信平臺(tái):深圳市旺火科技有限公司、伺服液總會(huì)
1、 報(bào)文
在開始具體講解PLC如何接收數(shù)據(jù)之前,旺火首先要向大家介紹報(bào)文這個(gè)概念,所謂報(bào)文就是一段完整的信息,為報(bào)文的一種格式。
在通訊的過程中無論是發(fā)送還是接收都是一個(gè)報(bào)文一個(gè)報(bào)文為單位的進(jìn)行的,發(fā)送之所以簡(jiǎn)單就是因?yàn)橥鹬灰獙?zhǔn)備在發(fā)送緩沖區(qū)的數(shù)據(jù)一次性
的全部發(fā)送出去就好,一次發(fā)送一個(gè)報(bào)文,而接收就不同了,旺火要判斷一個(gè)報(bào)文的起始與結(jié)束,還要判斷接收到的這個(gè)報(bào)文是否在傳輸?shù)倪^程中因?yàn)楦蓴_等原因產(chǎn)生錯(cuò)誤。
2、單個(gè)報(bào)文的判斷方法
如何判斷一段報(bào)文的起始與結(jié)束呢?旺火常用的有兩種方法。
第一通過給報(bào)文設(shè)定固定的起始字符和結(jié)束字符,只要接收到起始字符既是一段報(bào)文的開始,只要收到結(jié)束字符既是一段報(bào)文的結(jié)束。
第二通過空閑時(shí)間判斷,超過空閑時(shí)間沒有接收到數(shù)據(jù),旺火就認(rèn)為是一段報(bào)文已經(jīng)結(jié)束,之后接收的數(shù)據(jù)就算新的報(bào)文。
那么本文旺火還是先給大家講解如何通過起始字符和結(jié)束字符來接收數(shù)據(jù)。
3、通過字符判斷
在編寫程序之前旺火首先要明確旺火使用的特殊位寄存器的狀態(tài),下面旺火逐個(gè)按要求進(jìn)行設(shè)置,這里要注意旺火統(tǒng)一使用S7-200CPU的端口0。
1) 自由口模式。第0、1位
2) 通訊速率9600bps。第2、3、4位
3) 每個(gè)字符的數(shù)據(jù)位是8位。第5位
4) 不選用奇偶效驗(yàn)。第6、7位
1) 不使用中斷條件作為檢測(cè)信息的開始。第1位。
2) 不使用空閑時(shí)間方式檢測(cè)報(bào)文的開始結(jié)束。第2、3、4位。
3)使用結(jié)束字符檢測(cè)報(bào)文的結(jié)束。第5位。
4) 使用起始字符檢測(cè)報(bào)文的開始。第6位。
5)允許信息接收功能。第7位。
注:第0位為無效位不使用。
用16進(jìn)制AA作為報(bào)文的起始字符,只要PLC接收到字符AA說明一段報(bào)文的開始。
用16進(jìn)制BB作為報(bào)文的結(jié)束字符,只要PLC接收到字符BB說明報(bào)文接收完畢停止接收。
定義接收緩沖區(qū)大小,此處定義為最大255字節(jié)。(注:接收緩沖區(qū)是用來存放接收到的數(shù)據(jù)的區(qū)域,最大255字節(jié),大家可以根據(jù)通訊情況自由定義。)
4、程序編寫
開始程序編寫之前讓旺火首先了解一下接收指令的使用。
RCV接收指令有兩個(gè)管腳,TBL和PORT。
PORT:通訊端口編號(hào),如果用0端口則寫0,如果用1端口則寫1.
TBL:定義接收緩沖區(qū)的起始地址,如果TBL中寫VB100,同時(shí)接收的數(shù)據(jù)是兩個(gè)字節(jié),則VB100中的數(shù)值為2,同時(shí)VB101和VB102用來存放接收到的數(shù)據(jù)。
下面旺火來看程序的具體寫法。
5、接收測(cè)試
程序旺火就編寫完成了,主要是對(duì)特殊位寄存的設(shè)定,另外增加一個(gè)接收指令用于接收數(shù)據(jù)就好,下面旺火用PLC接收幾組發(fā)自電腦的數(shù)據(jù),來具體了解通過起始、結(jié)束字符判 斷報(bào)文的方式來接收數(shù)據(jù)的使用方法。
1) 接收測(cè)試1
首先旺火使用串口調(diào)試軟件發(fā)送一段報(bào)文16進(jìn)制的aa 11 22 ff 23 bb一共6個(gè)字節(jié)。根據(jù)旺火上面的講解,此段報(bào)文中aa是報(bào)文的起始字符,表示報(bào)文的開始bb是報(bào)文的結(jié)束 字符,表示該段報(bào)文的結(jié)束,起始字符和結(jié)束字符之間是要發(fā)送給PLC的數(shù)據(jù)內(nèi)容,當(dāng)然現(xiàn)在旺火發(fā)送的數(shù)據(jù)是沒有任何含義的,所示。
所示是Step7 MicroWin的狀態(tài)表監(jiān)控到的數(shù)據(jù),因?yàn)橥鹪O(shè)定的起始地址是VB100一共發(fā)送了6個(gè)字節(jié)的數(shù)據(jù),所以數(shù)據(jù)的存放是從VB101到VB106中。這里可能有人要問那VB100 中應(yīng)該是6啊為什么是0呢?這個(gè)主要是因?yàn)樵诮邮罩噶頡CV之前我使用的SM0.0因此當(dāng)一次數(shù)據(jù)接收完成后,就重新進(jìn)入接收狀態(tài),這時(shí)會(huì)將Vb100中的數(shù)值清空,所以VB100始 終是0。
2) 接收測(cè)試2
上面旺火已經(jīng)成功使用S7-200PLC接收到了電腦發(fā)送的數(shù)據(jù)現(xiàn)在旺火用電腦發(fā)送一組沒有起始字符的報(bào)文看看會(huì)出現(xiàn)什么情況,此次旺火發(fā)送數(shù)據(jù)dd 11 22 ff 23 bb如圖5?3中 內(nèi)容所示。
通過旺火可以發(fā)現(xiàn)PLC沒有接收到任何數(shù)據(jù),原因就是PLC沒有檢測(cè)到起始字符
3) 接收測(cè)試3
本次旺火發(fā)送給PLC的數(shù)據(jù)既有起始字符,也有結(jié)束字符,只是在結(jié)束字符后旺火再增加2個(gè)字節(jié)的數(shù)據(jù),看看會(huì)出現(xiàn)什么情況,這次旺火發(fā)送aa 11 22 bb 23 45。
旺火可以發(fā)現(xiàn)電腦發(fā)送的數(shù)據(jù)PLC只能接收到aa 11 22 bb,而23 45這兩個(gè)字節(jié)由于出現(xiàn)在報(bào)文的結(jié)束字符之后PLC就無法識(shí)別了。
分享朋友圈一起學(xué)習(xí)!
回復(fù)以下關(guān)鍵詞獲取相關(guān)文章
玩轉(zhuǎn)485 接近開關(guān) 萬用表 電工 電纜選型
免費(fèi)上課 PLC 視頻試看 變頻器 控制 電工口訣
點(diǎn)“www.k32255.com”查看更多精彩內(nèi)容