PLC在自由口通訊中實(shí)現(xiàn)多地址指針接收數(shù)據(jù)的方法
1 引言
本文引用地址:http://butianyuan.cn/article/157959.htm西門子S7-200PLC由于其體積小,可靠性高,通訊功能強(qiáng)大等特點(diǎn),在工業(yè)控制領(lǐng)域得到廣泛的應(yīng)用,使用S7-200PLC高性價(jià)比的自由口通訊協(xié)議實(shí)現(xiàn)人機(jī)界面靈活方便。目前S7-200PLC接收計(jì)算機(jī)指令數(shù)據(jù)主要有兩種方法:第一種方法是使用PLC自帶的RCV指令來接收計(jì)算機(jī)數(shù)據(jù);第二種方法采用PLC提供的“接收字符中斷”方式,將SMB2(自由口接收字符緩沖區(qū))定義指針,使用指針接收數(shù)據(jù)。
使用“RCV指令接收數(shù)據(jù)的方法雖然簡單,但在接收大量數(shù)據(jù)的時(shí)候每次都要依次接收,大大降低了數(shù)據(jù)傳輸效率。在本實(shí)驗(yàn)室的一套機(jī)電一體化控制系統(tǒng)中,人機(jī)界面設(shè)計(jì)要求是:界面可以向PLC寫入QB0、QB1、QB2、傳感器采樣周期、一個(gè)判斷指令、AQ0、AQ1等不同指令數(shù)據(jù)。若一次上位機(jī)寫指令僅僅是控制QB0.3的啟動,為了寫入QB0則需要將9 B的數(shù)據(jù)全部發(fā)送,由于PLC內(nèi)接收數(shù)據(jù)是用“RCV”指令,必須將9 B的數(shù)據(jù)依次存儲,這樣會造成數(shù)據(jù)傳輸線路中的時(shí)間過長產(chǎn)生延時(shí),降低數(shù)據(jù)傳輸?shù)男?,甚至?dǎo)致誤碼出現(xiàn),顯然這種使用“RCV”接收大量數(shù)據(jù)的方法不太適合。
使用PLC提供的“接收字符中斷”方式,將SMB2(自由口接收字符緩沖區(qū))定義指針,使用指針接收數(shù)據(jù)。此方法若僅僅定義一個(gè)指針,其效果和“RCV”指令是一樣的。但此方法由于其使用起來比較靈活,故本文設(shè)計(jì)了一種多地址指針接收數(shù)據(jù)的方法,即在計(jì)算機(jī)向PLC寫入數(shù)據(jù)時(shí),僅寫入指針判別的代號和對應(yīng)數(shù)據(jù)就可完成上位機(jī)對下位機(jī)的寫指令,不同的代號對應(yīng)不同的地址,與以往使用“RCV”指令相比,有效地減少了寫指令的數(shù)據(jù),提高了通訊效率。本文在設(shè)計(jì)PLC與上位機(jī)的串口通訊中設(shè)計(jì)了此種方案,尚未見其他同類文章使用。
2 指針判別
在PLC與計(jì)算機(jī)的自由口通訊中,為消除“RCV”或單指針接收計(jì)算機(jī)數(shù)據(jù)帶來的大數(shù)據(jù)流,本文在計(jì)算機(jī)每次向PLC發(fā)送指令時(shí),第一個(gè)字節(jié)總是模式的代號,從第二個(gè)字節(jié)開始才是指令數(shù)據(jù)的內(nèi)容。在PLC接收數(shù)據(jù)時(shí),第一個(gè)數(shù)據(jù)進(jìn)入“自由口接收字符緩沖區(qū)”SMB2時(shí),PLC通過“選擇指針”最先接收的是指針判別的代號,通過接收代號的數(shù)值比較來判斷該指令數(shù)據(jù)對應(yīng)的是哪種數(shù)據(jù),判斷完成后定義一個(gè)地址指針接收并存儲這種數(shù)據(jù)的內(nèi)容。不同的指針判別代號對應(yīng)不同的地址指針,因此計(jì)算機(jī)每次寫入PLC指令時(shí)發(fā)送的指令數(shù)據(jù)都是由兩部分構(gòu)成:第一部分為指針判別代號,第二部分為指令數(shù)據(jù)的內(nèi)容。指針判別過程是PLC內(nèi)接收到判別代號后進(jìn)行數(shù)值比較。指針判別的意義就是通過一個(gè)總指針接收模式代號,用不同模式代號再定義多個(gè)指針完成不同種類的指令數(shù)據(jù)的接收與存儲。
3 具體應(yīng)用方案
在設(shè)計(jì)本實(shí)驗(yàn)室的一套電液伺服控制系統(tǒng)中,上位機(jī)的人機(jī)界面使用VB 6.0編程,下位機(jī)的通訊模式為自由口通訊。人機(jī)界面設(shè)計(jì)要求:界面可以向PLC寫入QB0、QB1、QB2、傳感器采樣周期、AQW0、AQW2等不同指令數(shù)據(jù),PLC在定時(shí)中斷內(nèi)使用XMT指令周期地向上位機(jī)發(fā)送變量存儲器VB1~VB21中的待監(jiān)視數(shù)據(jù)(包含PLC中的數(shù)字量與模擬量)。由于在設(shè)計(jì)中上位機(jī)寫入PLC指令數(shù)據(jù)種類較多,其中包括定時(shí)中斷的時(shí)間設(shè)置、狀態(tài)位值的寫入、模擬量擴(kuò)展模塊的輸出等,故本文的模式選擇可以將種類不同的指令數(shù)據(jù)用多個(gè)指針接收并存儲。表1是本設(shè)計(jì)PLC程序的部分地址分配表,以便結(jié)合PLC程序來說明多地址指針方案的具體實(shí)現(xiàn)方法。
評論