2.配置S7-300單站系統(tǒng)通過CPU集成PN口作為Client進(jìn)行Modbus TCP通訊
下面以S7-300單站系統(tǒng)及Modbus Slave軟件為例,詳細(xì)介紹如何將S7-300單站系統(tǒng)CPU的集成PN口配置為Client,Modbus Slave作為Server進(jìn)行Modbus TCP通訊。
2.1硬件設(shè)備及軟件
本例中所用的硬件設(shè)備如下表:
名稱 | 數(shù)量 | 訂貨號 |
S7-300電源模塊PS 307 10A | 1 | 6ES7307-1KA02-0AA0 |
S7-300 CPU317-2PN/DP | 1 | 6ES7317-2EK14-0AB0(V3.2) |
網(wǎng)線 | 若干 | ? |
筆記本電腦 | 1 | ? |
?
所用到軟件如下表:
?
名稱 | 訂貨號 |
STEP7 V16?Update3 組態(tài)編程軟件 | ? |
Modbus Slave免授權(quán)版本 | 可從網(wǎng)上免費(fèi)獲取 |
?
2.2 S7-300單站系統(tǒng)與Modbus Slave軟件組態(tài)
打開TIA軟件,新建一個工程項目文件,命名為“PN_MODBUS TCP Client”,?在項目下插入一個S7-300站,如下圖1所示:?
圖1?新建S7-300 Station
打開設(shè)備視圖,修改CPU的IP地址,本例中將CPU的PN口IP地址設(shè)為192.168.0.220,如下圖17所示:
圖2?設(shè)備視圖中設(shè)置CPU的IP地址
2.3組態(tài)工藝對象
①選擇添加工藝對象“Modbus”---"其他"---“MODBUS TCP”---"MB_PN_PARAM"
圖3?新增工藝對象
②設(shè)置“連接設(shè)置”
連接ID:連接引用標(biāo)識符(范圍1~4095),在之后調(diào)用指令時會使用該參數(shù)
連接建立:PLC做MODBUS TCP客戶端,選擇主動。
遠(yuǎn)程IP地址:圖中的IP地址(192.168.0.228)為 筆記本電腦的IP地址
本地設(shè)備ID:選擇PLC的設(shè)備類型
本地端口:作為客戶端,可不指定固定端口
伙伴端口:圖中502端口為Modbus Slave的端口號
圖4?組態(tài)工藝對象
③Modbus 設(shè)置“內(nèi)部”
圖5?組態(tài)工藝對象
③Modbus 設(shè)置“數(shù)據(jù)區(qū)域”
下圖中設(shè)置了4個Modbus數(shù)據(jù)區(qū)域
圖6?組態(tài)工藝對象
2.4根據(jù)工藝對象中創(chuàng)建的數(shù)據(jù)區(qū)域添加數(shù)據(jù)塊
根據(jù)步驟3.3工藝對象中設(shè)置的數(shù)據(jù)區(qū)域,添加四個數(shù)據(jù)塊,如下圖所示
圖7?創(chuàng)建數(shù)據(jù)塊
圖8?創(chuàng)建存放MODBUS 線圈數(shù)據(jù)的數(shù)據(jù)塊
圖9?創(chuàng)建存放MODBUS 數(shù)字量輸入類型的數(shù)據(jù)塊
圖10?創(chuàng)建存放MODBUS 保持寄存器數(shù)據(jù)的數(shù)據(jù)塊
圖11?創(chuàng)建存放MODBUS 輸入寄存器據(jù)的數(shù)據(jù)塊
2.5創(chuàng)建具有可用于授權(quán)的注冊表項的數(shù)據(jù)塊
創(chuàng)建授權(quán)密鑰數(shù)據(jù)塊DB3(名稱REG_KEY),選擇類型為“全局DB”,打開該DB塊,創(chuàng)建變量“REG_KEY”,數(shù)據(jù)類型為“String[17]”,如圖所示:
圖12?創(chuàng)建存放授權(quán)碼的數(shù)據(jù)塊
授權(quán)密鑰的獲取方法,參考//www.ad.siemens.com.cn/productportal/Prods/published/Comm/Comm_9.4/Comm_9.4.html
2.6調(diào)用OB121
由于在獲取授權(quán)密鑰前,“MODBUSPN”指令是無授權(quán)狀態(tài),會使CPU報錯而停機(jī)。而為了讀取CPU 的“IDENT_CODE”碼,需要CPU運(yùn)行起來,則必須添加編程錯誤組織塊OB121,如下圖所示:
圖13?調(diào)用OB121
2.7調(diào)用通信指令
調(diào)用MODBUS TCP指令(通信---其他---MODBUS_TCP---MODBUSPN),填寫參數(shù)。
為了在通信故障時查找原因,編寫程序段2捕獲錯誤代碼。
圖14?調(diào)用“MODBUSPN”指令
2.8初始化指令
創(chuàng)建啟動組織塊OB100(名稱COMPLETE RESTART),語言為“STL”,打開該OB塊,置位初始化位輸入管腳寄存器,如圖所示:
圖15?初始化“MODBUSPN”指令
2.9通信測試
示例1:客戶端讀取服務(wù)器【 數(shù)字量輸入】,偏移量3,長度為2的數(shù)據(jù)
圖16?通信測試示例
示例2:客戶端讀取服務(wù)器【輸入寄存器】,偏移量0,長度為3的數(shù)據(jù)
圖17?通信測試示例
示例3:客戶端讀取服務(wù)器【線圈寄存器】,偏移量0,長度為8的數(shù)據(jù)
圖18?通信測試示例
示例4:客戶端讀取服務(wù)器【保持寄存器】,偏移量0,長度為3的數(shù)據(jù)
圖19?通信測試示例
示例5:客戶端寫入數(shù)據(jù)到服務(wù)器【保持寄存器】,偏移量5,長度為5的數(shù)據(jù)
圖20?通信測試示例
示例6:客戶端寫入數(shù)據(jù)到服務(wù)器【線圈寄存器】,偏移量0,長度為8的數(shù)據(jù)
圖21?通信測試示例
3.配置S7-300單站系統(tǒng)通過CPU集成PN口作為Server進(jìn)行Modbus TCP通訊
下面以S7-300單站系統(tǒng)及ModScan32軟件為例,詳細(xì)介紹如何將S7-300單站系統(tǒng)CPU的集成PN口配置為Server,ModScan32作為Client進(jìn)行Modbus TCP通訊。
3.1例子中使用的硬件設(shè)備及軟件
本例中所用的硬件設(shè)備如下表:
?
名稱 | 數(shù)量 | 訂貨號 |
S7-300電源模塊PS 307 10A | 1 | 6ES7307-1KA02-0AA0 |
S7-300 CPU317-2PN/DP | 1 | 6ES7317-2EK14-0AB0(V3.2) |
網(wǎng)線 | 若干 | ? |
筆記本電腦 | 1 | ? |
?
所用到軟件如下表:
?
名稱 | 訂貨號 |
STEP7 V16?Update3 組態(tài)編程軟件 | ? |
ModScan32?免授權(quán)版本 | 可從網(wǎng)上免費(fèi)獲取 |
?
3.2 S7-300單站系統(tǒng)與ModScan32軟件組態(tài)
打開TIA軟件,新建一個工程項目文件,命名為“PN_MODBUS TCP Server”,?在項目下插入一個S7-300站,如下圖所示:?
圖22?新建S7-300 Station
打開設(shè)備視圖,修改CPU的IP地址,本例中將CPU的PN口IP地址設(shè)為192.168.0.220,如下圖17所示:
圖23?設(shè)備視圖中設(shè)置CPU的IP地址
3.3組態(tài)工藝對象
①新增工藝對象,選擇“Modbus”---"其他"---“MODBUS_TCP”---"MB_PN_PARAM"
圖24?新增工藝對象
②設(shè)置“連接設(shè)置”
連接ID:連接引用標(biāo)識符(范圍1~4095),在之后調(diào)用指令時會使用該參數(shù)
連接建立:PLC做MODBUS TCP服務(wù)器,選擇被動。
遠(yuǎn)程IP地址:可以指定或者不指定連接伙伴的IP地址。
本地設(shè)備ID:選擇PLC的設(shè)備類型
本地端口:指定固定端口
伙伴端口:可不指定
圖25?組態(tài)工藝對象
③Modbus 設(shè)置“內(nèi)部”
圖26?組態(tài)工藝對象
④Modbus 設(shè)置“數(shù)據(jù)區(qū)域”
下圖中設(shè)置了4個Modbus數(shù)據(jù)區(qū)域
圖27?組態(tài)工藝對象
3.4根據(jù)工藝對象中創(chuàng)建的數(shù)據(jù)區(qū)域添加數(shù)據(jù)塊
根據(jù)步驟3.3工藝對象中設(shè)置的數(shù)據(jù)區(qū)域,添加四個數(shù)據(jù)塊,如下圖所示
圖28?創(chuàng)建數(shù)據(jù)塊
圖29?創(chuàng)建存放MODBUS 線圈數(shù)據(jù)的數(shù)據(jù)塊
圖30?創(chuàng)建存放MODBUS 數(shù)字量輸入類型的數(shù)據(jù)塊
圖31?創(chuàng)建存放MODBUS 保持寄存器數(shù)據(jù)的數(shù)據(jù)塊
圖32?創(chuàng)建存放MODBUS 輸入寄存器據(jù)的數(shù)據(jù)塊
3.5創(chuàng)建具有可用于授權(quán)的注冊表項的數(shù)據(jù)塊
創(chuàng)建授權(quán)密鑰數(shù)據(jù)塊DB3(名稱REG_KEY),選擇類型為“全局DB”,打開該DB塊,創(chuàng)建變量“REG_KEY”,數(shù)據(jù)類型為“String[17]”,如圖所示:
圖33?創(chuàng)建存放授權(quán)碼的數(shù)據(jù)塊
授權(quán)密鑰的獲取方法,參考//www.ad.siemens.com.cn/productportal/Prods/published/Comm/Comm_9.4/Comm_9.4.html
3.6調(diào)用OB121
由于在獲取授權(quán)密鑰前,“MODBUSPN”指令是無授權(quán)狀態(tài),會使CPU報錯而停機(jī)。而為了讀取CPU 的“IDENT_CODE”碼,需要CPU運(yùn)行起來,則必須添加編程錯誤組織塊OB121,如下圖所示:
圖34?OB121
3.7調(diào)用通信指令
調(diào)用MODBUS TCP指令(通信---其他---MODBUS_TCP---MODBUSPN),填寫參數(shù)。
為了在通信故障時查找原因,編寫程序段2捕獲錯誤代碼。
圖35?調(diào)用“MODBUSPN”指令
3.8初始化指令
創(chuàng)建啟動組織塊OB100(名稱COMPLETE RESTART),語言為“STL”,打開該OB塊,置位初始化位輸入管腳寄存器,如下圖所示:
圖36?初始化“MODBUSPN”指令
3.9建立和客戶端的連接
按照如下設(shè)置,使能服務(wù)器端,并使用ModScan32建立連接
圖37?建立和客戶端的連接
3.9通信測試
示例1:客戶端讀寫服務(wù)器【 線圈寄存器 】,偏移量0,長度為10的數(shù)據(jù)
圖38?通信測試示例
示例2:客戶端讀取服務(wù)器【 數(shù)字量輸入寄存器 】,偏移量0,長度為10的數(shù)據(jù)
圖39?通信測試示例
示例3:客戶端讀寫服務(wù)器【 保持寄存器 】,偏移量0,長度為10的數(shù)據(jù)
圖40?通信測試示例
示例4:客戶端讀取服務(wù)器【 模擬量輸入寄存器 】,偏移量0,長度為10的數(shù)據(jù)
圖41?通信測試示例
編輯:黃飛
?
評論
查看更多