產品詳情
6ES73525AH010AE0西門子FM352-5高速布爾處理器
|
SIMATIC S7-300,FM352-5 帶有 NPN 輸出端, 高速布爾值中央處理器, 針對高速 算術運算,12 DI,8 DO, 1 個編碼器接口針對 RS-422-增量/SSI 編碼器
|
SIEMENS西門子
上海麗丞工業自動化設備有限公司
全新原裝,質量保證,保修一年
專業銷售及維修西門子各類工控自動化配件;
:S7-200CN、S7-200SMART、S7-300、S7-400、 S7-1200、S7-1500、ET200、LOGO邏西門子可編程控制器輯控制模塊
西門子HMI人機界面:觸摸屏
西門子變頻器:MM420、MM430、MM440、G110、G120、6SE70
西門子工業以太網:通訊網卡、通訊電纜、通訊接頭、總線連接器 工控機、交換機、自動化軟件等系型號齊全,快速報價,買我們的產品無憂所值,我們的產品都承諾質保一年,讓您買的省心舒心,用的放心!
曾經最初學習PLC STL編程的時候,發現很多老外的程序最后都喜歡加上SET/SAVE/CLR 這樣的指令,一直也沒搞懂為啥,心想可能就是各人習慣吧,沒啥影響。但是今天的一個小CASE,讓我頓時醒悟,到底什么叫嚴謹,且讓我慢慢道來。如圖1所示,客戶程序希望實現的功能是,當M0.0=0,跳轉指令不執行,則對M0.2置位;M0.0=1, 跳轉指令執行,則M0.2保持復位狀態。我們在程序的開始編寫邏輯,監控結果如圖1,可以看到邏輯沒有問題。但是,我們的邏輯如果處于程序的中間位置,那會是什么情況呢,我們來看看。如圖2,網絡1中只是加了一條指令,但是在網絡2中我們可以看到,此時無論M0.0是0還是1,M0.2都處于置位狀態,也就是說跳轉指令根本不執行,這是為什么呢?

圖1

圖2
首先,我們看一下“JC”指令,“JC”指令跳轉的條件是RLO=1,RLO存儲的是邏輯運算的結果,如圖3,我們通過監控可以看到,當前,M0.0雖然為1,但是RLO位仍然是0。網絡1和網絡2雖然處于不同的網絡,但是邏輯運算并沒有因此結束,也就是說一系列的與或非運算沒有結束前,不會開始一個新的邏輯運算(我們從狀態字的第一位 /FC,也可以判斷, /FC=0,表示邏輯運算結束,從下一個邏輯指令開始一次新的邏輯運算,如圖3)。所以此時RLO位的結果不光取決于M0.0,還取決于網絡1中的M20.0的狀態, 這當然不是我們希望實現的了。

圖3
那我們該如何避免這種情況呢?也就是說要M0.0和 之前的邏輯運算脫離關系呢?其實,我們的好多指令,都有這樣的功能,比如 SET/R/=/CLR等,這些指令執行后,都會結束當前的邏輯運算,從下個邏輯指令開始新的邏輯運算,/FC=0,如圖4所示,這樣就可以避免網絡1的影響。

圖4
所以說,細節決定成敗啊,尤其是對我們初次接觸STL編程來說,該注意的東西還是很多的!小小的跳轉指令里還是有好多智慧的!
6ES73525AH010AE0西門子FM352-5高速布爾處理器


