摘 要:文章設(shè)計了單片機和PLC實現(xiàn)串行通信的硬件連接和軟件變成的方法,借助于RS232轉(zhuǎn)RS485電路,將PLC與單片機開發(fā)板進行連接,上位機就是單片機,數(shù)據(jù)通過單片機傳送給PLC,從而準(zhǔn)確的控制PLC上三相異步電機的正轉(zhuǎn)和反轉(zhuǎn),PLC可以對所接收到的數(shù)據(jù)進行審核,充分的提升了所接收到數(shù)據(jù)的可靠性,之后便會將這些數(shù)據(jù)反饋給單片機,從而實現(xiàn)單片機和PLC相結(jié)合對電機的有效控制。
關(guān)鍵詞:單片機;PLC;通訊系統(tǒng)的實現(xiàn)
1 基于單片機與PLC通訊系統(tǒng)軟件的設(shè)計
1.1 通訊協(xié)議
要想實現(xiàn)基于單片機和PLC的通訊系統(tǒng),主要是借助于單片機向PLC接收數(shù)據(jù)和下達(dá)命令的功能,通訊協(xié)議則應(yīng)采用命令和響應(yīng)的模式,一幀就是一次通信發(fā)送的一組數(shù)據(jù),33個字符組成一幀,在這里應(yīng)注意以下幾點內(nèi)容:(1)起始字符應(yīng)用g表示,并且其也占用一個字符;(2)指令主要分為讀和寫兩種類型,文章所采用的為寫指令,其也占用一個字符;(3)采用十六進制的ASCII碼來表示目標(biāo)PLC的站地址,在PLC程序中應(yīng)先將其設(shè)定好,并且應(yīng)與單片機保持一致,應(yīng)占用兩個字符;(4)同樣的應(yīng)用十六進制的ASCII碼來表示目標(biāo)寄存器的地址,在PLC的內(nèi)部應(yīng)用4個字節(jié)來表示寄存器,這四個字節(jié)分別表示寄存器的類型和號碼,共占用4個字符;(5)十六進制的ASCII碼也可以表示要寫入的數(shù)據(jù),雖然它有16個字節(jié),但最多只可寫入8個字節(jié),同時應(yīng)將數(shù)據(jù)區(qū)填滿;(6)BCC校驗碼的作用為檢查傳輸?shù)臄?shù)據(jù)中是否存在錯誤,保證傳輸?shù)臏?zhǔn)確性,其占用兩個字符;(7)結(jié)束字符應(yīng)用G表示,其與起始字符一樣,占用一個字符。
在單片機接收到PLC的反饋信息后,無論是立即執(zhí)行開始命令還是結(jié)束命令,它們的字符分別為g和G,此時電動機的狀態(tài)信息就是狀態(tài)信息。文章所采用的PLC的類型為S7-200,其支持多種通訊協(xié)議,比如說點對點接口協(xié)議、多點接口協(xié)議、PROFIBUS協(xié)議以及自由通信協(xié)議等,其都是支持的,在自由口的通信模式下,S7-200的串行通訊口就會受到相應(yīng)應(yīng)用程序的控制,如果其是出于RUN的方式下,在選擇了自由口這一通信模式后,用戶的程序就會通過接收中斷和傳送中斷來接收指令和發(fā)送指令,此時就實現(xiàn)了用戶程序?qū)νㄐ趴诓僮鞯挠行Э刂啤?/p>
通過寄存器SMB130和SMB30來準(zhǔn)確的設(shè)置PLC的通信參數(shù),校驗方式、波特率以及數(shù)據(jù)位等參數(shù)都應(yīng)與單片機保持一致,其內(nèi)部的運行流程為:程序開始-設(shè)置通訊端-等待接收-按照相應(yīng)的協(xié)議處理數(shù)據(jù)-檢驗數(shù)據(jù)并進行相應(yīng)的操作。
1.2 通訊協(xié)議的實現(xiàn)
1.2.1 單片機初始化部分子程序
void init_serialcomm(void)
{SCON=0x50; /*串口工作方式1,允許接收*/
TMOD=0x20; PCON=0x00; /*SMOD=0*/
TH1=0xFD; /*波特率為9.6K*/
TL1=0xFD; IE=0x95; /*開總中斷,開串口中斷, 開外部中斷0,開外部中斷1*/
……}
單片機發(fā)送數(shù)據(jù)的子程序
void send_data() interrupt 0 using 2
{EX0=0; delay1(4) ; if(KEY==0)
{ for(j=0;j<33;j++)
{SBUF=tab[j] ; /* 將數(shù)據(jù)發(fā)送到串口*/
while(!TI) ; /* 等待串口數(shù)據(jù)發(fā)送結(jié)束*/
TI=0; /*復(fù)位串口中斷*/}}
EX0=1;}
單片機接收數(shù)據(jù)子程序
void intcom() interrupt 4 using 0 /*輸入中斷*/
{EX0=0; EX1=0;
For(i=0;i<21;++)
{If(RI); RI=0; rc[i]=SBUF;}}
1.2.2 PLC的部分通訊程序
(1)PLC的主程序部分
LD SM0.1
CALL SBR_0:SBR0 //首次掃描調(diào)用初始化程序
LDB=VB134, VB199 // 指令中的站地址與本站地址相符
AB=VB102, 6 //指令類型為寫指令
A M0.0 //BCC校驗碼正確
CALL write:SBR1 // 調(diào)用寫子程序
LD M0.1
CALL verify:SBR3 // 調(diào)用BCC 校驗碼子程序
LD SM0.0
CALL SBR_2:SBR2 //調(diào)用電動機控制子程序
LD SM4.5 //當(dāng)端口空閑時啟動RCV
RCV VB100, 0
(2)PLC的初始化程序
LD SM0.0
MOVB 9, SMB30 //自由口協(xié)議,9600bps,8個數(shù)據(jù)位,無校驗位
LD SM0.0 //RCV指令初始化
MOVB 16#EC, SMB87
MOVB 103, SMB88
MOVB 71, SMB89
MOVW +1000, SMW92
MOVB 35, SMB94
R SM87.2, 1
LD SM0.0
ATCH INT_0:INT0, 23 //接收完成事件連接到中斷程序0
LD SM0.0
ATCH INT_1:INT1, 9 //發(fā)送完成事件連接到中斷程序1
LD SM0.0
ENI
LD SM0.0
MOVB 3, VB199 //將本機站地址裝入寄存器
LD SM0.0
MOVD &VB102, VD149 //裝入地址指針
MOVB 0, VB179 //BCC碼寄存器清零
MOVD &VB156, VD181 //裝入地址指針
MOVB 0, VB180 //BCC校驗碼寄存器清
2 基于單片機與PLC通訊系統(tǒng)硬件的連接
此通訊系統(tǒng)的硬件部分主要由四部分組成,分別為三相異步電動機、S7-200PLC、STC89C52單片機和MAX485接口芯片,在單片機的開發(fā)板上同時集成了MAX485接口芯片和STC89C52單片機,并且在其上面的電平已經(jīng)被轉(zhuǎn)換成了RS232電平,因此,RS485總線與開發(fā)板就是直接相連的,之后連接PLC,控制電動機主要是依靠PLC上的輸出信號控制繼電器這一功能。
2.1 232/485電平轉(zhuǎn)換電路。由于單片機的通信口采用的為RS232,而PLC采用的則為RS485,它們的電氣規(guī)范是無法較好的相容的,那么就用有中間電路來匹配RS232轉(zhuǎn)RS485,而PLC上的PPI電纜正是這樣一種匹配電纜。在RS232接口上,發(fā)送TXD線和接收RXD線是相互獨立的,接收和發(fā)送的工作也是可以同時進行的,因此,應(yīng)將RS232設(shè)計成兩個設(shè)備之間的單獨通訊,對于兩個設(shè)備的聯(lián)接工作并不適用,因此,在它同時進行接收和發(fā)送工作時也是不會發(fā)生通訊碰撞的。RS485在其通訊過程中采用的為兩根差分的A線和B線,0和1分別代表其相對的電平,而在同一個時間段是只能由一個設(shè)備來驅(qū)動總線的。作為Maxim公司最新生產(chǎn)的一種使用RS485的接口芯片,MAX485接口芯片的工作環(huán)境為+5V的單一電源,并且其采用的為半雙工的通訊方式。
圖1為PLC與MAX485接口芯片的連接圖,其中DI腳是數(shù)據(jù)輸入引腳,RO腳是數(shù)據(jù)輸出引腳,DE腳是DI腳的使能端,在高電平時選通,而RE腳則是RO腳的使能端,在低電平時有效。A和B兩個腳同時是該芯片的輸入端和輸出端,而在具體確定MAX485接口芯片是該進行輸入還是輸出的操作時,則應(yīng)充分的考慮到DE腳和RE腳的電平情況。
通過以上的論述,對基于單片機與PLC通訊系統(tǒng)軟件的設(shè)計以及基于單片機與PLC通訊系統(tǒng)硬件的連接兩個方面的內(nèi)容進行了詳細(xì)的分析和探討。此通訊系統(tǒng)采用的是S7-200PLC和51單片機串行的方式,其采用的為差分接收和平衡驅(qū)動的RS-485的接口標(biāo)準(zhǔn),具體開發(fā)成本低并且操作簡單等特點,在其實際運行的過程中,具有較強的抗干擾能力,并且性能十分穩(wěn)定。因此,應(yīng)繼續(xù)以此系統(tǒng)為原型,將智能傳感技術(shù)和網(wǎng)絡(luò)技術(shù)應(yīng)用其中,加強其功能,從而使此系統(tǒng)得到更加廣泛的應(yīng)用。
參考文獻(xiàn)
[1]楊漢生.單片機多機通信的Proteus仿真設(shè)計[J].四川兵工學(xué)報,2010.
[2]段玉濤.虛擬PLC硬件仿真系統(tǒng)的研究與設(shè)計[J].廣東工業(yè)大學(xué),2011.
作者簡介:孫永波(1980-),身份證號:230106198012252014,本科學(xué)歷:電氣自動化專業(yè),2000年至2014年4月在百威英博哈爾濱啤酒有限公司歷任自動化技術(shù)員,工程師、生產(chǎn)維護主管工作,有較豐富的電氣自動化系統(tǒng)設(shè)計及維護經(jīng)驗。