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

圖1. 指令樹中的庫指令
編程時(shí)使用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)庫的子程序和中斷程序所要用到的變量存儲(chǔ)空間。
如果在編程時(shí)不分配庫指令數(shù)據(jù)區(qū),,編譯時(shí)會(huì)產(chǎn)生許多相同的錯(cuò)誤(錯(cuò)誤18),。
操作步驟(以Modbus RTU庫指令為例):
在指令樹的Project(項(xiàng)目)中,以鼠標(biāo)右鍵單擊Program Block(程序塊),,在彈出的快捷菜單中選擇Library Memory。如圖2所示:

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

圖3.缺省情況下是從VB0開始,,但因?yàn)榕cModbus的保持寄存區(qū)沖突,所以手動(dòng)改為VB2000,。按"Suggest Address"按鈕也可以自動(dòng)分配,。
可以使用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按鈕,否則也會(huì)造成混亂,。
在STEP 7-Micro/WIN32 V3.1中,,有分配庫指令數(shù)據(jù)區(qū)時(shí)有不同的操作方法,需要在Symbol Table(符號(hào)表)中設(shè)置一個(gè)首地址,。我們強(qiáng)烈建議使用當(dāng)時(shí)的編程版本,。
3.2 添加指令庫
注意:添加自定義指令庫,需要關(guān)閉編輯庫指令的項(xiàng)目,,新建立一個(gè)項(xiàng)目,。如果要添加其他來源的庫指令自然不需要如此,。
步:在Micro/WIN的File(文件)菜單中選擇Add/Remove Libraries...(添加/刪除指令庫)命令 ;或者在指令樹的Libraries(指令庫)分支上單擊鼠標(biāo)右鍵,,選擇Add/Remove Libraries...

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

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

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

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

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