應(yīng)用領(lǐng)域 | 化工,電子 | 重量 | 11kg |
---|
SIEMENS 可編程控制器
1、 SIMATIC S7 系列PLC、S7200、s71200、S7300、S7400、ET200
2、 邏輯控制模塊 LOGO!230RC、230RCO、230RCL、24RC、24RCL等
DC 1.3A、2.5A、3A、5A、10A、20A、40A西門子6ES7313-6BG
參考價(jià) | 面議 |
更新時(shí)間:2020-04-23 12:01:39瀏覽次數(shù):146
聯(lián)系我們時(shí)請(qǐng)說明是化工儀器網(wǎng)上看到的信息,謝謝!
通過編程可以選擇自由端口模式來控制S7-200的串行通信口。當(dāng)選擇了自由端口模式,用戶程序通過使用接收中斷、發(fā)送中斷、發(fā)送指令和接收指令來控制通信口的操作。當(dāng)處于自由端口模式時(shí),通信協(xié)議*由梯形圖程序控制。
SMB30(對(duì)于端口0)和SMB130(對(duì)于端口1,如果使用的S7-200有兩個(gè)端口的話)被用于選擇波特率和校驗(yàn)類型。當(dāng)S7-200處于STOP模式時(shí),自由端口模式被禁止,重新建立正常的通信(例如:編程設(shè)備的訪問)。
在簡(jiǎn)單的情況下,可以只用發(fā)送指令(XMT)向打印機(jī)或者顯示器發(fā)送消息。其他例子包括與條碼閱讀器、稱重計(jì)和焊機(jī)的連接在每種情況下,都必須編寫程序,來支持在自由端口模式下與S7-200通信設(shè)備所使用的協(xié)議。
只有當(dāng)S7-200處于RUN模式時(shí),才能進(jìn)行自由端口通信。要使能自由端口模式,應(yīng)該在SMB30(端口0)或者SMB130(端口1)的協(xié)議選擇區(qū)中設(shè)置相應(yīng)數(shù)字。處于自由端口通信模式時(shí),不能與編程設(shè)備通信。
可以使用特殊寄存器位SM0.7來控制自由端口模式。SM0.7反映的是操作模式開關(guān)的當(dāng)前位置。當(dāng)SM0.7等于0時(shí),開關(guān)處于TERM位置;當(dāng)SM0.7=1時(shí),操作模式開關(guān)位于RUN位置。如果只有模式開關(guān)處于RUN位置時(shí),才允許自由端口模式,可以將開關(guān)改變到其他位置上,使用編程設(shè)備監(jiān)控S7-200的運(yùn)行。
SMB30和SMB130分別配置通信口0和通信口1,并且為自由端口操作提供波特率、校驗(yàn)和數(shù)據(jù)位數(shù)的選擇。
發(fā)送指令能夠發(fā)送一個(gè)或多個(gè)字節(jié)的緩沖區(qū),多為255個(gè)。如果有一個(gè)中斷程序連接到發(fā)送結(jié)束事件上,在發(fā)送完緩沖區(qū)中的后一個(gè)字符時(shí),則會(huì)產(chǎn)生一個(gè)中斷(對(duì)端口0為中斷事件9,對(duì)端口1為中斷事件26)。
用戶可以不使用中斷來執(zhí)行發(fā)送指令(例如:向打印機(jī)發(fā)送消息)。通過監(jiān)視SM4.5或者SM4.6信號(hào),判斷發(fā)送是否完成。
把字符數(shù)設(shè)置為0并執(zhí)行XMT指令,可以產(chǎn)生一個(gè) BREAK狀態(tài)。這樣產(chǎn)生的 BREAK狀態(tài),在線上會(huì)持續(xù)以當(dāng)前波特率傳輸16位數(shù)據(jù)所需要的時(shí)間。發(fā)送 BREAK的操作和發(fā)送其他任何消息的操作是一樣的。當(dāng) BREAK完成時(shí),產(chǎn)生一個(gè)發(fā)送中斷并且SM4.5或者SM4.6反應(yīng)發(fā)送操作的當(dāng)前狀態(tài)。
接收指令能夠接收一個(gè)或多個(gè)字節(jié)的緩沖區(qū),多為255個(gè)。如果有一個(gè)中斷程序連接到接收消息完成事件上,在接收完緩沖區(qū)中的后一個(gè)字符時(shí),S7-200會(huì)產(chǎn)生一個(gè)中斷(對(duì)端口0為中斷事件23,對(duì)端口1為中斷事件24)。用戶可以不使用中斷,通過監(jiān)視SMB86(端口0)或者SMB186(端口1)來接收消息。當(dāng)接收指令未被激活或者已經(jīng)被中止上時(shí),這一字節(jié)不為0;當(dāng)接收正在進(jìn)行時(shí),這一字節(jié)為0。
接收指令可以通過SMB87(端口0)或者SMB187(端口1)來選擇消息的起始和結(jié)束條件。
接收指令使用接收消息控制字節(jié)(SMB87或SMB187)中的位來定義消息起始和結(jié)束條件。當(dāng)接收指令執(zhí)行時(shí),在接收口上有來自其他器件的信號(hào),接收消息功能有可能從一個(gè)字符的中間開始接收字符,從而導(dǎo)致校驗(yàn)錯(cuò)誤和接收消息功能的中止。
如果校驗(yàn)沒有被使能,接收到的消息有可能包含錯(cuò)誤字符。當(dāng)起始條件被為一個(gè)特定的起始字符或任意字符時(shí),這種情況有可能發(fā)生。接收指令支持幾種消息起始條件。包含一個(gè)停頓或者一個(gè)空閑線檢測(cè)的起始條件,通過在將字符放到消息緩沖區(qū)之前,用一個(gè)字符的起始來強(qiáng)制接收消息功能和消息的起始相同步,來避免以上問題。
Modbus 從站的網(wǎng)絡(luò)地址與 S7-200 的 CPU 網(wǎng)絡(luò)地址有什么關(guān)系?
沒有關(guān)系。支持網(wǎng)絡(luò)通信的通信協(xié)議必須有其自己的網(wǎng)絡(luò)尋址規(guī)定。 Modbus 從站的地址只是它在 Modbus 網(wǎng)絡(luò)上的地址,而通常所說的 S7-200 CPU 地址是 CPU 在西門子的 PPI 網(wǎng)絡(luò)上的站地址。S7-200 CPU 的大部分通信功能都通過 PPI 網(wǎng)絡(luò)完成,例如編程、網(wǎng)絡(luò)讀寫通信等。
如何理解 Modbus 地址與功能碼的區(qū)別?
Modbus 地址與 Modbus 的功能碼是兩個(gè)層次的概念。
根據(jù) Modbus 通信協(xié)議,Modbus 數(shù)據(jù)的地址使用 00xxx、10xxx、30xxx 和 40xxx 的形式,分別表示數(shù)字量輸出、數(shù)字量輸入、模擬量輸入等數(shù)據(jù)地址。在使用 S7-200 的指令庫(kù)時(shí),Modbus 數(shù)據(jù)地址與 S7-200 的 I/O 和數(shù)據(jù)存儲(chǔ)區(qū)地址間有特定的對(duì)應(yīng)關(guān)系。
有些設(shè)備表明它支持 Modbus RTU 通信協(xié)議,但也詳細(xì)提供了讀寫數(shù)據(jù)的詳細(xì)通信幀格式,其中包括如何 Modbus 站的地址,需要讀寫數(shù)據(jù)類型、長(zhǎng)度等等。數(shù)據(jù)幀有特定字節(jié)指出此指令讀寫的數(shù)據(jù)類型和地址,此字節(jié)的數(shù)據(jù)內(nèi)容即所謂"功能碼",如功能 1 讀取單個(gè)/多個(gè)數(shù)字量輸出點(diǎn)的值。
支持 Modbus 協(xié)議的設(shè)備或軟件,使用時(shí)用戶直接設(shè)置或看到的應(yīng)當(dāng)是 Modbus 數(shù)據(jù)地址。Modbus 地址所訪問的數(shù)據(jù),是通過各種"功能"讀寫而來。功能碼是 Modbus 地址的底層。如果 Modbus 通信的一方提供的所謂 Modbus 協(xié)議只有功能碼,則需要注意了解此功能號(hào)與 Modbus 地址間的對(duì)應(yīng)關(guān)系。
Modbus 指令庫(kù)啟動(dòng)后,如何通過同一個(gè)通信端口進(jìn)行 CPU 監(jiān)控?
Modbus 指令庫(kù)使用的是 CPU 的自由口通信功能,工作在自由口模式下的通訊口不能使用 Micro/WIN 的 PPI 編程通信監(jiān)控。如果通信口都已經(jīng)被占用,可以考慮:
加一個(gè)通信模塊(如 EM 277、CP 243-1、EM 241 等)擴(kuò)展出一個(gè)編程通信口
中止自由口模式,可以將 CPU 上的模式開關(guān)從 RUN 撥到 STOP;或者保持處于 RUN 狀態(tài),用程序停止指令庫(kù)的 Modbus 模式(參見指令庫(kù)應(yīng)用)
為何有些 HMI 軟件使用 Modbus RTU 讀取S7-200中的實(shí)數(shù)會(huì)出現(xiàn)錯(cuò)誤?
有些HMI軟件使用Modbus RTU通信協(xié)議時(shí),處理存儲(chǔ)在數(shù)據(jù)保持寄存器中的實(shí)數(shù)(浮點(diǎn)數(shù))的方式與西門子的實(shí)數(shù)保存格式不同。西門子的PLC遵循"高字節(jié)低地址、低字節(jié)高地址"的規(guī)律。
Modbus RTU的保持寄存器總是以"字(雙字節(jié))"為單位,而一個(gè)實(shí)數(shù)需要4個(gè)字節(jié)(雙字)表示。HMI軟件在處理時(shí)可能會(huì)把保持寄存器的兩個(gè)"字"互換位置,造成不能識(shí)別以西門子格式表示的實(shí)數(shù)。如果HMI軟件一方無(wú)法處理這種實(shí)數(shù),則可在S7-200 CPU中編程將存入數(shù)據(jù)緩沖區(qū)(保持寄存器區(qū))的實(shí)數(shù)的高字和低字互換。
為何有的HMI軟件用Modbus RTU可以讀取作為從站的S7-200的內(nèi)容,但不能寫入?
可能此軟件使用了Modbus功能15(寫多個(gè)離散量)或類似功能(功能 16)。S7-200從站協(xié)議遵守"以整字節(jié)地址邊界(如Q0.0、Q2.0)開始、以8的整數(shù)倍為位個(gè)數(shù)"的規(guī)約。如果HMI軟件未嚴(yán)格執(zhí)行此規(guī)律就可能發(fā)生寫入錯(cuò)誤的情況。