【玩轉(zhuǎn)485】10.如何判斷站地址【連載10】
林慧玲
發(fā)布于2015-02-15 09:45
2020
0
標(biāo)簽:通訊
1 站地址概念
RS485通訊網(wǎng)絡(luò)是一個總線形式的網(wǎng)絡(luò),那么網(wǎng)絡(luò)中的主站是如何區(qū)別各個站點的呢?要知道在這個網(wǎng)絡(luò)中,主站發(fā)出的數(shù)據(jù)網(wǎng)絡(luò)中的每個從站都是可以接收到的(因為主站發(fā)出的高低電平是施加在整個網(wǎng)絡(luò)上的),就像班主任講話全班同學(xué)都可以聽到一樣,那么班里的同學(xué)是怎么知道班主任是叫自己呢?很明顯每個人都有名字,班主任只要在發(fā)出的指令里加上他想指揮的同學(xué)的名字就可以了。同理RS485網(wǎng)絡(luò)里每個從站也有自己的名字,那就是站地址,主站只要在發(fā)出的報文里加上站地址信息,那么對應(yīng)的從站就會執(zhí)行這條報文。下面我們一起看看如何在程序中完成這個過程。
圖1-1
這里我們還是用PLC做從站電腦做主站,我們定義報文的個字符作為站地址,如果我們的從站的站地址是02,那么主站發(fā)出的報文如果個字符是02那么就認(rèn)為這條報文是發(fā)給該從站的,從站給主站返回數(shù)據(jù),如果主站發(fā)出的報文個字符不是02那么就認(rèn)為該條報文是發(fā)給別的站點的,從站繼續(xù)進入接收等待狀態(tài),等待下一條報文。
2 程序的編寫 圖 2?1
圖 2-1所示是主程序內(nèi)容,看過上一篇文章的朋友肯定會發(fā)現(xiàn)這和數(shù)據(jù)收發(fā)那一節(jié)程序的內(nèi)容是一模一樣的,我們這個程序大家主要是要看接收完成中斷的程序我是怎么寫的。
圖 2-2
圖 2-2是接收完成中斷,這里我們使用字節(jié)判斷指令判斷接收到的報文是否是發(fā)給本站點的,2表示本站點站地址是2如果寫3的話表示本站點站地址是3。如果沒有接收到站地址則繼續(xù)等待接收。
圖 2-3
圖 2-3所示為發(fā)送完成中斷,發(fā)送完成后進入等待接收報文狀態(tài)。
我們可以先在發(fā)送緩沖區(qū)將數(shù)據(jù)準(zhǔn)備好,當(dāng)主站發(fā)出的報文中的站地址和本站吻合,我們將發(fā)送緩沖區(qū)的數(shù)據(jù)返回給主站,如圖 2-4所示。
圖 2-4
作者:馬樂版權(quán)為技成所有,未經(jīng)同意,盜取必究!