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