<sup id="x7dny"><rp id="x7dny"><big id="x7dny"></big></rp></sup>
    • <label id="x7dny"><tt id="x7dny"><tfoot id="x7dny"></tfoot></tt></label>
      <dfn id="x7dny"></dfn>
      <small id="x7dny"><rp id="x7dny"><rt id="x7dny"></rt></rp></small>
      加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線18475208684
      公司新聞
      PLC通訊讀取數據,獲得數據高低字錯位
      發布時間: 2024-09-05 17:49 更新時間: 2024-12-04 08:00
      觀看PLC通訊讀取數據,獲得數據高低字錯位視頻

      使用的PLC是匯川easy521,從站是激光測距儀器,一開始用的0-10V模擬量獲取位置,但發現激光測距距離一旦遠了,plc獲取的為位置信息與儀器顯示的位置Zui大偏差有5cm,嚴重影響RGV定位,所以改采用485通訊(由于一開始485通訊不上,今天改換另一臺激光測距儀器,發現之前的儀器485通訊是壞的),485通訊讀取的數據,高低字是獨立的兩個字(后面發現低字讀取的數據有負數,負數在計算機計算器中進行轉換,二進制數據編程了64位,后面想了想,懷疑是有數據沒讀到,所以用DINT類型) 。

      這是激光測距儀器的通訊地址(十進制地址是21,22):

      通訊地址設置如圖:

      通訊獲取的相關地址數據后,先把高位字進行處理,把高位字向左移動16位,從而獲得,一開始我用的是SHL指令,但發現easy沒有AM系列PLC簡便,于是采用高低位字調換指令,即xchp指令,指令具體使用如下說明:


      根據指令提示,進行如下操作:通訊獲得激光測距儀器的高位字數據D30(dint類型),低位字數據D32(dint類型),此時D30數值為2,D32數字為656,先把數據進行計算,在電腦自帶的計算器進行就算,儀表顯示的值轉換成二進制為:0010 0000 0010 1001 0000,656數值轉換成二進制為0010 1001 0000,2轉換成二進制為0010,發現只要把0010放在0010 1001 0000就變成了目標值。

      首先先把高位數據2向左移動16位,采用高低位轉化指令,先把D30的數據D30,D31分別賦值給D36 ,D37。

      然后使用xchp指令,調換高低字位置:

      再把獲得的數據D36(dint類型)賦值給D34,相當于獲得轉換后的數據,131072,131072轉換成二進制位:0010 0000 0000 0000 0000,觀察數據,可以發現1往左移動了16位:

      然后再把D34與D32相加(此處我有點不理解,但使用加法,得到的數值與儀器顯示的數據相等,明天再去驗證一下,是否適應各個數據):

      驗證:把131728轉換成二進制,得到的數據:


      與實際測量值相等。

      本來我想用or指令進行計算,(D30 or D32),32位數據進行運行,但發現使用autoshop不是很熟練,所以放棄此方法;



      聯系方式

      • 電  話:13922889745
      • 經理:向小姐
      • 手  機:18475208684
      • 微  信:18475208684