宜昌市西門子中國*總代理宜昌市西門子中國*總代理
編程自由口通訊的基本步驟:
1) 設(shè)置通訊參數(shù):如果是集成在本機上基于RS485口,,在SMB30中設(shè)置(prot0口);如果是采用通訊信號板,,則在SMB130中設(shè)置(prot1口),,這2個地址的設(shè)置,僅僅是對應(yīng)的通訊口的不同,,參數(shù)是相同的,。
2) 定義接收信息的控制字節(jié),對于prot0口在SMB87,;對于prot1口在SMB187中設(shè)置,。
3) 設(shè)置根據(jù)接收控制字節(jié)、通訊參數(shù)的通訊數(shù)據(jù),。端口0:SMB87/SMB88/SMW90/SMW92,;端口1:SMB188/SMB189/SMW190/SMW192,。(根據(jù)協(xié)議用戶自由選擇)
4) 設(shè)置通訊數(shù)據(jù)總字節(jié)數(shù),SMB94/SMB194,。(范圍1~255)
5) 設(shè)置中斷事件號,、開中斷。發(fā)送完成中斷及接收完成中斷,。端口0:發(fā)送/接收完成中斷事件號:9/23,;端口1:發(fā)送/接收完成中斷事件號:26/24
6) 啟用發(fā)送指令XMT,。
7) 在發(fā)送完成中斷里編寫接收指令RCV,;在接收完成中斷里編寫發(fā)送指令XMT。
假設(shè):做這樣一個例子,,讓西門子200smart plc本機RS485口發(fā)送一串字符(siemens)到串口調(diào)試軟件的信息接收區(qū),,串口調(diào)試軟件的發(fā)送區(qū)發(fā)送一串(ni hao!)到200smart plc數(shù)據(jù)寄存器VB102開始的6個字節(jié)中,,接收信息啟用起始符,、結(jié)束符方式。
做這個程序前先定義好一些通訊參數(shù):(按上面的7點內(nèi)容展開)
1) 定義SMB30:自由口通訊,、頻率9600,、無校驗,SMB30 = 16# 09
2) 定義SMB87:啟用接收信息控制,、啟用起始符,、結(jié)束符,SMB87 = 16# E0
3) 設(shè)置起始符:SMB88 = 16# 3A(自由選?。?/p>
4) 設(shè)置結(jié)束符:SMB89 = 16# 0A(自由選?。?/p>
5) 設(shè)置中斷事件號:發(fā)送完成中斷事件號9;接收完成中斷事件號23
6) 開中斷
7) 在上述初始化程序中,,啟用發(fā)送指令,,并編寫相應(yīng)的程序
8) 定義好發(fā)送和接收數(shù)據(jù)的數(shù)據(jù)儲存地址區(qū)
程序例子1:
1) 通訊初始化子程序:


2) 在發(fā)送完成中斷中調(diào)用接收指令:

3) 在接收完成中斷中調(diào)用發(fā)送指令:

4) 在主程序中調(diào)用通訊初始化子程序:

5) 定義發(fā)送數(shù)據(jù)塊數(shù)據(jù):(發(fā)送字符siemens:16#73;16#69,;16#65,;16#6D;16#65,;16#6E,;16#73)在數(shù)據(jù)塊中寫入,其中VB0是發(fā)送數(shù)據(jù)字符的個數(shù)不參與通訊,。

6) 需要注意的一些問題:在“系統(tǒng)塊”中設(shè)置“啟動”項“cpu模式”為“RUN”并確定,,其它暫時采用默認值。

7) 編譯,、保存用戶程序,,將程序下載到cpu中并運行cpu:創(chuàng)建一個便于觀察的“狀態(tài)圖表”:將發(fā)送和接收的數(shù)據(jù)切換到ASCLL顯示模式,,并監(jiān)控。

8) 連接通訊電纜,,打開串口調(diào)試軟件,,設(shè)置好于PLC通訊SMB30*的通訊參數(shù),并在數(shù)據(jù)發(fā)送區(qū)填寫好等待發(fā)送的數(shù)據(jù):由起始符開始,、,、、,、,、、到結(jié)束符,。
16#3A 16#6E 16#69 空格(占一個字符) 16#68 16#61 16#6F 16#21 16#0A

9) 這時,,只要我點擊串口調(diào)試軟件發(fā)送區(qū)的“手動發(fā)送”按鈕,軟件的接收區(qū)如果通訊正常就會顯示“Siemens”的字符
10) 觀察串口調(diào)試軟件的接收區(qū)回傳回來的siemens字符:

11) 點擊多次“手動發(fā)送”按鈕,,數(shù)據(jù)回傳也是根據(jù)發(fā)送次數(shù)做相應(yīng)的回傳:

12) 回過來觀察PLC“狀態(tài)圖表”中的顯示部分內(nèi)容:
