在實際應(yīng)用中經(jīng)常遇到這樣的情況,在一個固定的時間周期內(nèi)控制某繼電器位打開(on)一段時間,關(guān)閉(off)一段時間。比如,用開關(guān)量輸出驅(qū)動指示燈閃爍或驅(qū)動蜂鳴器發(fā)出時斷時續(xù)的響聲。
總結(jié)了在西門子s7-200程序中4種實現(xiàn)此功能的方法。下面分別介紹一下:
第一種方法,使用特殊存儲器位sm。
特殊存儲器位sm0.4提供1分鐘時鐘脈沖,該脈沖在1分鐘的周期內(nèi)關(guān)閉(off)30秒,打開(on)30秒。
特殊存儲器位sm0.5提供1秒鐘時鐘脈沖,該脈沖在1秒鐘的周期內(nèi)關(guān)閉(off)0.5秒,打開(on)0.5秒。
特殊存儲器位sm0.6提供掃描周期時鐘脈沖,該脈沖為一次掃描打開,然后下一次掃描關(guān)閉。
這種方法使用簡單,但時鐘周期和開關(guān)時間固定,很多情況下不能滿足要求。
第二種方法利用時基中斷程序
時基中斷包括定時中斷和定時器中斷。
定時中斷可用來支持一個周期性的活動,周期時間以1ms為計量單位,周期時間可從5ms~255ms。對于定時中斷0,把周期時間寫入smb34,對于定時中斷1,把周期時間寫入smb35。每當(dāng)達到定時時間值,相關(guān)定時器溢出,執(zhí)行中斷處理程序。
定時器中斷可以利用定時器來對一個指定的時間段產(chǎn)生中斷。這類中斷只能使用1ms通電和斷電延時定時器t32和t96。當(dāng)所用定時器的當(dāng)前值等于預(yù)設(shè)值時,在主機正常的定時刷新中,執(zhí)行中斷。下面分別給出程序例子:
organization_block 主程序:ob1
title=主程序:利用定時中斷產(chǎn)生時鐘脈沖-author:smartsys-
begin
network 1
ld sm0.1
movb 100, smb34
atch int0, 10;將中斷事件(evnt)與中斷例行程序號碼(int)相聯(lián)系,并啟用中斷事件。
eni;允許中斷
end_organization_block
interrupt_block int_0:int0
title=中斷程序:利用定時中斷產(chǎn)生時鐘脈沖-author:smartsys-
begin;開始
network 1
ld sm0.0
incb vb0
network 2
ldb>= vb0, 10
xorb 2#1, qb0
xorb vb0, vb0
end_interrupt_block
organization_block 主程序:ob1
title=主程序:利用定時器中斷產(chǎn)生時鐘脈沖-author:smartsys-
begin
network 1
ld sm0.1
atch int0, 21
eni
network 2
ld sm0.0
lps
an m0.0
ton t32, 1000
lpp
a t32
= m0.0
end_organization_block
interrupt_block int_0:int0
title=中斷程序:利用定時器中斷產(chǎn)生時鐘脈沖-author:smartsys-
begin
network 1
ld sm0.0
xorb 2#1, qb0
end_interrupt_block
這種方法時鐘周期可以調(diào)整,但打開和關(guān)閉時間相同。把程序代碼拷貝下來,粘貼到一個文本文件中,然后就可以在step7-microwin中導(dǎo)入。
前面我們已經(jīng)介紹了兩種方法,下面介紹另外兩種方法
第三種方法,利用通電和斷電延時定時器來實現(xiàn),此方法不但可以調(diào)整時鐘周期,還可以產(chǎn)生打開和關(guān)閉時間不同的時鐘脈沖。下面給出兩段例子程序。
第一段例子程序,我們用兩個定時器產(chǎn)生時鐘脈沖,實現(xiàn)原理是定時器1計時到位置位輸出繼電器位,同時啟動定時器2開始計時,定時器2計時到位復(fù)位輸出繼電器位,同時啟動定時器1開始計時,循環(huán)往復(fù)。兩個計時器預(yù)設(shè)值的和為時鐘周期,分別調(diào)整定時器1的預(yù)設(shè)值或定時器2的預(yù)設(shè)值,即可實現(xiàn)產(chǎn)生打開和關(guān)閉時間不同的時鐘脈沖。
organization_block 主程序:ob1
title=主程序:用兩個定時器產(chǎn)生時鐘脈沖-author:smartsys-
begin
network 1
ld sm0.0
lps
an q0.0
ton t37, 10
lpp
a t37
s q0.0, 1
network 2
ld sm0.0
lps
a q0.0
ton t38, 20
lpp
a t38
r q0.0, 1
end_organization_block
第二段例子程序,我們用一個定時器同樣可以實現(xiàn)上段例子的效果。實現(xiàn)原理是用一個定時器產(chǎn)生一個周期循環(huán),即計時器到位復(fù)位重新計時,用一個比較指令,當(dāng)計時器當(dāng)前值大于某值時,置位輸出繼電器,計時器計時到位時復(fù)位輸出繼電器,調(diào)整計時器預(yù)設(shè)值可調(diào)整時鐘周期,改變比較值,可實現(xiàn)產(chǎn)生打開和關(guān)閉時間不同的時鐘脈沖。
organization_block 主程序:ob1
title=主程序:用一個定時器產(chǎn)生時鐘脈沖-author:smartsys-
begin
network 1
ld sm0.0
lps
an m0.0
ton t37, 30
lrd
aw>= t37, 10
s q0.0, 1
lpp
a t37
r q0.0, 1
= m0.0
end_organization_block
對于一般要求精度不高的應(yīng)用,我們推薦使用這種方法。