zjun3001
級別: 探索解密
|
計數時超出高速計數器范圍時,我是在高速計數器達到規定值時用脈沖指令觸發普通計數器計數,再兩數相乘,F擔心計算結果有誤差,請問有什么好方法,請幫忙 |
---|---|
|
zjun3001
級別: 探索解密
|
計數在20000000次左右,頻率10000,擔心在c251復位時的計數誤差,其中一部分這樣的,請大家幫忙 ld x0 ; set m1; ld m1; out c251 k9999; ld m1; dmov c251 d100; ld c251 out c100 k9999; rst c251; ld m1; dmov c100 d200; dmul d200 k10000 d202; dadd d100 d202 d204 |
---|---|
|
sjm213
有小知識,無大學問。
級別: 論壇版主
|
1,“計數在20000000次左右”,這個范圍C251沒有問題,-2,147,483,648~+2,147,483,647都OK; 2,“擔心在c251復位時的計數誤差”,它的復位也是在程序中進行的,不知道為何會有此擔心? 3,這段程序,X0已經被C251占用了,不應該再次使用;而且M1被置位后不用復位,直接用M8000替代掉就好了; 4,C251計數到9999時,就會將C100計數增1,而不是10000; 5,C251是高速計數的,不受PLC掃描周期影響,而RST指令是每掃描周期執行一次,所以C251被復位前,它實際的計數值不可控,有可能已經遠遠超出K10000了,但超出的數值都因復位程序而被丟掉,肯定會造成計數不準確; 6,如果非要用這種方法控制,那么也要用高速計數器中斷,在中斷中累計C100的數值并復位C251。 |
---|---|
|
sjm213
有小知識,無大學問。
級別: 論壇版主
|
1,直接使用C251,設置值可以隨便設,反正它實際值會一直增大的; 2,超出-2,147,483,648~+2,147,483,647范圍的話,用高速計數器中斷, ld m1; dmov c251 d100; ld c251 out c100 k9999; rst c251; 這段程序寫在中斷程序中。 |
---|---|
|