摘要:可編程控制器(PLC)因為其強(qiáng)大的功能和極高的性價比,現(xiàn)已廣泛應(yīng)用于各行各業(yè),其應(yīng)用范圍也不斷擴(kuò)大。本文將闡述在某車載天線工程中可編程控制器與計算機(jī)串口通訊的一種實現(xiàn)方法。
關(guān)鍵詞:可編程控制器;串口通訊
中圖分類號:TP273.5 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599(2012)24-0180-02
1 引言
可編程控制器(Programmable Controller),為了和個人計算機(jī)(Personal Computer)的簡稱PC相區(qū)別,一般將它簡稱為PLC(Programmable Logic Computer)??删幊炭刂破鞯漠a(chǎn)生和發(fā)展與繼電器控制系統(tǒng)有很大關(guān)系。在復(fù)雜的繼電器控制系統(tǒng)中,故障的查找和排除需要花費(fèi)大量的時間,嚴(yán)重影響生產(chǎn)??删幊炭刂破饕驗楦涌煽?、更容易維修和低成本、高質(zhì)量,已取代了老式繼電器系統(tǒng)。隨著可編程控制器技術(shù)的發(fā)展,可編程控制器已可以實現(xiàn)多臺可編程控制器之間的通訊、可編程控制器和其他智能控制設(shè)備(如計算機(jī)、變頻器)之間的通訊。在某車載天線工程中,經(jīng)過反復(fù)研究,實現(xiàn)了一種PLC與計算機(jī)串口通訊的方法。
2 實現(xiàn)方法
為了實現(xiàn)計算機(jī)與PLC的通訊,首先進(jìn)行硬件和軟件方面的準(zhǔn)備工作。我們選用西門子S7-226 PLC和MOXA CP-114串口卡。由于226的串口為RS-485接口,我們在CP-114的跳線器上置相應(yīng)的位,將串口設(shè)置為RS-485接口,然后根據(jù)RS-485接口定義制作出相應(yīng)的電纜。就通訊協(xié)議做以下的約定:數(shù)據(jù)傳輸率為19200bps,8位數(shù)據(jù)位,無校驗位,1位停止位,起始位為“{”,停止位為“}”,具體的數(shù)據(jù)字節(jié)含義另行規(guī)定。
226的串口通訊接口可以由用戶程序控制,這種操作模式稱為自由端口模式。在這種模式下可以使用接收完成中斷、發(fā)送完成中斷、發(fā)送指令和接收指令來控制通訊過程。本文采用這種模式。
通過置一些特殊存儲器的位,可以設(shè)置具體的通訊參數(shù)和查詢一些狀態(tài)返回標(biāo)志。下面簡要介紹一些特殊的存儲器。(注:這里只列出一些常用的參數(shù),詳細(xì)數(shù)據(jù)請參看用戶手冊)。
以下的特殊存儲器和通訊參數(shù)設(shè)置有關(guān):
端口0描述
SMB30自由端口模式的控制字節(jié)
第7、6位00:不校驗 01:偶校驗 10:不校驗 11:奇校驗
第5位0:8位字符 1:7位字符
第4、3、2位001:波特率19200 010:波特率9600
第1、0位01:自由端口 10:PPI/主從模式
表1
端口0描述
SMB86第6位為1時:收到結(jié)束字符
SMB87第6位為1時:使用SMB88的值檢測報文的開始
第5位為1時:使用SMB89的值檢測報文的結(jié)束
SMB88報文的開始
SMB89報文的結(jié)束
SMB92
SMB93字符間/報文間定時器超時值,如果超時接收報文,
SMB92為高字節(jié),SMB93為低字節(jié)
SMB94接收的最大字符數(shù)(1~255字節(jié))
表2
以下的特殊存儲器和程序初始化設(shè)置有關(guān):
特殊存儲器描述
SM0SM0.0:始終為1
SM0.1:首次掃描時為1,可用于調(diào)用初始化子程序
……
SM0.7:此位指示工作方式開關(guān)的位置,0為TERM位置,1為RUN位置。開關(guān)在RUN位置時,此位可使自由端口通訊模式有效,轉(zhuǎn)換至TERM位置時,可與編程設(shè)備正常通訊
表3
發(fā)送指令XMT啟動自由端口下數(shù)據(jù)緩沖區(qū)(TBL)的數(shù)據(jù)發(fā)送,指令格式如圖1.a所示。通過指定的通訊端口(PORT),發(fā)送存儲在數(shù)據(jù)緩沖區(qū)(TBL)中的信息。XMT指令可以方便的發(fā)送1~255個字符,如果有中斷程序連接到發(fā)送結(jié)束事件上,在發(fā)送完緩沖區(qū)中的最后一個字符時,端口0會產(chǎn)生中斷事件9。TBL指定的發(fā)送緩沖區(qū)的格式如圖1.b所示,起始字符和結(jié)束字符是可選項,第一個字節(jié)“字符數(shù)”是要發(fā)送的字節(jié)數(shù),它本身并不發(fā)送出去。
圖1
接收指令RCV初始化或終止接收信息的服務(wù),指令
(下轉(zhuǎn)第196頁)