張新軍,崔艷艷
(河南省濟源職業(yè)技術(shù)學(xué)院電氣工程系,河南濟源454650)
西門子PLC與上位機自由口通訊的設(shè)計
張新軍,崔艷艷
(河南省濟源職業(yè)技術(shù)學(xué)院電氣工程系,河南濟源454650)
介紹了西門子S7-200系列PLC在串行通訊技術(shù)中使用自由口數(shù)據(jù)傳輸?shù)闹噶罡袷揭约癙LC與上位機通訊的軟硬件實現(xiàn)方法。
PLC;PC;自由口通訊
可編程控制器PLC(Programmable Logic Controller)具有可靠性高、I/O接口模塊豐富、模塊化結(jié)構(gòu)等特點,被廣泛應(yīng)用于各種工業(yè)環(huán)境中。西門子S7-200系列PLC在國內(nèi)廣泛采用,在其內(nèi)部有一個特殊功能寄存器SMB30(端口0)和SMB130(端口1),PLC可以根據(jù)其中的內(nèi)容,按照一定的協(xié)議實現(xiàn)與計算機間的通訊。
在現(xiàn)代的工業(yè)控制現(xiàn)場,工控機作為上位機對現(xiàn)場進行實時監(jiān)控,完成可視化人機操作界面、圖形顯示、數(shù)據(jù)庫、通訊及聯(lián)網(wǎng)等。而下位機PLC則循環(huán)地讀入設(shè)備信號,并進行邏輯判斷操作、輸出控制信號、控制設(shè)備運行。本研究中用PLC讀取現(xiàn)場的數(shù)據(jù)值,并將數(shù)據(jù)用自由口通訊方式送給上位機。
西門子S7-200型PLC具有較高的性能價格比,它帶有兩個RS485通訊口,而上位機的串行口是RS232,所以可采用西門子公司專用的PC/PPI編程電纜作為上下位機的連接電纜,負(fù)責(zé)RS485和RS232的轉(zhuǎn)換,并具有隔離抗干擾的功能。硬件構(gòu)成如圖1所示[1]。
自由口通訊是建立在RS-485硬件基礎(chǔ)上的一種通訊方式,用戶可以自己定義一些簡單、基本的通訊協(xié)議,如數(shù)據(jù)長度,奇偶校驗等,實現(xiàn)比較復(fù)雜的通訊功能,以適應(yīng)各種通訊協(xié)議。自由口通信方式是S7-200 PLC的一個很有特色的功能,它使S7-200 PLC可以與任何通信協(xié)議公開的設(shè)備、控制器進行通信。
自由口模式下,PLC主機處于RUN方式時,用戶可以用接收中斷、發(fā)送中斷和相關(guān)的通信指令來編寫程序控制通信口的運行;當(dāng)主機處于STOP方式時,自由口通信被終止,通信口自動切換到正常的PPI協(xié)議運行[2]。
PLC的自由口模式通信編程首先對串口初始化,通過對特殊存儲字節(jié)SMB30(端口0)寫入通信控制字,來設(shè)置通信的波特率、奇偶校驗、停止位和數(shù)據(jù)位數(shù),這些設(shè)定必須與上位機設(shè)定值相一致。
3.2.1 發(fā)送數(shù)據(jù)
PLC在接到上位機指令后,可以用XMT指令發(fā)送數(shù)據(jù),發(fā)送一個21字節(jié)長反饋信息(在本例中為21字節(jié),也可改變),數(shù)據(jù)格式見表1。狀態(tài)信息字節(jié)包含指令執(zhí)行的狀態(tài)信息,其中,起始字符標(biāo)志著反饋信息的開始狀態(tài)信息,如定義為ASCII碼的“g”;狀態(tài)信息字節(jié)包含指令執(zhí)行的狀態(tài)信息,如用01H代表讀取正確、02H代表寫入正確、03H代表BCC碼校驗錯誤、04H代表指令不合法;數(shù)據(jù)區(qū)為讀指令所要讀取的數(shù)據(jù),以十六進制ASCII碼表示;BCC校驗碼是反饋信息數(shù)據(jù)的異或和;結(jié)束字符標(biāo)志著反饋信息的結(jié)束,如定義為ASCII碼的“G”。
圖1 硬件構(gòu)成
表1 反饋信息格式
3.2.2 接受數(shù)據(jù)
PLC在第一次掃描時執(zhí)行初始化子程序,對端口及RCV指令進行初始化。初始化完成后,運行RCV指令使端口處于接收狀態(tài)。接收的數(shù)據(jù)放到接收緩沖區(qū),本例的RCV緩沖區(qū)的格式如表2。其中,指令類型表示上位機讓PLC執(zhí)行什么操作,如讀或?qū)?;目?biāo)站號是分配給PLC的一個代號;目標(biāo)寄存器地址是PLC要進行讀寫的存儲區(qū)的地址;讀寫字節(jié)數(shù)是PLC接到命令后,對存儲區(qū)進行讀寫的字節(jié)數(shù);寫入數(shù)據(jù)是上位機要寫入PLC的數(shù)據(jù)。從目標(biāo)站號到BCC校驗碼這幾項內(nèi)容,都是把16進制數(shù)編碼為ASIIC碼來表示的;在接收到結(jié)束字符時,會產(chǎn)生一個中斷(對端口0為中斷事件23)[2-3]。
表2 接收緩沖區(qū)
本系統(tǒng)中用上位機PC作主機,向PLC發(fā)送讀/寫指令,PLC接收到信息后判斷傳輸正確與否,若錯誤則反饋BCC碼錯誤信息給上位機。上位機通過RS232口與PLC進行通信,在上位機中利用VB編程軟件的Mscomm控件,對控件進行簡單的設(shè)置就可以實現(xiàn)PLC與PC機之間的串行通信。上位機的通訊程序流程圖如圖2所示。
圖2 上位機通訊流程圖
S7-200 CPU通訊端口是RS485半雙工通訊口,因此發(fā)送和接收指令不能同時進行。CPU使用XMT/RCV指令向指定通訊口以字節(jié)為單位發(fā)送/接收一串?dāng)?shù)據(jù)字符,要發(fā)送的字符以數(shù)據(jù)緩沖區(qū)指定,一次發(fā)送的字符最多為255個,指令執(zhí)行完成后,會產(chǎn)生一個中斷事件(發(fā)送指令Port0為中斷事件9,接收指令Port0為中斷事件23)。PLC在第一次掃描時執(zhí)行初始化子程序,對端口及RCV指令進行初始化。初始化完成后,運行RCV指令使端口處于接收狀態(tài),接收完后啟用中斷,中斷程序?qū)χ噶钸M行譯碼,同時給校驗子程序入口寄存器置位,發(fā)送接收標(biāo)志位復(fù)位,并將寫入接收數(shù)據(jù)地址指針。計算接收數(shù)據(jù)的BCC碼,若正確且結(jié)束字符為設(shè)定值時則給BCC碼正確標(biāo)志位置位;若標(biāo)志位為“寫”,則調(diào)用“寫”子程序,向PLC寄存器中寫入控制值,進而控制現(xiàn)場的設(shè)備運行;若為“讀”,則調(diào)用“讀”子程序,則從PLC的數(shù)據(jù)緩沖器中讀取數(shù)據(jù)值;如果BCC碼不正確,則直接向上位機發(fā)送BCC校驗碼錯誤的信息;如BCC碼正確而結(jié)束字符不等于設(shè)定值,則向上位機發(fā)送指令不合法的信息[4]。PLC的通訊程序流程圖如圖3所示。
圖3 PLC通訊程序流程圖
本文采用自由口通訊協(xié)議實現(xiàn)了PLC和上位機的數(shù)據(jù)交換,同時可以方便地開發(fā)出PC機和PLC通信應(yīng)用軟件,這種方法節(jié)省投資,對小規(guī)模的系統(tǒng)具有現(xiàn)實意義。系統(tǒng)具有實時性好、速度快、可靠性高、操作方便等優(yōu)點,達到了預(yù)期的效果。經(jīng)應(yīng)用于某企業(yè)的溫度采集系統(tǒng),完全符合企業(yè)要求。
[1]孫平.可編程序控制器原理及應(yīng)用[M].北京:高等教育出版社,2003.
[2]韓寶彬.PC與PLC在自由口模式下的串行通信[J].2003.
[3]西門子公司.S7-200可編程控制器系統(tǒng)手冊(第四版)[M]. 2005.
[4]http://www.gkong.com/中華工控網(wǎng)[EB/OL].2010-11-25.
責(zé)任編輯 王榮輝
An Approach to the Implementation of Freeport Communication between PC and SIMATIC PLC
ZHANG Xinjun,CUI Yanyan
(Electrical and Engineering Department,Jiyuan Vocational and Technical College,Jiyuan HeNan,454650 China)
This paper presents an approach to the implementation of freeport communication between PC and SIMATIC PLC.In this approach,Freeport communication is used and the SIEMENS S7-200 communication board is connected to the PC.This paper describes the format of these instructions in detail,in which the realization method about software and hardware are also introduced.
PLC;PC;freeport communication
TP39
A
1674-5787(2011)01-0162-03
2010-12-28
張新軍(1976—),男,碩士,講師,從事教學(xué)工作;崔艷艷(1975—),女,碩士,講師,從事教學(xué)工作。