西門子S7-200 SMART除了支持以太網(wǎng)通信,還可以通過CPU上或信號(hào)板上的RS485接口實(shí)現(xiàn)串口通信。支持的串口協(xié)議,包括自由口協(xié)議、USS協(xié)議、MODBUS協(xié)議和PPI協(xié)議。STEP7 Micro/WIN SMART編程軟件安裝時(shí)自動(dòng)集成串口通信所需要的功能塊和子程序。 串口通信所需的功能塊和子程序 自由口通信有以下特點(diǎn):RS485為半雙工接口,發(fā)送和接收不可同時(shí)進(jìn)行;支持1.2K到115.2K通信速率;支持一個(gè)起始位,7到8個(gè)數(shù)據(jù)位,一個(gè)停止位;可以設(shè)置一個(gè)校驗(yàn)位;通訊功能完全由用戶程序控制,通訊協(xié)議完全由用戶編寫;自由口通信時(shí)發(fā)送和接收是以字節(jié)為單位進(jìn)行的。 自由口通信的特點(diǎn) 自由口通信的組態(tài)步驟分為三步。設(shè)置端口,自由口通信的基本參數(shù)是通過系統(tǒng)存儲(chǔ)器來設(shè)置的,端口0和端口1分別通過SMB30和SMB130設(shè)置自由口通信的校驗(yàn)位、數(shù)據(jù)位、波特率和協(xié)議等。下面以端口0的設(shè)置為例,說明其參數(shù)設(shè)置。SMB30的八位數(shù)據(jù)中,最低兩位表示協(xié)議選擇,01表示自由口協(xié)議。第2到第4位三位表示波特率,010表示波特率為9600。第5位表示數(shù)據(jù)位,0表示八位數(shù)據(jù)。第6和第7位表示校驗(yàn)位,10表示無校驗(yàn)。 設(shè)置端口參數(shù) 使用發(fā)送指令XMT,發(fā)送指令用于對(duì)單個(gè)字符或多個(gè)字符緩沖區(qū)執(zhí)行發(fā)送操作。發(fā)送指令的TBL參數(shù)指定發(fā)送緩沖區(qū),其格式如圖所示,其中首字節(jié)指明要發(fā)送的字節(jié),后續(xù)字節(jié)為要發(fā)送的字符,最多為255個(gè)字符。如果連接中斷子程序到發(fā)送完成事件,CPU將在發(fā)送完緩沖區(qū)內(nèi)的最后一個(gè)字符生成一個(gè)中斷,端口0為中斷事件9,端口1為中斷事件26,也可以不使用中斷,而通過監(jiān)視SM4.5或SM4.6用信號(hào)表示發(fā)送完成,例如向打印機(jī)發(fā)送消息等。 使用發(fā)送指令 使用接收指令RCV,接收指令用于從單個(gè)字符或多個(gè)字符緩沖區(qū)接收數(shù)據(jù),接收指令的TBL參數(shù)指定接收緩沖區(qū),其格式如圖所示,其中首字節(jié)指明接收到的字節(jié)數(shù),接著為起始字符,中間為數(shù)據(jù)和結(jié)束字符。如果連接中斷子程序到接收完成時(shí)間,CPU將在接收完最后一個(gè)字符后生成中斷,端口0,為中斷事件23,端口1為中斷事件24,也可以不使用中斷,而通過監(jiān)視SMB86或SMB186來來接收消息。 使用接收指令 自由口通信接收數(shù)據(jù)流程如圖所示,接收指令允許選擇消息開始和結(jié)束條件。對(duì)于端口0使用SMB86到SMB94,對(duì)于端口1使用SMB186到SMB194接收指令,支持多種消息開始條件和結(jié)束條件。我們將通過一個(gè)簡(jiǎn)單的應(yīng)用實(shí)例演示自由口通信的組態(tài)方法,通過串口通信信號(hào)板與windows操作系統(tǒng)的集成軟件超級(jí)終端通信,使用自由口協(xié)議發(fā)送和接收數(shù)據(jù),具體內(nèi)容在下篇文章中進(jìn)行介紹。 自由口通信接收數(shù)據(jù)流程圖 接下來我們來編寫西門子S7-200 SMART自由口通信的發(fā)送程序,并使用超級(jí)終端進(jìn)行發(fā)送功能測(cè)試。首先設(shè)置參數(shù),打開STEP7 Micro/WIN SMART編程軟件,右鍵單擊項(xiàng)目樹中的CPU,選擇打開,在打開的系統(tǒng)塊中選擇CPU類型和信號(hào)板類型。設(shè)置信號(hào)板,串口的類型為RS232,地址為2,波特率為9600。 設(shè)置串口參數(shù) 接下來編寫發(fā)送程序,從指令樹中選擇常開觸點(diǎn),拖放到編程區(qū)域程序段1中,輸入地址SM0.1,拖動(dòng)字節(jié)傳送指令到常開觸點(diǎn)后面,輸入常數(shù)十六進(jìn)制數(shù)09到SMB130,表示選擇自由口協(xié)議,波特率9600,數(shù)據(jù)位八位,無奇偶校驗(yàn)。 編寫發(fā)送程序 下面編寫發(fā)送程序功能,通過M0.0觸發(fā)數(shù)據(jù)發(fā)送功能,拖動(dòng)一個(gè)常開觸點(diǎn)到程序段2中,輸入地址M0.0,拖動(dòng)一個(gè)上升沿指令,拖動(dòng)發(fā)送指令到上升沿指令后面,TBL參數(shù)輸入地址VB100,通信端口輸入1,這樣發(fā)送程序就編寫完成了。 觸發(fā)數(shù)據(jù)發(fā)送功能 設(shè)置超級(jí)終端。打開超級(jí)終端,不設(shè)置位置信息,輸入連接名稱test,選擇連接的接口為COM1,端口屬性設(shè)置為波特率9600,數(shù)據(jù)位八位,無奇偶校驗(yàn),停止位一位,數(shù)據(jù)流控制無。接下來設(shè)置超級(jí)終端的屬性,在設(shè)置選項(xiàng)卡中單擊ASCII碼設(shè)置按鈕,勾選本地回顯鍵入的字符項(xiàng),關(guān)閉對(duì)話框。 設(shè)置超級(jí)終端 發(fā)送功能測(cè)試。單擊菜單中的下載按鈕,在打開的通訊對(duì)話框中選擇要訪問的CPU,單擊確定進(jìn)行下載,下載完成關(guān)閉對(duì)話框。單擊PLC菜單下的運(yùn)行按鈕,運(yùn)行項(xiàng)目,單擊調(diào)試菜單下的程序狀態(tài)按鈕,在線觀察程序的執(zhí)行情況。 在線監(jiān)視程序狀態(tài) 在狀態(tài)圖表中輸入地址VB100,格式為無符號(hào)數(shù),VB101、VB102、VB103,格式為ASCII碼,再輸入地址M0.0,單擊狀態(tài)圖表中圖表狀態(tài)按鈕,監(jiān)視地址的值,在新值列中輸入VB100的值為10,VB101輸入字符M,VB102輸入字符N,VB103輸入字符K,單機(jī)狀態(tài)圖表中的寫入按鈕,修改地址的值,修改M0.0的值為1,切換到超級(jí)終端,可以看到其接收到的數(shù)據(jù)為MNK。 在狀態(tài)圖表中輸入新值 我們繼續(xù)使用上面STEP7 Micro/WIN SMART編程軟件所創(chuàng)建的項(xiàng)目,刪除已經(jīng)編寫的發(fā)送程序,再來編寫接收程序,拖動(dòng)常開觸點(diǎn)到程序段1中,輸入地址SM0.1,通過傳送指令,將常數(shù)十六進(jìn)制數(shù)09送到SMB130。 設(shè)置SMB130、SMB187 初始化自由口,向下分支將常數(shù)十六進(jìn)制數(shù)94送到SMB187,設(shè)置自由口接收的控制字。再向下分支,將常數(shù)十六進(jìn)制數(shù)0A送到SMB189。設(shè)置接收結(jié)束條件,結(jié)束字符十六進(jìn)制數(shù)0A。繼續(xù)向下分支,將常數(shù)5送到SMW190,設(shè)置接收起始條件,空閑線5毫秒。 設(shè)置SMB189、SMW190 向下分支,將常數(shù)5送到SMW192,設(shè)定超時(shí)數(shù)據(jù)。再向下分支,將常數(shù)100送到SMB194,設(shè)置最大接收字符數(shù)。向下分支,選擇接收指令,TBL參數(shù)輸入VB200,端口選擇1,表示從端口1接收數(shù)據(jù)并存儲(chǔ)到VB200開始的數(shù)據(jù)區(qū)中, 接收程序編寫完畢。 設(shè)置SMW192、SMB194、RCV 接收功能測(cè)試。單擊菜單中的下載按鈕,下載程序并運(yùn)行項(xiàng)目。單擊調(diào)試菜單下的程序狀態(tài)按鈕,在線觀察程序的執(zhí)行情況。在狀態(tài)圖表中輸入地址VB200的格式為無符號(hào)數(shù), VB201的格式為ASCII碼。單擊狀態(tài)圖表中的圖表狀態(tài)按鈕監(jiān)視地址的值,可以看到VB200和VB201的值為0。切換到超級(jí)終端,輸入字符f,切換回編程軟件, 可以看到狀態(tài)圖表中的VB200的值為1, 接收到了一個(gè)字符為f。 接收功能測(cè)試 以上就是今天學(xué)習(xí)的全部?jī)?nèi)容,大家如果有興趣繼續(xù)學(xué)習(xí)PLC編程可以關(guān)注本號(hào),我們共同學(xué)習(xí)交流! |
|