西門子模塊6ES7515-2TM01-0AB0
參數(shù)MaxHold設(shè)置可以使用的V區(qū)字保持寄存器的個數(shù),,相應(yīng)于Modbus地址4xxxx,。例如,要允許主
站訪問2000字節(jié)的V存儲區(qū),,則設(shè)置MaxHold為1000字(保持寄存器),。
參數(shù)HoldStart是V存儲區(qū)的保持寄存器的起始地址。通常設(shè)為VB0,所以參數(shù)HoldStart設(shè)為
&VB0(VB0的地址),。也可以將其它的V區(qū)地址為保持寄存器的起始地址,,以便使VB0可以在項目
中用作其它目的。Modbus主站可以訪問起始地址為HoldStart,字?jǐn)?shù)為MaxHold的V存儲區(qū),。
當(dāng)MBUSJNIT指令完成時,,Done輸出接通,。Error輸出字節(jié)包含指令執(zhí)行的結(jié)果。表12-6定義了該指
令執(zhí)行可能引起的錯誤條件,。
MBUS_SLAVE 指令
MBUS—SLAVE指令用于服務(wù)來自Modbus主站的請求,,必須
在每個循環(huán)周期都執(zhí)行,以便檢查和響應(yīng)Modbus請求,。
當(dāng)EN輸人為接通時,,指令在每次掃描時都執(zhí)行。
MBUS_SLAVE指令無輸人參數(shù),。
當(dāng)MBUS_SLAVE指令響應(yīng)Modbus請求時Done輸出接通,。如
果沒有服務(wù)的請求,Done輸出會斷開,。
Error輸出包含該指令的執(zhí)行結(jié)果,。該輸出只有Done接通時才
有效。如果Done斷開,,錯誤代碼不會改變,。表12-6定義了執(zhí)
行該指令可能引起的錯誤條件
編程基本步驟:
檢查Micro/WIN的軟件版本,應(yīng)當(dāng)是STEP 7-Micro/WIN V3.2以上版本,。
檢查Micro/WIN的指令樹中是否存在Modbus RTU從站指令庫(圖1),,庫中應(yīng)當(dāng)包括MBUS_INIT和MBUS_SLAVE兩個子程序,。如果沒有,,須安裝Micro/WIN32 V3.2的Instruction Library(指令庫)軟件包;

圖1. 指令樹中的庫指令
編程時使用SM0.1調(diào)用子程序MBUS_INIT進(jìn)行初始化,,使用SM0.0調(diào)用MBUS_SLAVE,,并相應(yīng)參數(shù)。關(guān)于參數(shù)的詳細(xì)說明,,可在子程序的局部變量表中找到,;

西門子模塊6ES7515-2TM01-0AB0
分配庫指令數(shù)據(jù)區(qū)
調(diào)用STEP 7 - Mciro/WIN32 V3.2 Instruction Library(指令庫)需要分配庫指令數(shù)據(jù)區(qū)(Library Memory)。庫指令數(shù)據(jù)區(qū)是相應(yīng)庫的子程序和中斷程序所要用到的變量存儲空間,。
如果在編程時不分配庫指令數(shù)據(jù)區(qū),,編譯時會產(chǎn)生許多相同的錯誤(錯誤18)。
操作步驟(以Modbus RTU庫指令為例):
在指令樹的Project(項目)中,,以鼠標(biāo)右鍵單擊Program Block(程序塊),,在彈出的快捷菜單中選擇Library Memory。如圖2所示:

圖2
在彈出的選項卡中設(shè)置庫指令數(shù)據(jù)區(qū),,如圖2所示:

圖3.缺省情況下是從VB0開始,,但因為與Modbus的保持寄存區(qū)沖突,所以手動改為VB2000,。按"Suggest Address"按鈕也可以自動分配,。
可以使用Suggest Address(*地址)設(shè)置數(shù)據(jù)區(qū),,但要注意編程軟件設(shè)置的數(shù)據(jù)區(qū)地址,只考慮到了其他一般尋址,,而未考慮到諸如Modbus數(shù)據(jù)保持寄存器區(qū)等的設(shè)置,。應(yīng)當(dāng)確保不與其他任何已使用的數(shù)據(jù)區(qū)重疊、沖突,。不應(yīng)重復(fù)按Suggest Address按鈕,,否則也會造成混亂。
在STEP 7-Micro/WIN32 V3.1中,,有分配庫指令數(shù)據(jù)區(qū)時有不同的操作方法,,需要在Symbol Table(符號表)中設(shè)置一個首地址。我們強烈建議使用當(dāng)時的編程版本,。
3.2 添加指令庫
注意:添加自定義指令庫,,需要關(guān)閉編輯庫指令的項目,新建立一個項目,。如果要添加其他來源的庫指令自然不需要如此,。
步:在Micro/WIN的File(文件)菜單中選擇Add/Remove Libraries...(添加/刪除指令庫)命令 ;或者在指令樹的Libraries(指令庫)分支上單擊鼠標(biāo)右鍵,,選擇Add/Remove Libraries...

圖4. 選擇添加/刪除指令庫命令
添加/刪除對話框中將顯示已經(jīng)在本機的Micro/WIN中集成的用戶自定義指令庫,。

圖5. 已安裝的庫指令
第二步:按Add(添加)按鈕,選擇新定義的庫文件路徑,。用戶自定義庫將自動添加到Micro/WIN指令樹的Libraries分支下,。

圖6. 選擇庫文件
缺省情況下,Micro/WIN到圖8中的路徑下尋找?guī)熘噶钗募?。用戶也可以其他路徑,。但要注意庫文件?yīng)當(dāng)保持在非移動的介質(zhì)上,如果了一個可移動硬盤,,則硬盤不在時會發(fā)生找不到庫的錯誤,。建議用戶使用缺省設(shè)置。
3.3 刪除庫指令
步:選擇添加/刪除指令庫命令

圖7. 選擇命令
第二步:選中須卸載的庫所對應(yīng)的庫文件,,按Remove(刪除)按鈕

圖8. 選中要刪除的庫指令文件
4RS-485網(wǎng)絡(luò)
S7-200系統(tǒng)支持的PPI,、MPI和PROFIBUS-DP協(xié)議通常以RS-485電氣網(wǎng)絡(luò)為硬件基礎(chǔ)。
RS-485串行通信標(biāo)準(zhǔn)采用平衡信號傳輸方式,,或者稱為差動模式,。平衡傳輸方式可以有效地抑制傳輸過程中干擾。
平衡方式采用一對導(dǎo)線,,利用兩根導(dǎo)線間的電壓差傳輸傳輸信號,。這兩根導(dǎo)線被命名為A(TxD/RxD-)和B(TxD/RxD+)。當(dāng)B的電壓比A高時,,認(rèn)為傳輸?shù)氖沁壿?高"電平,;當(dāng)B的電壓比A低時,,認(rèn)為傳輸?shù)氖沁壿?低"電平信號。能夠有效工作的差動電壓范圍十分寬廣,,可以從零點幾伏到接近十伏,。
RS-485通信端口可以做到很高的通信速率,較長的通信距離,,以及并聯(lián)連接多個端口,。
平衡通信方式能否有效工作受到共模電壓差的影響。RS-485接口的兩根導(dǎo)線相對于通信對象信號地的電壓差就是共模電壓,。非電氣隔離的RS-485接口能在一定的范圍內(nèi)抵抗共模電壓對通信的干擾,。
S7-200 CPU通信口的共模抑制電壓是12V。所以對于這類非隔離型的RS-485端口,,保證通信口之間的信號地等電位非常重要,,將它們連接在一起(并不是說一定要接地)。
S7-200系統(tǒng)中的RS-485端口是半雙工的,,不能同時發(fā)送和接收信號,。
在S7-200系統(tǒng)中,選擇合適的通信設(shè)備,,可以做到波特率從1200到12M,,單段距離1000m,單段站點32個的通信網(wǎng)絡(luò),。通過中繼器,,RS-485電氣網(wǎng)絡(luò)還可以擴展通信距離,增加通信站點,。詳情請參考《S7-200系統(tǒng)手冊》關(guān)于通信的專門一章,。
雖然常見的RS-485通信器件在電氣性能上基本*,,但物理接口卻五花八門,,沒有統(tǒng)一的規(guī)定。
西門子系統(tǒng)中的 D-Sub 9 針型 RS-485 端口,,引腳定義是基本*的,。
4.1 S7-200系統(tǒng)中的RS-485通信
在S7-200系統(tǒng)中,CPU上的通信口(編程口),,以及EM277模塊上的通信端口都是符合RS-485電氣標(biāo)準(zhǔn)的,。但它們也有所不同:
S7-200 CPU上的通信口是非隔離型的,通信速率187.5K波特
EM277上的通信口是隔離的,,通信速率12M,,并且速率自適應(yīng)
以下三種協(xié)議,都可以在RS-485的硬件基礎(chǔ)上實現(xiàn)通信:
PPI(包括編程通信,、S7-200 CPU之間,、S7-200 CPU與HMI之間的通信等)
MPI(S7-200 CPU與S7-300/400 CPU,、S7-200 CPU與HMI之間、EM277與HMI之間的通信等)
PROFIBUS-DP(EM277與其他PROFIBUS-DP主站之間的通信)
實際上,,如果各通信站點的地址不同,,通信波特率相同,上述三個協(xié)議可以在一個RS-485網(wǎng)絡(luò)上同時實現(xiàn)各自的通信,。當(dāng)然,,一個站點支持什么協(xié)議受到自身條件所限。
因此考察上述電氣網(wǎng)絡(luò)的通信時,,我們應(yīng)注意到它們都受RS-485網(wǎng)絡(luò)電氣基礎(chǔ)的制約,。上述網(wǎng)絡(luò)所用的網(wǎng)絡(luò)硬件基本一樣。
5RS-485網(wǎng)絡(luò)的硬件組成