1) 通信性能:PROFIBUS-DP使用令牌方式由主站依次訪問從站,是實(shí)時(shí)現(xiàn)場(chǎng)總線,,通信響應(yīng)快,,通信的響應(yīng)時(shí)間應(yīng)考慮PAC3200數(shù)據(jù)的刷新時(shí)間(自身刷新時(shí)間可能較PROFIBUS-DP刷新時(shí)間慢);如果選擇以太網(wǎng)MODBUS TCP 通信,,由于不是實(shí)時(shí)網(wǎng)絡(luò),,通信性能次之,通信的響應(yīng)時(shí)間也應(yīng)考慮PAC3200數(shù)據(jù)的刷新時(shí)間(自身刷新時(shí)間可能較以太網(wǎng)刷新時(shí)間慢),;使用RS485 MODBUS RTU通信,,由于基于串口,,通信性能不能與以太網(wǎng)與PROFIBUS-DP相比較,。
2) 連接個(gè)數(shù):使用PROFIBUS-DP,基于主站的性能,較多可以連接126個(gè)站點(diǎn),;以太網(wǎng)MODBUS TCP 通信,,基于CP的連接個(gè)數(shù),通常16個(gè),;使用RS485 MODBUS RTU,,可以連接一個(gè)網(wǎng)段,典型值31個(gè)站點(diǎn),。
3) 編程:使用PROFIBUS-DP,,不需要編寫通信程序;使用以太網(wǎng)MODBUS TCP 通信,,需要編寫發(fā)送接收通信程序,;使用RS485 MODBUS RTU通信,需要編寫從站輪詢程序,,比較麻煩,,如果沒有購買MODBUS RTU的驅(qū)動(dòng),還需要編寫通信程序,。
4) 價(jià)格:PROFIBUS-DP與RS485 MODBUS RTU通信需要購買選件網(wǎng)卡,,而PAC3200本身集成以太網(wǎng)接口,支持MODBUS TCP 通信,。
下面將介紹PAC3200的MODBUS TCP 通信,。
3 MODBUS TCP 通信報(bào)文
MODBUS TCP 使MODBUS RTU協(xié)議運(yùn)行于以太網(wǎng),MODBUS TCP使用TCP/IP和以太網(wǎng)在站點(diǎn)間傳送MODBUS報(bào)文,,MODBUS TCP結(jié)合了以太網(wǎng)物理網(wǎng)絡(luò)和網(wǎng)絡(luò)標(biāo)準(zhǔn)TCP/IP以及以MODBUS作為應(yīng)用協(xié)議標(biāo)準(zhǔn)的數(shù)據(jù)表示方法,。MODBUS TCP通信報(bào)文被封裝于以太網(wǎng)TCP/IP數(shù)據(jù)包中。與傳統(tǒng)的串口方式,,MODBUS TCP插入一個(gè)標(biāo)準(zhǔn)的MODBUS報(bào)文到TCP報(bào)文中,,不再帶有數(shù)據(jù)校驗(yàn)和地址,如圖1所示:

圖2 通信界面
2):使用F4(Edit)鍵對(duì)選中的條目進(jìn)行編輯,,在通信界面中設(shè)定MODBUS TCP 通信的IP地
址,、子網(wǎng)掩碼及網(wǎng)關(guān),在“PROTOCOL”中選擇“TCP”后退出,,PAC3200側(cè)設(shè)置完成,。
7 PLC側(cè)設(shè)置
在PLC側(cè)作的設(shè)置是為了與PAC3200建立TCP連接,以S7-300為例,,步驟如下:
1):在SIMATIC Manager中創(chuàng)建一個(gè)S7-300的項(xiàng)目,,本例中項(xiàng)目名為MODBUS_TCP。
2):插入一個(gè)S7-300站,,從硬件目錄中插入CP343-1,,本例為CP343-1IT,如圖3所示:

圖3 插入以太網(wǎng)模塊
3):雙擊CP343-1的PN IO 槽,配置IP地址,、子網(wǎng)掩碼,,CP343-1的IP地址必須與
PAC3200在一個(gè)網(wǎng)段中,否則需要配置路由器地址,,如圖4所示:

圖4 設(shè)置CP地址參數(shù)
4):在硬件界面中點(diǎn)擊“Options”->“configure network”進(jìn)入網(wǎng)絡(luò)連接界面,,如圖5所示:

圖5 網(wǎng)絡(luò)配置界面
5):點(diǎn)擊CPU,出現(xiàn)網(wǎng)絡(luò)連接表,,雙擊表中任一空格,,選擇通信連接類型,由于CP343-1與
PAC3200使用以太網(wǎng)TCP/IP的通信方式,,所以連接類型選擇為“TCP CONNECTION”,,如
圖6所示:
ACT :沿觸發(fā)信號(hào)。
ID :參考本地CPU連接表中的塊參數(shù)(圖7),。
LADDR :參考本地CPU連接表中的塊參數(shù)(圖7),。
SEND : 發(fā)送區(qū),較大通信數(shù)據(jù)為8K字節(jié),。
LEN : 實(shí)際發(fā)送數(shù)據(jù)長度,。
DONE :每次發(fā)送成功,產(chǎn)生一個(gè)上升沿,。
ERROR :錯(cuò)誤位,。
STATUS:通信狀態(tài)字。
通信函數(shù)FC6的參數(shù)含義:
ID :參考本地CPU連接表中的塊參數(shù),。
LADDR :參考本地CPU連接表中的塊參數(shù),。
RECV : 接收區(qū)。接收區(qū)應(yīng)大于等于發(fā)送區(qū),。
NDR : 每次接收到新數(shù)據(jù),,產(chǎn)生一個(gè)上升沿。
ERROR :錯(cuò)誤位,。
STATUS:通信狀態(tài)字,。
LEN : 實(shí)際接收數(shù)據(jù)長度。
如何實(shí)現(xiàn)MODBUS TCP通信,,可以通過例子進(jìn)行說明,,例如讀出PAC3200設(shè)備的IP地址,通過PAC3200的手冊(cè)可以知道,,IP地址為通信參數(shù),,偏移地址(開始地址)為63001,占用兩個(gè)寄存器,,上面已經(jīng)介紹通信參數(shù)的讀取可以使用功能碼FC3或FC4讀出,,MODBUS TCP 的報(bào)文頭(參考圖1)BMAP部分占用7個(gè)字節(jié),,協(xié)議數(shù)據(jù)單元(PDU)部分占用5個(gè)字節(jié),那么通過通信函數(shù)FC5一共發(fā)送12個(gè)字節(jié),,本例中數(shù)據(jù)發(fā)送區(qū)為DB1.DBB0~DB1.DBB11,然后將請(qǐng)求的內(nèi)容分別賦值到DB1.DBB0~DB1.DBB11中,,請(qǐng)求報(bào)文格式如下:
DB1,DBB0=0 transaction identifier (高字節(jié)) – 為0 DB1,DBB1=0 transaction identifier(低字節(jié)) - 為0 DB1,DBB2=0 protocol identifier(高字節(jié)) = 0 DB1,DBB3=0 protocol identifier (低字節(jié)) = 0 DB1,DBB4=0 length field (高字節(jié)) = 0 (因?yàn)樗械膱?bào)文小于256) DB1,DBB5=6 后面跟隨的字節(jié)數(shù) DB1,DBB6=7 unit identifier -原從站地址,,這里為任意值 |  | MPAP西門子6ES7314-6BG03-0AB0 |
DB1,DBB7=4 MODBUS 功能碼 DB1,DBB8= F6(HEX)輸入寄存器開始地址(高字節(jié)) DB1,DBB9=19 (HEX) 輸入寄存器開始地址(低字節(jié)) DB1,DBB10=0 輸入寄存器的個(gè)數(shù)(高字節(jié)) DB1,DBB11=2 輸入寄存器的個(gè)數(shù)(低字節(jié)) |  | PDU |
DB1.DBB0~DB1.DBB11經(jīng)過賦值請(qǐng)求信息后,例子中M0.5每個(gè)上升沿將發(fā)送一次請(qǐng)求,,如果通信成功,,通過FC6將接收到PAC3200的返回信息,返回信息為13個(gè)字節(jié),,放入到數(shù)據(jù)接收區(qū)DB2.DBB0~DB2.DBB12中,,接收?qǐng)?bào)文的格式如下:
DB2,DBB0=0 transaction identifier (高字節(jié)) – 為0 DB2,DBB1=0 transaction identifier(低字節(jié)) - 為0 DB2,DBB2=0 protocol identifier(高字節(jié)) = 0 DB2,DBB3=0 protocol identifier (低字節(jié)) = 0 DB2,DBB4=0 length field (高字節(jié)) = 0 (因?yàn)樗械膱?bào)文小于256) DB2,DBB5=7 后面跟隨的字節(jié)數(shù) DB2,DBB6=7 unit identifier -返回值 |  | MBAP |
DB2,DBB7=4 MODBUS 功能碼 DB2,DBB8= 4 返回的字節(jié)個(gè)數(shù) DB2,DBB9= C0(HEX) ,192(DEC)**個(gè)寄存器值(高字節(jié)) DB2,DBB10=A8(HEX),168(DEC) **個(gè)寄存器值(低字節(jié)) DB2,DBB11=1 第二個(gè)寄存器值(高字節(jié)) DB2,DBB12=D(HEX),13(DEC)第二個(gè)寄存器值(低字節(jié)) |  | PDU |
1.S7-200和S7-300進(jìn)行MPI通信
S7-200 PLC與S7-300 PLC之間采用MPI通訊方式時(shí),,S7-200 PLC中不需要編寫任何與通訊有關(guān)的程序,,只需要將要交換的數(shù)據(jù)整理到一個(gè)連續(xù)的V 存儲(chǔ)區(qū)當(dāng)中即可,而S7-300 PLC中需要在組織塊OB1(或是定時(shí)中斷組織塊OB35)當(dāng)中調(diào)用系統(tǒng)功能X_GET(SFC67)和X_PUT(SFC68),,以實(shí)現(xiàn)S7-200 PLC與S7-300 PLC之間的通訊,。調(diào)用SFC67和SFC68時(shí)VAR_ADDR參數(shù)填寫S7-200的數(shù)據(jù)地址區(qū),由于S7-200的數(shù)據(jù)區(qū)為v區(qū),,這里需填寫 P#DB1.DBX×× BYTE n 對(duì)應(yīng)的就是S7200 V存儲(chǔ)區(qū)當(dāng)中VB××到VB(××+n)的數(shù)據(jù)區(qū),。例如交換的數(shù)據(jù)存在S7-200中VB50到VB59這10個(gè)字節(jié)當(dāng)中,VAR_ADDR參數(shù)應(yīng)為 P#DB1.DBX50.0 BYTE 10.
首先根據(jù)S7-300的硬件配置,,在STEP7當(dāng)中組態(tài)S7-300站并且下載,,注意S7-200和S7-300出廠默認(rèn)的MPI地址都是2,所以必須修 改其中一個(gè)PLC的站地址,,例子程序當(dāng)中將S7-300 MPI地址設(shè)定為2,,S7-200地址設(shè)定3,另外要分別將S7-300和S7-200的通訊速率設(shè)定一致,,可設(shè)為9.6K,,19.2K,187.5K三 種波特率,,例子程序當(dāng)中選用了19.2K的速率,。
S7-200 PLC修改MPI地址可以參考下圖
西門子6ES7148-4CA00-0AA0
PLC程序編制中的梯形圖與指令語句表聯(lián)合使用舉例介紹
所謂程序編制,就是用戶根據(jù)控制對(duì)象的要求,,利用PLC廠家提供的程序編制語言,,將一個(gè)控制要求描述出來的過程。PLC較常用的編程語言是梯形圖語言和指令語句表語言,,且兩者常常聯(lián)合使用,。
1) 梯形圖(語言)
梯形圖是一種從繼電接觸控制電路圖演變而來的圖形語言,。它是借助類似于繼電器的動(dòng)合、動(dòng)斷觸點(diǎn),、線圈以及串,、并聯(lián)等術(shù)語和符號(hào),根據(jù)控制要求聯(lián)接而成的表示PLC輸入和輸出之間邏輯關(guān)系的圖形,,直觀易懂,。
梯形圖中常用 圖形符號(hào)分別表示PLC編程元件的動(dòng)合和動(dòng)斷觸點(diǎn);
用 ( ) 表示它們的線圈,。梯形圖中編程元件的種類用圖形符號(hào)及標(biāo)注的字母或數(shù)加以區(qū)別,。觸點(diǎn)和線圈等組成的獨(dú)立電路稱為網(wǎng)絡(luò),用編程軟件生成的梯形圖和語句表程序中有網(wǎng)絡(luò)編號(hào),,允許以網(wǎng)絡(luò)為單位給梯形圖加注釋,。
梯形圖的設(shè)計(jì)應(yīng)注意到以下三點(diǎn):
①梯形圖按從左到右、自上而下地順序排列,。每一邏輯行(或稱梯級(jí))起始于左母線,,然后是觸點(diǎn)的串、并聯(lián)接,,較后是線圈,。
②梯形圖中每個(gè)梯級(jí)流過的不是物理電流,而是“概念電流”,,從左流向右,,其兩端沒有電源。這個(gè)“概念電流”只是用來形象地描述用戶程序執(zhí)行中應(yīng)滿足線圈接通的條件,。
③輸入寄存器用于接收外部輸入信號(hào),,而不能由PLC內(nèi)部其它繼電器的觸點(diǎn)來驅(qū)動(dòng)。因此,,梯形圖中只出現(xiàn)輸入寄存器的觸點(diǎn),,而不出現(xiàn)其線圈。輸出寄存器則輸出程序執(zhí)行結(jié)果給外部輸出設(shè)備,,當(dāng)梯形圖中的輸出寄存器線圈得電時(shí),,就有信號(hào)輸出,但不是直接驅(qū)動(dòng)輸出設(shè)備,,而要通過輸出接口的繼電器,、晶體管或晶閘管才能實(shí)現(xiàn)。輸出寄存器的觸點(diǎn)也可供內(nèi)部編程使用,。
2)指令語句表
指令語句表是一種用指令助記符來編制PLC程序的語言,,它類似于計(jì)算機(jī)的匯編語言,但比匯編語言易懂易學(xué),,若干條指令組成的程序就是指令語句表,。一條指令語句是由步序,、指令語和作用器件編號(hào)三部分組成。