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

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

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

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

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

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

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

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

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

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