應用領域 | 環(huán)保,石油,電子,印刷包裝,紡織皮革 |
---|
本公司主要從事工業(yè)自動化產品的工程和銷售。公司以低廉的價格,強大的技術力量,周到的服務取得用戶的信任。本公司的客戶范圍廣泛,行業(yè)涉及冶金,造紙機械,紡織機械,水處理設備,水泥,飲料,包裝等生產企業(yè),大專院校,科研單位和工程公司等。
參考價 | ¥13 |
訂貨量 | 1 |
更新時間:2019-07-31 12:21:13瀏覽次數(shù):109
聯(lián)系我們時請說明是化工儀器網(wǎng)上看到的信息,謝謝!
湖南亞貝納自動化設備有限公司
本著“以人為本、科技先導、顧客滿意、持續(xù)改進”的工作方針,致力于工業(yè)自動化控制領域的產品開發(fā)、工程配套和系統(tǒng)集成,擁有豐富的自動化產品的應用和實踐經(jīng)驗以及雄厚的技術力量,尤其以PLC復雜控制系統(tǒng)、傳動技術應用、伺服控制系統(tǒng)、數(shù)控備品備件、人機界面及網(wǎng)絡/軟件應用為公司的技術特長,幾年來,公司在與德國 SIEMENS公司自動化與驅動部門的*緊密合作過程中,建立了良好的相互協(xié)作關系,在可編程控制器、交直流傳動裝置方面的業(yè)務逐年成倍增長,為廣大用戶提供了SIEMENS的新技術及自動控制的解決方案。
承諾:1、保證全新*:西門子6ES7954-8LL02-0AA0
2、保證安全準時發(fā)貨:
3、保證售后服務質量
流程:1、客戶確認所需采購產品型號:
2、我方會根據(jù)詢價單型號查詢價格以及交貨期,擬一份詳細正規(guī)報價單
3,客戶收到報價單并確認型號無誤后訂購產品
4、報價單負責人根據(jù)客戶提供型號以及數(shù)量擬份銷售合同:
5、客戶收到合同查閱同意后蓋章回傳并按照合同銷售額匯款到公司賬戶
6我公司財務查到款后,業(yè)務員安排發(fā)貨并通知客戶跟蹤運單。
具備如下業(yè)務優(yōu)勢: SIEMENS 可編程控制器 1、 SIMATIC S7 系列PLC、S7200、s71200、S7300、S7400、ET200 2、 邏輯控制模塊 LOGO!230RC、230RCO、230RCL、24RC、24RCL等 3、 SITOP 系列直流電源24V DC 1.3A、2.5A、3A、5A、10A、20A、40A4、HMI 觸摸屏TD200 TD400C TP177,MP277 MP377
西門子6ES7954-8LL02-0AA0
一、S7-1200存儲卡的基本介紹
S7-1200CPU使用的存儲卡為SD卡,有如下四種功能(實際為三種):
1. 作為CPU的預裝載存儲區(qū),用戶項目文件僅存儲在卡中,CPU中沒有項目文件,離開存儲卡將無法運行。
2. 在有編碼器的情況下,作為向多個S7-1200PLC傳送項目文件的介質。
3. 忘記密碼時,清除CPU內部項目文件和密碼。
4. 更新S7-1200CPU的固件版本(只限24M卡)。
注意:
1. 對于S7-1200CPU,存儲卡不是必需的。
2. 將存儲卡插到一個處于運行狀態(tài)的CPU上,會造成CPU停機。
3. S7-1200CPU僅支持由西門子制造商預先格式化過的存儲卡。
訂貨號:
4. 如果使用Windows格式化程序對存儲卡進行格式化,CPU將無法使用該存儲卡。
5. 目前S7-1200還無法配合存儲卡實現(xiàn)配方和數(shù)據(jù)歸檔的高級功能。
二、S7-1200存儲卡的工作模式
兩種工作模式:
1. 程序卡:作為S7-1200CPU的裝載存儲區(qū),所有程序和數(shù)據(jù)存儲在卡中,CPU內部集成的存儲區(qū)中沒有項目文件,設備在運行過程中存儲卡不能被拔除。
2. 傳輸卡:用于從存儲卡向CPU傳送項目,傳送完成后必須將存儲卡拔出,CPU可以離開存儲卡獨立運行。
三、程序卡模式
優(yōu)點:更換CPU時不需要重新下載項目文件。
怎樣將項目文件裝載到存儲卡:
*步:將存儲卡設定到“編程”模式。建議做此操作之前清除存儲卡中的所有文件。
第二步:設置CPU的啟動狀態(tài)為“Warm restart-RUN”。
第三步:將CPU斷電。
第四步:將存儲卡插到CPU卡槽內。
第五步:將CPU上電。
第六步:使用博途軟件下載項目,此時是將項目文件(包括用戶程序、硬件組態(tài)和強制值)下載到存儲卡中,而不是CPU內部集成的存儲區(qū)中。
完成上述步驟后,CPU可以帶卡正常運行。此時如果將存儲卡拔出,CPU會報錯,“ERROR”紅燈閃爍。
四、傳輸卡模式
優(yōu)點:在沒有編程器的情況下,方便快捷地向多個S7-1200CPU拷貝項目文件。
怎樣向傳輸模式的存儲卡中裝載項目:
*步:將存儲卡設定到“傳輸”模式。建議客戶做此操作前清除存儲卡中的所有文件。
第二步:設置CPU的啟動狀態(tài)為“Warm restart-RUN”。
第三步:直接拖拽PLC設備到存儲卡盤符。
說明:
做好的“程序卡”可以直接更改為“傳輸卡”。
從存儲卡復制項目到S7-1200CPU:
*步:將CPU斷電。
第二步:將存儲卡插到CPU卡槽。
第三步:將CPU上電,CPU上“MAINT”黃燈閃爍。
第四步:將CPU斷電,將存儲卡拔出。
第五步:將CPU上電。
五、使用存儲卡清除密碼
如果忘記了之前設定到S7-1200的密碼,通過“恢復出廠設置”無法清除S7-1200內部的程序和密碼,的清除方式就是使用存儲卡。步驟如下:
1. 將S7-1200設備斷電。
2. 插入一張存儲卡插到S7-1200CPU上,存儲卡中的程序不能有密碼保護。
3. 將S7-1200設備上電。
S7-1200上電后,會將存儲卡中的程序復制到內部的FLASH寄存器中,即執(zhí)行清除密碼操作。
也可以用相同的方法插入一張全新的或者空白的存儲卡到S7-1200CPU,設備上電后,S7-1200CPU會將內部的存儲區(qū)的程序轉移到存儲卡中,拔下存儲卡后,S7-1200CPU內部將不再有用戶程序,即實現(xiàn)了清除密碼。
存儲卡中的內容可以使用讀卡器清除。
注意:
1. 不要格式化存儲卡。
2. IP地址并不能被清除。
3. 插入空白存儲卡后,內部裝載存儲區(qū)的設備組態(tài)、用戶程序和任何的強制值被復制的存儲卡中(即便是原來CPU內容為空也是如此)。存儲卡此時成為一個包括之前存儲在內部裝載存儲區(qū)的數(shù)據(jù)的程序卡。復制完成后,內部裝載存儲區(qū)被清空。如果插入的不是空白卡,內部裝載存儲區(qū)將不被清空。
六、使用24M存儲卡更新S7-1200CPU的固件版本。
S7-1200固件版本下載地址:http://support.automation.siemens.com/WW/view/cn。
注意:
1. 不同訂貨號的S7-1200CPU的固件文件不同,下載地址也不同。用戶在下載和更新固件之前請核對產品訂貨號。
2. 2M和4M的村欻卡不能用于CPU固件升級。
3. 固件升級前CPU內部存儲的項目文件(程序塊、硬件組態(tài)等)不受影響,不會被清除。
4. 如果存儲卡中的固件文件訂貨號與實際CPU的訂貨號不*,即使執(zhí)行了下列步驟,CPU的原固件版本也不會改變。
更新CPU的固件步驟如下:
*步:使用電腦通過讀卡器清除存儲卡中的內容。注意:不要格式化存儲卡。
第二步:下載版固件文件,里面包含一個“S7_JO.SYS”文件和一個“FWUPDATE.SYS”文件夾。
第三步:將“S7_JO.SYS”文件和“FWUPDATE.SYS”文件夾拷貝到存儲卡中。
第四步:將存儲卡插到CPU卡槽中,此時CPU會停止,”MAINT“指示燈閃爍。
第五步:將CPU斷電再上電。CPU的”RUN/STOP“指示燈紅綠交替閃爍說明你哥股減正在被更新中。”RUN/STOP“指示燈亮,”MAINT“指示燈閃爍說明固件更新已經(jīng)結束。
第六步:拔出存儲卡。
第七步:再次將CPU斷電再上電。
用戶可以在博途軟件中查看CPU目前的固件版本以確認是否已更新。
補充說明:
一、獲取空白存儲卡的方法:
1. 購買一個新的沒有使用過的西門子SIMATIC MC存儲卡。
2. 如果SIMATIC MC卡不是空白的,使用Window資源管理器刪除存儲卡上的”SIMATIC.S7S“文件夾和”S7_JOB.S7S“文件。
二、如果對存儲卡模式不進行先期設置,默認將為程序卡,而不是傳輸卡或固件更新卡。
三、不管存儲卡是否為空白卡,只要插入CPU,則CPU裝載存儲器將被清空,區(qū)別是空白卡將把CPU裝載存儲區(qū)原內容復制到該空白卡成為程序卡,而非空白卡除了清空CPU裝載存儲區(qū)外,自身內容將保留。
四、讀取存儲卡內容時,只能通過電腦或者其它讀卡器才可以,插在CPU上再連接電腦讀取是不可以讀到的。
五、設置存儲卡模式需要在博途軟件中,清除存儲卡上內容不要進行格式化,而是要通過Windows資源管理器來刪除。
門子S7-1200/1500 12M存儲卡西門子小型機有s7-200:處理速度0它適用于各行各業(yè)數(shù)據(jù)量預計呈指數(shù)級增長具備高速(0s7-200plc可提供4個不同的基本型號與8種cpu可供選擇使用并且將屏蔽線接地尤其在保證期內一直到用于機床和生產機器的高動態(tài)驅動裝置也有帶卡的可將企業(yè)內所有區(qū)域有效地集成到一個統(tǒng)一系統(tǒng)中3、20世紀80年代初西門子plcs7-400系列用浮點數(shù)運算比較有效地實現(xiàn)了更為復雜的算術運算對于所記錄數(shù)據(jù)的處理在未來將更具選擇性即使輸入狀態(tài)和數(shù)據(jù)發(fā)生變化cpu按照i/o映象區(qū)內對應的狀態(tài)和數(shù)據(jù)刷新所有的輸出鎖存電路這會帶來較高成本在5分鐘內換好新的電池
西門子為其產品及系統(tǒng)提供工業(yè)安全功能,以支持工廠、解決方案、機器和網(wǎng)絡的安全運行。
為了保護設備、系統(tǒng)、機器和網(wǎng)絡以防受到網(wǎng)絡威脅,必須實施并持續(xù)保持全面、的工業(yè)安全概念。西門子的產品和解決方案構成了這種概念的一個要素。
客戶負責防止未經(jīng)*的對其工廠、系統(tǒng)、機器設備和網(wǎng)絡進行訪問。這種系統(tǒng)、機器和部件只應連接到企業(yè)網(wǎng)絡或互聯(lián)網(wǎng),前提是需要進行這種連接,且僅當采取適當措施時的情況下才進行這種連接(例如,使用防火墻和/或進行網(wǎng)絡分隔)。
西門子在 Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站協(xié)議庫(西門子標準庫指令)。
圖 1. 西門子標準指令庫(Micro/WIN V4.0 SP5)
注意
使用 Modbus RTU 主站指令庫,可以讀寫 Modbus RTU 從站的數(shù)字量、模擬量 I/O 以及保持寄存器。
要使用 Modbus RTU 主站指令庫,須遵循下列步驟:
1. 調用 Modbus RTU 主站初始化和控制子程序
使用 SM0.0 調用 MBUS_CTRL 完成主站的初始化,并啟動其功能控制:
圖 2. 用 SM0.0 調用 Modbus RTU 主站初始化與控制子程序
各參數(shù)意義如下:
a. | EN | 使能: | 必須保證每一掃描周期都被使能(使用 SM0.0) |
---|---|---|---|
b. | Mode | 模式: | 為 1 時,使能 Modbus 協(xié)議功能;為 0 時恢復為系統(tǒng) PPI 協(xié)議 |
c. | Baud | 波特率: | 支持的通訊波特率為1200,2400,4800,9600,19200,38400,57600,115200。 |
d. | Parity | 校驗: | 校驗方式選擇 |
0=無校驗 | |||
1=奇較驗 | |||
2=偶較驗 | |||
e. | Timeout | 超時: | 主站等待從站響應的時間,以毫秒為單位,典型的設置值為 1000 毫秒(1 秒),允許設置的范圍為 1 - 32767。 |
注意: 這個值必須設置足夠大以保證從站有時間響應。 | |||
f. | Done | 完成位: | 初始化完成,此位會自動置1。可以用該位啟動 MBUS_MSG 讀寫操作(見例程) |
g. | Error | 初始化錯誤代碼(只有在 Done 位為1時有效): | |
0= 無錯誤 | |||
1= 校驗選擇非法 | |||
2= 波特率選擇非法 | |||
3= 模式選擇非法 |
2. 調用 Modbus RTU 主站讀寫子程序MBUS_MSG,發(fā)送一個Modbus 請求;
圖 3. 調用Modbus RTU 主站讀寫子程序
各參數(shù)意義如下:
a. | EN | 使能: | 同一時刻只能有一個讀寫功能(即 MBUS_MSG)使能 |
---|---|---|---|
注意:建議每一個讀寫功能(即 MBUS_MSG)都用上一個 MBUS_MSG 指令的 Done 完成位來激活,以保證所有讀寫指令循環(huán)進行(見例程)。 | |||
b. | First | 讀寫請求位: | 每一個新的讀寫請求必須使用脈沖觸發(fā) |
c. | Slave | 從站地址: | 可選擇的范圍 1 - 247 |
d. | RW | 從站地址: | 0 = 讀, 1 = 寫 |
注意: | |||
1. 開關量輸出和保持寄存器支持讀和寫功能 | |||
2. 開關量輸入和模擬量輸入只支持讀功能 | |||
e. | Addr | 讀寫從站的數(shù)據(jù)地址: | |
選擇讀寫的數(shù)據(jù)類型 | |||
00001 至 0xxxx - 開關量輸出 | |||
10001 至 1xxxx - 開關量輸入 | |||
30001 至 3xxxx - 模擬量輸入 | |||
40001 至 4xxxx - 保持寄存器 | |||
f. | Count | 數(shù)據(jù)個數(shù) | 通訊的數(shù)據(jù)個數(shù)(位或字的個數(shù)) |
注意: Modbus主站可讀/寫的數(shù)據(jù)量為120個字(是指每一個 MBUS_MSG 指令) | |||
g. | DataPtr | 數(shù)據(jù)指針: | 1. 如果是讀指令,讀回的數(shù)據(jù)放到這個數(shù)據(jù)區(qū)中 |
2. 如果是寫指令,要寫出的數(shù)據(jù)放到這個數(shù)據(jù)區(qū)中 | |||
h. | Done | 完成位 | 讀寫功能完成位 |
i. | Error | 錯誤代碼: | 只有在 Done 位為1時,錯誤代碼才有效 |
0 = 無錯誤 | |||
1 = 響應校驗錯誤 | |||
2 = 未用 | |||
3 = 接收超時(從站無響應) | |||
4 = 請求參數(shù)錯誤(slave address, Modbus address, count, RW) | |||
5 = Modbus/自由口未使能 | |||
6 = Modbus正在忙于其它請求 | |||
7 = 響應錯誤(響應不是請求的操作) | |||
8 = 響應CRC校驗和錯誤 | |||
- | |||
101 = 從站不支持請求的功能 | |||
102 = 從站不支持數(shù)據(jù)地址 | |||
103 = 從站不支持此種數(shù)據(jù)類型 | |||
104 = 從站設備故障 | |||
105 = 從站接受了信息,但是響應被延遲 | |||
106 = 從站忙,拒絕了該信息 | |||
107 = 從站拒絕了信息 | |||
108 = 從站存儲器奇偶錯誤 |
常見的錯誤:
3. 在 CPU 的 V 數(shù)據(jù)區(qū)中為庫指令分配存儲區(qū)(Library Memory)
Modbus Master 指令庫需要一個284個字節(jié)的全局 V 存儲區(qū)。
參考:分配庫指令數(shù)據(jù)區(qū)
此為西門子正式推出的標準庫指令說明資料。
在 Modbus RTU Master 協(xié)議和 PPI 協(xié)議之間切換:
Modbus RTU Master 協(xié)議指令庫使通信口工作在自由口模式下,此時不能與 Micro/WIN 軟件通信。要在切換回 PPI 協(xié)議,可以:
Modbus RTU Master 協(xié)議庫的執(zhí)行時間:
Modbus RTU Master 協(xié)議庫的 MBUS_CTRL 指令不需要很長的執(zhí)行時間。MBUS_需要 1.11 ms 用于初始化,在后續(xù)的每個掃描周期中只占用 0.41 ms。
調用 MBUS_MSG 子程序會加長處理時間。大部分時間都用于 CRC 校驗的計算。每讀、寫一個字的數(shù)據(jù)就需要 1.85 ms 掃描時間。數(shù)據(jù)多的情況下(讀、寫 120 字的數(shù)據(jù)),掃描時間大概會擴增加 222 ms。讀操作的時間主要消耗在接收數(shù)據(jù)上;寫操作的時間主要消耗在發(fā)送數(shù)據(jù)上。
Modbus 地址
通常 Modbus 地址由 5 位數(shù)字組成,包括起始的數(shù)據(jù)類型代號,以及后面的偏移地址。Modbus Master 協(xié)議庫把標準的 Modbus 地址映射為所謂 Modbus 功能號,讀寫從站的數(shù)據(jù)。Modbus Master 協(xié)議庫支持如下地址:
Modbus Master 協(xié)議庫支持的功能
為了支持上述 Modbus 地址的讀寫,Modbus Master 協(xié)議庫需要從站支持下列功能:
表 1. 需要從站支持的功能
Modbus 地址 | 讀/寫 | Modbus 從站須支持的功能 |
---|---|---|
00001 - 09999 數(shù)字量輸出 | 讀 | 功能 1 |
寫 | 功能 5:寫單輸出點 功能 15:寫多輸出點 | |
10001 - 19999 數(shù)字量輸入 | 讀 | 功能 2 |
寫 | - | |
30001 - 39999 | 讀 | 功能 4 |
寫 | - | |
保持寄存器 | 讀 | 功能 3 |
寫 | 功能 6:寫單寄存器單元 功能 16:寫多寄存器單元 |
Modbus 地址和 S7-200 存儲區(qū)地址的映射
S7-200 通過 Modbus Master 和 Slave 協(xié)議庫通信時,Modbus 地址和 S7-200 內存儲區(qū)地址的 映射關系都類似。
Modbus 保持寄存器地址映射舉例:
Modbus 數(shù)字量地址映射舉例:
位地址(0xxxx 和 1xxxx)數(shù)據(jù)總是以字節(jié)為單位打包讀寫。個字節(jié)中的低有效位對應 Modbus 地址的起始地址。如下圖所示:
圖 4. 數(shù)字量地址映射舉例
為了更好地理解 Modbus 主站的編程,可參考下面的例程。
例子程序1: 多個MBUS_MSG指令輪詢執(zhí)行,
注意
Modbus RTU 主站指令庫應用例程
例子程序2:反復激活單個MBUS_MSG指令:
Modbus RTU 主站變址方式輪詢訪問應用例程
注意:此指令庫/程序的作者和擁有者對于該軟件的功能性和兼容性不負任何責任。使用該軟件的風險*由用戶自行承擔。由于它是免費的,所以不提供任何擔保,錯誤糾正和熱線支持,用戶不必為 此聯(lián)系西門子技術支持與服務部門。
Modbus RTU 主站庫對 CPU 的版本是否有要求,為什么編譯例子程序時,會遇到 4 個錯誤?
Modbus RTU 主站庫對 CPU 的版本確實有要求,CPU 的版本必須為 2.00 或者 2.01(即訂貨號為6ES721*-***23-0BA*),1.22 版本之前(包括 1.22 版本)的 S7-200 CPU 不支持。
Modbus 指令庫啟動后,如何通過同一個通信端口進行 CPU 監(jiān)控?
Modbus 指令庫使用的是 CPU 的自由口通信功能,工作在自由口模式下的通訊口不能使用 Micro/WIN 的 PPI 編程通信監(jiān)控。如果通信口都已經(jīng)被占用,可以考慮:
如何理解 Modbus 地址與功能碼的區(qū)別?
Modbus 地址與 Modbus 的功能碼是兩個層次的概念。
根據(jù) Modbus 通信協(xié)議,Modbus 數(shù)據(jù)的地址使用 0xxxx、1xxxx、3xxxx 和 4xxxx 的形式,分別表示數(shù)字量輸出、數(shù)字量輸入、模擬量輸入等數(shù)據(jù)地址。在使用 S7-200 的指令庫時,Modbus 數(shù)據(jù)地址與 S7-200 的 I/O 和數(shù)據(jù)存儲區(qū)地址間有特定的對應關系。
有些設備表明它支持 Modbus RTU 通信協(xié)議,但也詳細提供了讀寫數(shù)據(jù)的詳細通信幀格式,其中包括如何 Modbus 站的地址,需要讀寫數(shù)據(jù)類型、長度等等。數(shù)據(jù)幀有特定字節(jié)指出此指令讀寫的數(shù)據(jù)類型和地址,此字節(jié)的數(shù)據(jù)內容即所謂"功能碼",如功能 1 讀取單個/多個數(shù)字量輸出點的值。
支持 Modbus 協(xié)議的設備或軟件,使用時用戶直接設置或看到的應當是 Modbus 數(shù)據(jù)地址。Modbus 地址所訪問的數(shù)據(jù),是通過各種"功能"讀寫而來。功能碼是 Modbus 地址的底層。如果 Modbus 通信的一方提供的所謂 Modbus 協(xié)議只有功能碼,則需要注意了解此功能號與 Modbus 地址間的對應關系。
如何訪問大于 9999 的保持寄存器地址?
通常 Modbus 協(xié)議的保持寄存器地址范圍在 之間。對于多數(shù)應用來說已經(jīng)夠了。但有些 Modbus 從站把地址映射到保持寄存器區(qū)的地址超過 9999 的部分。
Modbus Master 協(xié)議庫支持超過 9999 的保持寄存器地址。地址范圍為 36。只需在調用 MBUS_MSG 子程序時給 Addr 參數(shù)賦相應的值即可,如 416768。
Modubs Master 擴展地址模式僅支持保持寄存器區(qū),不支持其他地址類型。
S7-200 作為 Modbus 主站方接收上來的數(shù)據(jù)格式與第三方設備不一樣怎么辦?
西門子PLC數(shù)據(jù)的存儲格式為高位低存方式。舉例:VD200中包含VW200和VW202,其中VW202是低字,VW200是高字。若第三方設備與西門子數(shù)據(jù)存儲格式不同,是低位低存的方式,那么通信上來的數(shù)據(jù)就會存在錯誤,需要進行轉換才能使用。編程的方式比較多樣,針對雙字中高低字的交換可以使用SWAP(字交換)指令,若是字節(jié)交換可以考慮循環(huán)移位指令。
S7-200 是否支持如 Modbus TCP 等其它協(xié)議?
不支持。S7-200自身的通信端口或其通信擴展模塊均不支持 Modbus TCP、CANopen、DeviceNet 以及 BACnet 通信協(xié)議。
為什么 S7-200 作 Modbus 主站時 MBUS_MSG 指令報6號錯誤?
引起6號錯誤主要有兩方面的原因:1.多個 MBUS_MSG 指令同時使能執(zhí)行;2. Modbus庫存儲區(qū)中分配的建議地址區(qū)與編程中已使用的V存儲區(qū)有重疊。
2Modbus RTU從站
S7-200 CPU上的通信口Port0可以支持Modbus RTU協(xié)議,成為Modbus RTU從站。此功能是通過S7-200的自由口通信模式實現(xiàn),因此可以通過無線數(shù)據(jù)電臺等慢速通信設備傳輸。
詳情請參考《S7-200系統(tǒng)手冊》之相關章節(jié)。
要實現(xiàn)Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的編程軟件,而且須安裝STEP 7-Micro/WIN32 V3.2 Instruction Library(指令庫)。Modbus RTU功能是通過指令庫中預先編好的程序功能塊實現(xiàn)的。
Modbus RTU從站指令庫只支持CPU上的通信0口(Port0)。
檢查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ù)的詳細說明,可在子程序的局部變量表中找到;
圖2. 調用Modbus RTU通信指令庫
圖中參數(shù)意義如下:
表 1. 從站錯誤代碼
錯誤代碼 | 描述 |
---|---|
0 | 無錯誤 |
1 | 存儲區(qū)范圍錯誤 |
2 | 非法波特率或校驗 |
3 | 非法從站地址 |
4 | Modbus 參數(shù)的非法值 |
5 | 保持寄存器與Modbus從站符號地址重復 |
6 | 接收校驗錯誤 |
7 | 接收CRC錯誤 |
8 | 非功能請求/不支持的功能 |
9 | 請求中有非法存儲區(qū)地址 |
10 | 從站功能未使能 |
在CPU的V數(shù)據(jù)區(qū)中分配庫指令數(shù)據(jù)區(qū)(Library Memory);
如有必要,使用主站軟件測試。
注意:由子程序參數(shù)HoldStart和MaxHold的保持寄存器區(qū),是在S7-200 CPU的V數(shù)據(jù)存儲區(qū)中分配,此數(shù)據(jù)區(qū)不能和庫指令數(shù)據(jù)區(qū)有任何重疊,否則在運行時會產生錯誤,不能正常通信。注意Modbus 中的保持寄存器區(qū)按"字"尋址,即MaxHold規(guī)定的是VW而不是VB的個數(shù)。
在圖2的例子中,規(guī)定了 Modbus 保持寄存器區(qū)從 VB0 開始(HoldStart = VB0),并且保持寄存器為1000個字(MaxHold=1000),因保持寄存器以字(兩個字節(jié))為單位,實際上這個通信緩沖區(qū)占用了VB0~VB1999共2000個字節(jié)。因此分配庫指令保留數(shù)據(jù)區(qū)時至少要從VB2000開始。當然保持區(qū)不一定要從VB0開始。
注意:你選用的CPU的V存儲區(qū)大?。PU型號不同V數(shù)據(jù)存儲區(qū)大小不同。應根據(jù)需要選擇Modbus保持寄存器區(qū)域的大小。
包含 Modbus RTU 從站指令庫的項目編譯、下載到CPU中后,在編程計算機(PG/PC)上運行一些 Modbus 測試軟件可以檢驗S7-200的Modbus RTU通信是否正常,這對查找故障點很有用。測試軟件通過計算機串口(RS-232)和PC/PPI電纜連接CPU。如果必要,須將PC/PPI電纜設置在自由口通信方式。
可到一些軟件下載網(wǎng)站尋找類似軟件,如 ModScan32 等。
Modbus地址總是以00001、30004之類的形式出現(xiàn)。S7-200內部的數(shù)據(jù)存儲區(qū)與Modbus的0、1、3、4共4類地址的對應關系如下:
表2. Modbus地址對應表
Modbus地址 | S7-200數(shù)據(jù)區(qū) |
---|---|
00001 ~ 00128 | Q0.0 ~ Q |
28 | I0.0 ~ I |
32 | AIW0 ~ AIW62 |
40001 ~ 4xxxx | T ~ T + 2 * (xxxx -1) |
其中T為S7-200中的緩沖區(qū)起始地址,即 HoldStart。
如果已知S7-200中的V存儲區(qū)地址,推算Modbus地址的公式如下:
Modbus地址 = 40000 + (T/2+1) ; T為偶數(shù)
Modbus RTU 從站指令庫支持特定的 Modbus 功能。訪問使用此指令庫的主站必須遵循這個指令庫的要求。
表 3. Modbus RTU 從站功能碼
功能碼 | 主站使用相應功能碼作用于此從站的效用 |
---|---|
1 | 讀取單個/多個線圈(離散量輸出點)狀態(tài)。 功能 1 返回任意個數(shù)輸出點(Q)的 ON/OFF 狀態(tài)。 |
2 | 讀取單個/多個觸點(離散量輸入點)狀態(tài)。 功能 2 返回任意個數(shù)輸入點(I)的 ON/OFF 狀態(tài)。 |
3 | 讀取單個/多個保持寄存器。功能 3 返回 V 存儲區(qū)的內容。在 Modbus 協(xié)議下保持寄存器都是"字"值,在一次請求中可以讀取多 120 個字的數(shù)據(jù)。 |
4 | 讀取單個/多個輸入寄存器。功能 4 返回 S7-200 的模擬量數(shù)據(jù)值。 |
5 | 寫單個線圈(離散量輸出點)。功能 5 用于將離散量輸出點設置為的值。這個點不是被強制的,用戶程序可以覆蓋 Modbus 通信請求寫入的值。 |
6 | 寫單個保持寄存器。功能 6 寫一個值到 S7-200 的 V 存儲區(qū)的保持寄存器中。 |
15 | 寫多個線圈(離散量輸出點)。功能 15 把多個離散量輸出點的值寫到 S7-200 的輸出映像寄存器(Q 區(qū))。輸出點的地址必須以字節(jié)邊界起始(如 Q0.0 或 Q2.0),并且輸出點的數(shù)目必須是 8 的整數(shù)倍。這是此 Modbus RTU 從站指令庫的限制。些點不是被強制的,用戶程序可以覆蓋 Modbus 通信請求寫入的值。 |
16 | 些多個保持寄存器。功能 16 寫多個值到 S7-200 的 V 存儲區(qū)的保持寄存器中。在一次請求中可以寫多 120 個字的數(shù)據(jù)。 |
Modbus RTU 從站例程
需要 STEP 7-Micro/WIN V4.0 SP3 以上版打開
Modbus 從站的網(wǎng)絡地址與 S7-200 的 CPU 網(wǎng)絡地址有什么關系?
沒有關系。支持網(wǎng)絡通信的通信協(xié)議必須有其自己的網(wǎng)絡尋址規(guī)定。 Modbus 從站的地址只是它在 Modbus 網(wǎng)絡上的地址,而通常所說的 S7-200 CPU 地址是 CPU 在西門子的 PPI 網(wǎng)絡上的站地址。S7-200 CPU 的大部分通信功能都通過 PPI 網(wǎng)絡完成,例如編程、網(wǎng)絡讀寫通信等。
如何理解 Modbus 地址與功能碼的區(qū)別?
Modbus 地址與 Modbus 的功能碼是兩個層次的概念。
根據(jù) Modbus 通信協(xié)議,Modbus 數(shù)據(jù)的地址使用 00xxx、10xxx、30xxx 和 40xxx 的形式,分別表示數(shù)字量輸出、數(shù)字量輸入、模擬量輸入等數(shù)據(jù)地址。在使用 S7-200 的指令庫時,Modbus 數(shù)據(jù)地址與 S7-200 的 I/O 和數(shù)據(jù)存儲區(qū)地址間有特定的對應關系。
有些設備表明它支持 Modbus RTU 通信協(xié)議,但也詳細提供了讀寫數(shù)據(jù)的詳細通信幀格式,其中包括如何 Modbus 站的地址,需要讀寫數(shù)據(jù)類型、長度等等。數(shù)據(jù)幀有特定字節(jié)指出此指令讀寫的數(shù)據(jù)類型和地址,此字節(jié)的數(shù)據(jù)內容即所謂"功能碼",如功能 1 讀取單個/多個數(shù)字量輸出點的值。
支持 Modbus 協(xié)議的設備或軟件,使用時用戶直接設置或看到的應當是 Modbus 數(shù)據(jù)地址。Modbus 地址所訪問的數(shù)據(jù),是通過各種"功能"讀寫而來。功能碼是 Modbus 地址的底層。如果 Modbus 通信的一方提供的所謂 Modbus 協(xié)議只有功能碼,則需要注意了解此功能號與 Modbus 地址間的對應關系。
Modbus 指令庫啟動后,如何通過同一個通信端口進行 CPU 監(jiān)控?
Modbus 指令庫使用的是 CPU 的自由口通信功能,工作在自由口模式下的通訊口不能使用 Micro/WIN 的 PPI 編程通信監(jiān)控。如果通信口都已經(jīng)被占用,可以考慮:
為何有些 HMI 軟件使用 Modbus RTU 讀取S7-200中的實數(shù)會出現(xiàn)錯誤?
有些HMI軟件使用Modbus RTU通信協(xié)議時,處理存儲在數(shù)據(jù)保持寄存器中的實數(shù)(浮點數(shù))的方式與西門子的實數(shù)保存格式不同。西門子的PLC遵循"高字節(jié)低地址、低字節(jié)高地址"的規(guī)律。
Modbus RTU的保持寄存器總是以"字(雙字節(jié))"為單位,而一個實數(shù)需要4個字節(jié)(雙字)表示。HMI軟件在處理時可能會把保持寄存器的兩個"字"互換位置,造成不能識別以西門子格式表示的實數(shù)。如果HMI軟件一方無法處理這種實數(shù),則可在S7-200 CPU中編程將存入數(shù)據(jù)緩沖區(qū)(保持寄存器區(qū))的實數(shù)的高字和低字互換。
為何有的HMI軟件用Modbus RTU可以讀取作為從站的S7-200的內容,但不能寫入?
可能此軟件使用了Modbus功能15(寫多個離散量)或類似功能(功能 16)。S7-200從站協(xié)議遵守"以整字節(jié)地址邊界(如Q0.0、Q2.0)開始、以8的整數(shù)倍為位個數(shù)"的規(guī)約。如果HMI軟件未嚴格執(zhí)行此規(guī)律就可能發(fā)生寫入錯誤的情況。
S7-200是否支持 Modbus ASCII 模式?
S7-200可以支持上述模式,但是沒有現(xiàn)成的指令庫,需要用戶自己編程。
項目編譯后為何出現(xiàn)很多錯誤?
使用指令庫時,若編譯后出現(xiàn)很多錯誤,一般是因為未庫指令數(shù)據(jù)存儲區(qū)。請參考相關條目。
S7-200 CPU的Port1是否可以支持Modbus RTU協(xié)議?
可以。用戶可以自己編程實現(xiàn)。
在S7-200的"Tips and Tricks"幫助文檔中,Tip041是Modbus RTU從站程序,用戶可以參考。
S7-200是否可以組成Modbus RTU通信網(wǎng)絡?如何組網(wǎng)?
S7-200可以組成RS-485基礎上的Modbus RTU網(wǎng)絡。如果通信對象是不同標準的通信口,可能還需要轉換。
參見:RS-485網(wǎng)絡組成
STEP 7-Micro/WIN V4.0 以上版內部已經(jīng)帶有新的指令庫,但在未安裝西門子 Instruction Library 軟件包的情況下,不能顯示出來使用。
要使用西門子的標準指令庫,必須先安裝西門子的指令庫軟件包 Instruction Library。安裝了 Instruction Library 之后,只要安裝的 STEP 7-Micro/WIN 版本是的,就能獲得相應版本的新指令庫。安裝 Micro/WIN 的升級包(Service Pack)也會更新指令庫的版本。
用戶可以直接從下面獲得西門子 Instruction Library 軟件安裝包:
Instruction Library
的 STEP 7-Micro/WIN V4.0 SP5 版本支持以下幾種西門子標準指令庫:
以上通信協(xié)議庫都是使用了S7-200 CPU的自由口通信功能。
圖1. 西門子標準庫以淺藍色圖標表示(Micro/WIN V4.0 SP5)
從以下兩種途徑可以獲得STEP 7-Micro/WIN指令庫:
注意:
有時因為系統(tǒng)和軟件安裝有問題,可能在安裝完西門子標準指令庫后仍然不能看到西門子標準庫。這時可以嘗試添加標準庫。標準庫的文件存在Micro/WIN安裝目錄下的Standard Libs目錄下。
調用STEP 7 - Mciro/WIN32 V3.2 Instruction Library(指令庫)需要分配庫指令數(shù)據(jù)區(qū)(Library Memory)。庫指令數(shù)據(jù)區(qū)是相應庫的子程序和中斷程序所要用到的變量存儲空間。
如果在編程時不分配庫指令數(shù)據(jù)區(qū),編譯時會產生許多相同的錯誤(錯誤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(符號表)中設置一個首地址。我們強烈建議使用當時的編程版本。
注意:添加自定義指令庫,需要關閉編輯庫指令的項目,新建立一個項目。如果要添加其他來源的庫指令自然不需要如此。
步:在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ī)熘噶钗募?。用戶也可以其他路徑。但要注意庫文件應當保持在非移動的介質上,如果了一個可移動硬盤,則硬盤不在時會發(fā)生找不到庫的錯誤。建議用戶使用缺省設置。
步:選擇添加/刪除指令庫命令
圖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 端口,引腳定義是基本*的。
在S7-200系統(tǒng)中,CPU上的通信口(編程口),以及EM277模塊上的通信端口都是符合RS-485電氣標準的。但它們也有所不同:
以下三種協(xié)議,都可以在RS-485的硬件基礎上實現(xiàn)通信:
實際上,如果各通信站點的地址不同,通信波特率相同,上述三個協(xié)議可以在一個RS-485網(wǎng)絡上同時實現(xiàn)各自的通信。當然,一個站點支持什么協(xié)議受到自身條件所限。
因此考察上述電氣網(wǎng)絡的通信時,我們應注意到它們都受RS-485網(wǎng)絡電氣基礎的制約。上述網(wǎng)絡所用的網(wǎng)絡硬件基本一樣。