西門子PLC常見的20個問題



導讀

西門子PLC占據了全球PLC市場的半壁江山,如今,又在系統集成架構和網絡組態上發力,一輪新的搶占和瓜分市場的戰役已經拉開序幕,并且愈演愈烈。作為工控行業PLC第一品牌,對其進行多角度全面了解非常有必要。我們一起來探討西門子PLC常見的20個問題。



1

使用定時器加自復位做一個不斷重復的計時,調用其他功能或子程序時,為何看起來工作不規律?


  請注意《S7-200西門子PLC系統手冊》中,關于三種定時器刷新規律的描述。


  按這種方法使用定時器時,定時器的置位、復位可能與程序掃描周期不配合,存在造成上述問題的機制。定時比較短的定時任務應使用“定時中斷”功能,這樣更為可靠。



2

編了一個利用定時器的程序,在編譯時已經通過,為何下載到CPU中時提示出錯?


  這種情況往往是調用的定時器號與定時器類型不配合造成的。參見幫助的表格,如T7只能用作TONR,而不能用于TON或TOF。



3

定時中斷(SMB34/SMB35)最長定時為255ms,如何實現更長時間的定時?


  可以采用T32/T96中斷,最長時間可到32.767s。在定時中斷服務程序中對進入中斷的次數進行計數,也能實現更長時間的中斷延時。



4

定時中斷個數不夠怎么辦?


  每個定時中斷服務程序不一定只能處理一項定時任務,可以把幾個任務放在一個定時中斷服務程序中。


  對于定時間隔不同的任務,可以計算出它們的定時長度的最大公約數,以此作為定時中斷的時間設置。在中斷服務程序內部對中斷事件進行計數,據此編程別處理不同的任務。



5

使用子程序時,為何動作只能執行一次,或者某些狀態不能結束?


  如果發生動作不能重復執行,或者狀態不能結束(像鎖死了一樣),而這些功能都與子程序有關時,請檢查是否有條件調用子程序。調用子程序的條件在上述動作執行后,或者進入某個狀態后不再有效,無法再次“激活”,而脫離上述狀態或復位的指令正好在子程序內,必然造成上述的現象。



6

帶形式參數的子程序,定義為OUT類型的變量為何會在多次調用子程序時互相干擾?


  那是因為定義為OUT類型的形式參數又在子程序內部參與了運算。凡是此類參數都應當定義為IN_OUT類型。



7

與中斷服務程序有關的計算任務,為何會偶爾得出不正確的結果?


  出現這種現象的原因多是在主(子)程序和中斷程序之間傳遞數據的機制不當。


  中斷程序可能在任何時刻執行,如果此時主程序(或子程序)正在對中斷程序使用的數據進行操作,其中間結果可能帶入中斷程序,造成計算結果的變化;同樣地,在中斷程序中產生數據也對主(子)程序中的計算有類似影響。



8

中斷服務程序看起來沒有執行?


  可以在中斷程序中加一個測試程序段,如使用SM0.0(常為“1”)將一個輸出點置位(使用Set指令),觀察是否進入中斷服務程序。中斷程序不執行,多數原因是初始化(連接中斷事件和中斷程序)的問題,或者沒有“開中斷”。應該使用SM0.1(或沿觸發)執行一次初始化,然后開中斷。



9

TP170、TP170micro與S7-200相連接如何做“時鐘同步”?


  TP170默認的時鐘格式與S7-200西門子PLC時鐘指令所讀取的時間日期格式有所區別,讀出的時鐘需要改變格式才能與TP170等做時鐘同步。在TP170的組態軟件ProTool的在線幫助中有相關的介紹。

西門子PLC常見的20個問題的圖1


10

高速計數器怎樣占用輸入點?


  高速計數器根據被定義的工作模式,按需要占用CPU上的數字量輸入點。每一個計數器都按其工作模式占用固定的輸入點。在某個模式下沒有用到的輸入點,仍然可以用作普通輸入點;被計數器占用的輸入點(如外部復位),在用戶程序中仍然訪問到。



11

為什么高速計數器不能正常工作?


  在程序中要使用初次掃描存儲器位SM0.1來調用HDEF指令,而且只能調用一次。如果用SM0.0調用或者第二次執行HDEF指令會引起運行錯誤,而且不能改變第一次執行HDEF指令時對計數器的設定。



12

對高速計數器如何尋址?為什么從SMDx中讀不出當前的計數值?


  可以直接用HC0;HC1;HC2;HC3;HC4;HC5對不同的高速計數器進行尋址讀取當前值,也可以在狀態表中輸入上述地址直接監視高速計數器的當前值。SMDx不存儲當前值。高速計數器的計數值是一個32位的有符號整數。



13

高速計數器如何復位到0?


  選用帶外部復位模式的高速計數器,當外部復位輸入點信號有效時,高速計數器復位為0也可使用內部程序復位,即將高速計數器設定為可更新初始值,并將初始值設為0,執行HSC指令后,高數計數器即復位為0.



14

高速計數器的值在復位后是復位到初始值還是“0”值?


  外部復位會將當前值復位到0值而不是初始值;內部復位則將當前值復位到初始值。如果你設定了可更新初始值,但在中斷中未給初始值特殊寄存器賦新值,則在執行HSC指令后,它將按初始化時設定的初始值賦值。



15

為何給高速計數器賦初始值和預置值時后不起作用,或效果出乎意料?


  高速計數器可以在初始化或者運行中更改設置,如初始值、預置值。其操作步驟應當是:


  1)設置控制字節的更新選項。需要更新哪個設置數據,就把控制字節中相應的控制位置位(設置為“1”);不需要改變的設置,相應的控制位就不能設置。


  2)然后將所需的值送入初始值和預置值控制寄存器。


  3)執行HSC指令。



16

使用PTO/PWM發生器的功能應使用什么類型的CPU?


  應使用24VDC晶體管輸出的CPU,繼電器輸出的絕對不行。



17

PTO或PWM輸出的幅值是多少?


  PTO或PWM輸出的幅值為24V(高電平有效,共負端連接),若想實現輸出其他電壓的幅值,需自己加轉換器來實現。



18

在PTO脈沖串執行過程中,你能否通過PLS指令改變其周期值?


  不行,必須終止PTO輸出后才能改變周期值。



19

如何強制停止PTO或PWM輸出?


  可以通過編程將控制字節中的使能位SM66.7或SM76.7清零,然后執行PLS指令,便可立即停止PTO或PWM輸出。


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP