cctv197910
級別: 探索解密
|
圖片:
圖片:
圖片:
FX3U的PLC,其中寄存器D600被使用多次,會根據不同導通條件傳送入不同的值,使用一段時間后其它的D600值不會根據當前輸入值改變而變為-64094,更換新的寄存器地址后正常,但使用十幾天時間后又和以前一樣,現在只能每半個月更換一次地址。求大神們幫忙解惑。 |
---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
你第二張圖是16位,其它地方又是32位運算, |
|
---|---|---|
|
z278958561
地獄不空,誓不成佛,眾生度盡,方正菩提。
級別: 正式會員
|
找到解決辦法沒,我是一個計數器也是這樣,搞得慕名奇妙。還不知道哪里的原因 |
---|---|
|
nightblueblu
道阻且長,窮且益堅。
級別: 論壇先鋒
|
按道理說都是16位和32位使用造成的,我也是遇到三菱的,某個寄存器就是不對,他周圍的都沒用,就他有問題,辦法就是不使用他 |
|
---|---|---|
|
seafar
目前C#
級別: 家園?
|
寄存器溢出 |
|
---|---|---|
|
淺酌憶流年
那可路路
級別: 家園常客
|
第二張圖片,把D388轉化成雙字,然后DMOV給D600,還有一點,DMOV給D600的時候不能同時DMOV,加個互鎖試試。 |
---|---|
|
zhangqi_1234
級別: 略有小成
|
1、兩個32位字元件的乘積,存四個地址連續的16位字元件(64位)。用DMUL指令,表示用D334-D335這2個16位字元件組成的32位數(D334存低16位,D335存高16位,其中最高位為符號位,最高位為1表示負數,負數以補碼形式存儲),與K100相乘后的乘積,存D600-D603中,D600存最低16位,D603存最高16位。同樣,最高位為符號位。因此,在使用帶D的乘積指令時,要保證相鄰若干的寄存器,不得受到其它指令的影響。32位寄存器的取值范圍:-2147483648~+2147483647。64位的取值范圍:-9223372036854775808 ~+ 9223372036854775807。2、用M8000這個觸頭執行DMUL指令,表示PLC處于RUN狀態時,每一個掃描周期都執行乘法指令。也就是說,是循環不斷地執行。這樣會導致運算結果溢出。3、其它諸如:SUB指令,也是在觸頭條件滿足的每一個掃描周期都執行。也可能導致運算結果溢出。 [ 此帖被zhangqi_1234在2019-07-18 01:37重新編輯 ] |
---|---|
本帖最近評分記錄: |