200 PLC,轉速程序怎么寫啊?
劉玉蓉
發(fā)布于2014-10-17 16:52
335
0
標簽:
1 有人說采用編碼器,但是編碼器的轉速高才1500RPM,我要測量的軸的轉速至少是4000多轉,編碼器的速度根本跟不上???
2 這個程序如何寫?。?br />
佳答案
首先是檢測機構,可以使用高速接近開關取信號,也就是轉一圈接近開關輸出一個脈沖信號
編程就是使用高速計數(shù)器和定時中斷,定時中斷設定時間100ms,在中斷程序里累計10次,取得高數(shù)計數(shù)器的實際值,就是每秒的轉速了,然后清定時的累計值,復位高速計數(shù)器的初始值,進行下一秒的計數(shù)。
剛好昨天做了個測試程序,脈沖信號輸入到I0.0
ORGANIZATION_BLOCK 主程序:OB1
TITLE=程序注釋
BEGIN
Network 1
LD SM0.1
CALL SBR1
Network 2
LD SM0.1
CALL SBR0
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注釋
BEGIN
Network 1
LD SM0.0
MOVW 0, VW100
Network 2
LD SM0.0
MOVB 100, SMB34
ATCH INT0, 10
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK HSC_INIT:SBR1
TITLE=
BEGIN
Network 1
LD SM0.0
MOVB 16#F8, SMB37
MOVD +0, SMD38
MOVD +0, SMD42
HDEF 0, 0
ENI
HSC 0
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中斷程序注釋
BEGIN
Network 1
LD SM0.0
+I 1, VW100
Network 2
LDW>= VW100, VW102
MOVD HC0, VD104
MOVD 0, SMD38
HSC 0
MOVW 0, VW100
Network 3
END_INTERRUPT_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注釋
BEGIN
Network 1
LD SM0.0
MOVW 0, VW100
Network 2 // 網絡標題
// 網絡注釋
LD SM0.0
MOVB 100, SMB34
ATCH INT0, 10
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK HSC_INIT:SBR1
TITLE=
BEGIN
Network 1 // HSC 指令向導
// 要在程序中使用此配置,請在主程序塊中使用 SM0.1 或一條沿觸發(fā)指令調用一次此子程序。
// 配置 HC0 為模式 0;CV = 0; PV = 0;增計數(shù);
// 開放中斷和啟動計數(shù)器。
//
LD SM0.0
MOVB 16#F8, SMB37 //設置控制位:增計數(shù);已使能;
MOVD +0, SMD38 //裝載 CV
MOVD +0, SMD42 //裝載 PV
HDEF 0, 0
ENI
HSC 0
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中斷程序注釋
BEGIN
Network 1 // 網絡標題
LD SM0.0
+I 1, VW100 //定時累計
Network 2
LDW>= VW100, VW102 //VW102=10, 10*100ms=1S
MOVD HC0, VD104 //VD104為累計時間的脈沖數(shù)
MOVD 0, SMD38
HSC 0
MOVW 0, VW100
Network 3
END_INTERRUPT_BLOCK