用戶使用CPU315-2DP的CPU實現一個很復雜的工藝控制,時間要求很嚴格,有很多時間序列,例如A點信號為1后觸發定時器1,定時5秒鐘,時間到后,輸出一電平給B點,觸發定時器2,延遲3秒后,采集C傳感器的值,觸發定時器3,并每隔10秒計算一下(有個公式)等等,類似這樣的工藝有很多段,每段都不太一樣,使用定時器數量也不一樣,用戶程序編了,但還沒完成,因為定時器不夠用了,超過了plc能提供的定時器數量256個,所以就有了上面的那些報怨。
總結一下,用戶報怨西門子plc能提供的定時器數量太少不夠用,不能滿足用戶的需求(終于聽明白了)。
聽完用戶的問題,用戶也平靜了許多,我心里也有底了。首先我沒有給用戶直接的答案,而是先關心一下用戶調試程序的困難,我只是說了句:“您調試程序是不是不太方便???”我的話音剛落,用戶的話匣子又打開了,訴苦啊,調試不方便,定時器走亂了,互相條件依存太多, ……總之沒有好用的地方,快被折磨死了。聽完用戶所言后提醒自己,別再往用戶“傷口” 上撒鹽了,還是開藥方吧,先把病看好了,接下來再聊別的。
不夠用可以使用IEC定時器(SFB3-SFB5),只要CPU容量夠用,數量沒有限制,顯然用戶不知道此信息,否則他就不會報怨定時器不夠用了,如果真的使用了IEC定時器編程,估計用戶的程序會有一半是定時器的程序了,所以我先沒有告訴他,免得又引出很多話,用戶也不容易啊。
那給用戶開了什么藥方了呢?
方子很簡單:定時器一個,加法指令一個(MW0=MW0+1)。
使用方法:因為用戶所有定時器使用的時間單位都是秒,于是就將T1設定成1秒的定時器,程序運行后啟動定時器,然后在定時時間到后執行MW0=MW0+1,即每定時到1秒鐘MW0就加1,這樣通過判斷MW0的值就會得出相應的計時時間(秒),并能判斷出時間過了多少秒,例如MW0=10,就是10秒,當MW0數值達到最大定時時間值后可以清零。這樣就很好的滿足了用戶的需求,解決了問題,同時程序結構比較清晰,不容易亂。