可以*應對每個應用的SIMATIC控制器
我公司的SIMATIC系列控制器解決方案可以根據用戶的需求提供*的可編程邏輯控制器。無論是控制任務,集成技術或數據存檔-此報告小規模的自動化任務到非常復雜的系統解決方案 -安全模式或標準條件下的控制器 -SIMATIC控制器代表了貴公司未來安全的投資,并允許您以迅速,靈活,成本效益的方式應對新的挑戰。
上海翰粵是西門子工控及自動化產品*分銷商咨詢!
:鄭轅鴻(銷售工程師)
:
(): 傳真():
:zx2013888 :www.hanyue.cc
:
?
FM350-2高速計數模塊的一個小故事
zui近在上遇到了一個關于FM350-2高速計數模塊故障診斷的問題,有一定的代表性,這里和大家分享一下。
我們先來回顧一下這個問題及解決的過程。
客戶:我的FM350-2(6ES7350-2AH01-0AE0)上電后SF燈亮,報錯。
我:給FM350-2供電了嗎?(模塊不供電會報錯)
客戶:供電了。
我:怎么給模塊分配的參數,有沒有接編碼器?
客戶:什么都沒改,采用默認設置,沒有接設備。我以前這樣用過好幾次,沒有碰到這種問題。
我:(在我的記憶里也是不應該報錯,因為FM350-2有默認的參數,只要供上電后就可以工作,不會出錯),監控一下FM350-2的診斷信息,報什么錯誤呢?
客戶:非法的時間戳,模塊沒有分配參數……,詳見圖1,圖2。
圖1 FM350-2診斷診斷緩沖區信息
圖2 FM350-2診斷中斷信息
我:(沒有印象)我先測試一下,稍后和您!找來FM350-2模塊(6ES7350-2AH01-0AE0),進行硬件組態、編譯、下載程序,然后運行CPU,FM350-2正常,試了幾次都正常,不能復現出客戶的故障。
怎么辦呢,問問同事吧,都說沒有碰到過類似的問題。
接著測試,模擬了可能會出現的錯誤,包括背板總線沒有接好、前連接器沒有插好、模塊接線錯誤等,都沒有出現同樣的錯誤。還有其他原因嗎?
對了,用ET200M站下面的FM350-2模塊組態一下(實際應該在硬件目錄中選擇在SIMATIC 300站下面的FM350-2模塊),編譯下載、運行,FM350-2的SF燈亮了(激動中),趕緊監視一下錯誤信息吧(保佑),果然,同樣的錯誤信息出現了(狂喜)。趕緊打給客戶。
我:您在組態時,從哪里選擇的FM350-2模塊。
客戶:就在SIMATIC 300站下面選擇的啊
我:……? 如果模塊位置選擇錯誤時會出現這種問題,您再確認一下。
客戶:確定沒有出現這種問題。白激動了,不是這個原因,還有其它原因?
沒辦法,再和客戶深入溝通一下吧!詳細了解客戶怎么做的。
客戶說他連軟件包都沒裝,直接將FM350-2組態到機架上。這提醒了我,我在組態FM350-2模塊時,我每次都打開了FM350-2的參數分配窗口,如圖3所示,并默認保存了參數。
圖3FM350-2的參數分配窗口
好,按照客戶的操作步驟,只將FM350-2組態到機架上,不打開參數分配窗口,直接下載的程序,運行CPU后,果然FM350-2的SF燈亮了。在線監控模塊的診斷信息,上面的錯誤信息又出現了。
反復測試了幾次都出現了相同的錯誤,即只要在組態時不打開FM350-2的參數分配窗口,只是將模塊插入到機架上,進行直接的編譯下載就會出現錯誤。接著我又測試了當FM350-2模塊位置選擇錯誤時的情況。測試結果是,當模塊位置選擇錯誤時,只要打開了FM350-2模塊的參數分配窗口,進行了保存編譯,就不會出現錯誤。前面出現錯誤是因為和客戶犯了同樣的錯誤。
原因找到了,告之用戶要先將FM350-2軟件包裝上,并在組態FM350-2模塊時,打開模塊的參數份配窗口,進行參數保存。
客戶按照我說的做后,問題解決。
簡單來總結一下:問題的出現與我們平時的操作習慣有關。模塊組態后我們自然應該給他分配參數,所以該做的工作還是都按部就班地做好,以避免不必要的麻煩。這里說起來輕松,但類似這樣的問題排查起來會很費周折,還是在平時的工作中多注意一些吧。
?
如何利用OB1的臨時變量讀取CPU系統時鐘
今天遇一用戶,需要讀出CPU315-2DP的系統時鐘,與設定的時間作比較,然后出各班的報表數據。可用戶就是不理解Date_And_Time的數據類型,在程序里怎么寫,都是紅色的,郁悶死了,客戶自己說都弄一天了,說了很多和技術不相關的內容,用戶zui后的要求就是一步一步教他怎么做。沒辦法,誰讓咱們的數據類型如此“復雜”呢?
不過雖然讀取和設置系統時鐘很簡單,總會有人問,如何用SFC0和SFC1來設置和讀取時鐘,今天就和大家說一說。 首先Date_And_Time是一復雜數據類型,包含8個字節,Byte0-Byte7對應年、月、日、時、分、秒、毫秒、星期,對應關系如下表所示:
Byte6和Byte7的高4位組合成毫秒,格式是BCD碼,Byte6是高位,Byte7是低位 我們可以在DB塊里定義time1和time2變量,數據類型是DATE_AND_TIME,如下圖:
在符號表中定義DB1的符號名為system-time,如下圖:
然后調用SFC0和SFC1就可以了,大家可以參考下面的程序(可以將程序拷貝到Step7中,然后可以轉成梯形圖程序),具體使用時間時可以直接尋址DB1.DBB0 – 年 ……DB1.DBB7(低4位) – 星期,DB1.DBB8 – 年 ……DB1.DBB15(低4位) – 星期。(這段程序和用戶解釋了很長時間,用戶就是理解不了,難啊。。。)
OB1:"Main Program Sweep (Cycle)"
Network1:
A M 10.0
JNB _001
CALL SFC 0
PDT :="system-time".time1
RET_VAL:=MW100
_001: NOP 0
Network2:
CALL "READ_CLK"
RET_VAL:=MW102
CDT :="system-time".time2
NOP 0
因為客戶用SFC1讀取時鐘不是很清楚,還有就是他對時間誤差的要求到分就可以,所以*一種簡單的方法,不知大家之前用過沒有,就是使用OB1的臨時變量OB1_DATE_TIME(在OB1的Interface – TEMP中可以找到),此變量也是DATE_AND_TIME的數據類型,對應的臨時變量地址是LB12 – LB19,同樣對應年 – 星期,符合上面表格中的結構,我們只需要使用Move指令就可以得到PLC的系統時間了。
例如我們可以將LD12 Move 到MD0、LD16 Move 到MD4中,然后在程序中尋址MB0 –MB7就可以了。您可以參考下面的程序(可以將程序拷貝到Step7中,然后可以轉成梯形圖程序)。需要注意,OB1臨時變量讀出的時間會受OB1掃描周期的影響,例如OB1掃描周期是15ms左右,那么從OB1中讀出的時間精度應該就是15ms左右。
OB1:"Main Program Sweep (Cycle)"
Network1:
A( L
LD 12
T MD 0
SET
SAVE
CLR
A BR )
JNB _002 L
LD 16
T MD 4 _
002: NOP 0
如果需要設置系統時鐘,還需要使用SFC0來實現。
客戶使用此種方法很快就解決了問題,當然有簡單的方式就是用簡單的方式了。我也郁悶,難道真是Step7程序太復雜了,可能吧,哈哈,多學習就會越來越簡單,而且會越來越靈活。用戶朋友們,讓咱們一起努力,讓我們的技術越來越好,經驗越來越豐富。
西門子代理商:/(鄭轅鴻)