作者:馬樂 1.主站發(fā)送報(bào)文結(jié)構(gòu) 大家可以看到我之前寫的文章中的程序都是沒有什么具體功能的,,都是兩個(gè)站點(diǎn)之間互相傳遞數(shù)據(jù),這些數(shù)據(jù)我們只是看看是否可以正常接收發(fā)送,,數(shù)據(jù)本身是沒有任何含義的,。很明顯在實(shí)際使用過程中我們是不會(huì)這樣去用的,對(duì)于通訊來說主站發(fā)送的數(shù)據(jù)通常只有兩個(gè)功能,,一是讀取從站寄存器中地址的狀態(tài)也就是從從站讀取數(shù)據(jù),,二是向從站寫入數(shù)據(jù),。那么主站要怎么發(fā)送數(shù)據(jù)從站才能知道,主站是要讀數(shù)據(jù)還是寫數(shù)據(jù)呢,?這個(gè)就要靠功能碼來區(qū)分了,, 圖 1-1 圖 1-1所示就是我自己定義的主站向從站發(fā)送讀取從站數(shù)據(jù)請(qǐng)求的報(bào)文結(jié)構(gòu),說白了就是我自己定義的一個(gè)協(xié)議,,大家可以叫它馬樂協(xié)議(^_^),。下面我們一起來看看此報(bào)文中四段內(nèi)容的具體含義。 地址:指的是要讀取哪個(gè)從站的數(shù)據(jù),。 起始地址:讀取數(shù)據(jù)區(qū)域的起始地址。 讀取數(shù)量:讀取多少數(shù)據(jù),。 2.從站返回報(bào)文結(jié) 既然是主站向從站讀取數(shù)據(jù),,那么從站接收到指令后肯定要把主站所需要的信息返回給主站,因此從站向主站返回?cái)?shù)據(jù)也必然有一個(gè)報(bào)文格式,,下面我們一起來看看,,我自定義的馬樂協(xié)議的從站返回給主站數(shù)據(jù)的報(bào)文結(jié)構(gòu)。 圖2?1 地址:返回?cái)?shù)據(jù)的從站的地址,,讓主站知道這是哪個(gè)從站返回來的數(shù)據(jù),。 返回字節(jié)數(shù)量:一共給主站返回多少個(gè)字節(jié)的數(shù)據(jù),,如果此處為6那么此字節(jié)后面是6個(gè)字節(jié)的數(shù)據(jù)。 返回?cái)?shù)據(jù)1~n:從站返回給主站的數(shù)據(jù),,返回?cái)?shù)據(jù)數(shù)量n是由主站讀取數(shù)量所決定的,。 以上我通過一個(gè)我自己定義的協(xié)議,向大家介紹了RS485通訊中主站是如何讀取從站數(shù)據(jù)的過程,,當(dāng)然大家如果有興趣自己也可以定義個(gè)張三協(xié)議,、李四協(xié)議自己玩玩,下篇文章我就教大家如何將我上面的自定義協(xié)議,,變成PLC的程序,。 |
|