lanjinghao
師夷洋技以制夷。!
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 21 個
工控威望: 234 點
下載積分: 600 分
在線時間: 21(小時)
注冊時間: 2009-05-06
最后登錄: 2012-09-18
查看lanjinghao的 主題 / 回貼
樓主  發(fā)表于: 2009-07-15 10:58
  程序說明:EM235用采樣交流電壓信號,1ms執(zhí)行一次采樣中斷。將采樣值存儲到VW4000~VW4198中100個空間。并將VW4000~VW4198的值在觸摸屏顯示出來,用于觀察交流電壓信號波形。現(xiàn)在建立一個指針VD4488,并且把指針指向VW4000地址。然后將AIW0賦給×VD4488,然后VD4488加2進行指針偏移。當(dāng)VD4488=4198時再重新初始化指針VD4488。

AIW0數(shù)據(jù)處理




數(shù)據(jù)存儲處理




-----------------------
現(xiàn)在問題出來了: VD4488的值竟然為134222128,而不是4000~4198之間的值。無法執(zhí)行指針偏移以下的指令。這是為什么啊?VD4488存儲空間的值應(yīng)該是個地址啊,怎么會是134222128?
偉大的光榮的正確的中國人民萬歲!
lanjinghao
師夷洋技以制夷!!!
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 21 個
工控威望: 234 點
下載積分: 600 分
在線時間: 21(小時)
注冊時間: 2009-05-06
最后登錄: 2012-09-18
查看lanjinghao的 主題 / 回貼
1樓  發(fā)表于: 2009-07-16 11:14
怎么沒人指導(dǎo)?
我用填表指令解決這個問題了,還是搞不懂上面的指針問題
偉大的光榮的正確的中國人民萬歲。
以恒
Blog: http://ye_w.plcjs.cn/
級別: 工控俠客

精華主題: 5 篇
發(fā)帖數(shù)量: 467 個
工控威望: 3090 點
下載積分: 4172 分
在線時間: 68(小時)
注冊時間: 2007-08-26
最后登錄: 2024-09-22
查看以恒的 主題 / 回貼
2樓  發(fā)表于: 2009-07-16 15:00
指針是VW4000對應(yīng)的實際物理地址,而不是VW4000本身
本帖最近評分記錄:
  • 下載積分:+2(sjm213) 熱心助人,加分表揚
  • 歡迎大家訪問我的BLOG:  [URL]http://ye_w.plcjs.cn/[/URL]

    1、ABB AC500系列PLC培訓(xùn)或技術(shù)支持
    2、購買PLC和方案咨詢電話:13973322058
    3、其他請通過郵箱:07330731@163.com
    以恒
    Blog: http://ye_w.plcjs.cn/
    級別: 工控俠客

    精華主題: 5 篇
    發(fā)帖數(shù)量: 467 個
    工控威望: 3090 點
    下載積分: 4172 分
    在線時間: 68(小時)
    注冊時間: 2007-08-26
    最后登錄: 2024-09-22
    查看以恒的 主題 / 回貼
    3樓  發(fā)表于: 2009-07-16 15:02
    地址指針是先建立后使用,你弄反了
    歡迎大家訪問我的BLOG:  [URL]http://ye_w.plcjs.cn/[/URL]

    1、ABB AC500系列PLC培訓(xùn)或技術(shù)支持
    2、購買PLC和方案咨詢電話:13973322058
    3、其他請通過郵箱:07330731@163.com
    lanjinghao
    師夷洋技以制夷。!
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 21 個
    工控威望: 234 點
    下載積分: 600 分
    在線時間: 21(小時)
    注冊時間: 2009-05-06
    最后登錄: 2012-09-18
    查看lanjinghao的 主題 / 回貼
    4樓  發(fā)表于: 2009-07-17 08:09
    指針我已經(jīng)建立了,在初始化時就建立了。沒有貼出來而已。WOVD &VB4000 VD4488.
    按理來說VD4488存儲空間的值應(yīng)該是VB4000的地址了,那VD4488的值是否為4000?
    偉大的光榮的正確的中國人民萬歲!!
    醉湮邃虞
    醉湮邃虞話老黑
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 229 個
    工控威望: 409 點
    下載積分: 1577 分
    在線時間: 209(小時)
    注冊時間: 2009-01-16
    最后登錄: 2015-03-18
    查看醉湮邃虞的 主題 / 回貼
    5樓  發(fā)表于: 2009-07-17 12:21
    感覺你有概念性的錯誤。網(wǎng)絡(luò)2是中斷程序吧?
    首先VD4488中如果是PLC的地址,那個數(shù)值是沒有錯誤的,在PLC表示的絕對地址的表述是那樣的。所以網(wǎng)絡(luò)2中的比較指令是錯誤,比較指令錯誤的。如果需要,你比須這樣試驗一下:
    MWD &VB4000 VD0
    mwd &vb4198 vd4
    運行后觀察 VD0和VD4的值。不同類型的PLC可能數(shù)值也不相同,
    我用的224XP,這分別是:134221728 和 134221926


    你的指針賦值也有問題,建議你在VD4448中,放置偏移量。
    然后這樣
    賦值指針:
    MOVD  &VB4000 ,AC1
    ADD AC1,VD4488
    保存數(shù)據(jù)及修正指針
    MOVE 數(shù)據(jù) *AC1
    INC  VD4488
    INC  VD4488
    IF VD4488>100 than vd4488=0
    中斷返回

    你的程序中,找不到指針移動的語句。或許你在中斷以外移動了。(這不可能)
    或許你認為那句是移動了,但是按照你程序的思想,你使用了>號,故移動指針指令是不執(zhí)行的(實際因為概念性錯誤是永遠執(zhí)行的,指針數(shù)據(jù)因此在大約4秒后,遭到破壞)、而而指針初始化操作的地址,VD4488也寫成了,VD488,所以,你的中斷程序沒有對指針進行任何操作。

    這樣程序很清晰,AC0中是數(shù)據(jù),AC1是地址指針。VD4488中是偏移量

    這樣做還有個好處,特別是指針操作,使用累加器比使用內(nèi)存來的快的多。畢竟你的程序使用了1毫秒中斷,需要很高的處理速度,有可能會發(fā)上上個中斷還沒處理完,另個中斷已經(jīng)到來了,會發(fā)生中斷隊列溢出,、而而造成系統(tǒng)崩潰或采集數(shù)據(jù)失真。PLC的掃描周期通常在7毫秒左右,視程序大小,大的會長些,小的會短些。
    你中斷程序中竟然還要調(diào)用子程序,你應(yīng)該把數(shù)據(jù)準備好,或者直接讀取原始數(shù)據(jù),分析與處理放在中斷以外。

    其實你完全沒有必要使用1毫秒中斷,觸摸屏的顯示與PLC中的數(shù)據(jù)通常不同步,長的能相差2秒以上呢。如果把中斷調(diào)整到10或50毫秒,調(diào)試起來會很輕松。也沒必要追求指令執(zhí)行時間。
    [ 此帖被醉湮邃虞在2009-07-17 13:04重新編輯 ]
    本帖最近評分記錄:
  • 下載積分:+5(sjm213) 優(yōu)秀文章,加分獎勵
  • 棋牌比賽免費得實物,閑暇好去處
    http://www.jj.cn/indexTG.html?promoterid=108502812
    lanjinghao
    師夷洋技以制夷。!
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 21 個
    工控威望: 234 點
    下載積分: 600 分
    在線時間: 21(小時)
    注冊時間: 2009-05-06
    最后登錄: 2012-09-18
    查看lanjinghao的 主題 / 回貼
    6樓  發(fā)表于: 2009-07-17 15:03
    呵呵,謝謝樓上的指導(dǎo)。上午我用指針加計數(shù)器勉強解決這個問題,你提出的方案更好一些。我已經(jīng)把指針處理的程序移到中斷之外了,中斷僅僅做數(shù)據(jù)采樣,而且我發(fā)現(xiàn)調(diào)用庫里頭的數(shù)據(jù)處理子程序算出來的數(shù)據(jù)有問題,可能和1ms的中斷時間太短有關(guān)。后來改為自己計算處理,勉強能得出合理的數(shù)據(jù)。這個程序主要是想顯示電壓波形,沒辦法50HZ工頻只能用1ms的中斷來采樣了。

    現(xiàn)在還有個問題是,觸摸屏不能顯示負整型數(shù)值,也就是說不能顯示負值,把正負標志位當(dāng)成1來顯示了,有什么辦法來解決這個問題啊?改為實數(shù)也有這個問題。   
    偉大的光榮的正確的中國人民萬歲!!
    lanjinghao
    師夷洋技以制夷!。
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 21 個
    工控威望: 234 點
    下載積分: 600 分
    在線時間: 21(小時)
    注冊時間: 2009-05-06
    最后登錄: 2012-09-18
    查看lanjinghao的 主題 / 回貼
    7樓  發(fā)表于: 2009-07-17 16:08
    ac0是不是全局變量?從程序中發(fā)現(xiàn)好像是局部變量啊
    偉大的光榮的正確的中國人民萬歲!!
    sjm213
    有小知識,無大學(xué)問。
    級別: 論壇版主

    精華主題: 7 篇
    發(fā)帖數(shù)量: 5190 個
    工控威望: 7413 點
    下載積分: 158348 分
    在線時間: 3150(小時)
    注冊時間: 2007-11-21
    最后登錄: 2024-10-27
    查看sjm213的 主題 / 回貼
    8樓  發(fā)表于: 2009-07-17 22:29
    AC0是累加器~~
    醉湮邃虞
    醉湮邃虞話老黑
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 229 個
    工控威望: 409 點
    下載積分: 1577 分
    在線時間: 209(小時)
    注冊時間: 2009-01-16
    最后登錄: 2015-03-18
    查看醉湮邃虞的 主題 / 回貼
    9樓  發(fā)表于: 2009-07-18 10:32
    你是要用圖形顯示數(shù)據(jù)吧?
    作一下數(shù)據(jù)轉(zhuǎn)換,不過要知道最大值或最小值。
    比如最小值是-2000,最大值是+5000
    將-2000---+5000轉(zhuǎn)換為0--6999的數(shù)據(jù),就可以處理了
    棋牌比賽免費得實物,閑暇好去處
    http://www.jj.cn/indexTG.html?promoterid=108502812