h30631
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 90 個(gè)
工控威望: 230 點(diǎn)
下載積分: 812 分
在線時(shí)間: 339(小時(shí))
注冊(cè)時(shí)間: 2012-09-05
最后登錄: 2018-04-17
查看h30631的 主題 / 回貼
樓主  發(fā)表于: 2012-12-19 17:54
請(qǐng)問(wèn)各位大師們,為什麼用GX 模擬PLC 去跑程式時(shí),DADDP 指令時(shí),數(shù)字會(huì)亂跳,如圖片
但是實(shí)際上監(jiān)控實(shí)體PLC 就不會(huì)有這個(gè)問(wèn)題,請(qǐng)問(wèn)是哪裡出錯(cuò)了??

[ 此帖被h30631在2013-01-03 17:03重新編輯 ]
sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5212 個(gè)
工控威望: 7436 點(diǎn)
下載積分: 158993 分
在線時(shí)間: 3172(小時(shí))
注冊(cè)時(shí)間: 2007-11-21
最后登錄: 2024-12-22
查看sjm213的 主題 / 回貼
1樓  發(fā)表于: 2012-12-19 21:32
1,根本原因在于你用了DADDP,這是個(gè)32位的指令。實(shí)際計(jì)算過(guò)程是把[D351 D350]與[T1 T0]相加后放入了[D351 D350];
2,仿真與實(shí)機(jī)的區(qū)別在于,仿真默認(rèn)掃描周期是100ms的,而實(shí)機(jī)的掃描周期會(huì)原低于這個(gè)數(shù)。這就造成仿真在T0計(jì)時(shí)到后,其輸出觸點(diǎn)驅(qū)動(dòng)了T1計(jì)時(shí),T1的數(shù)值馬上變成了1,所以掃描到達(dá)T0的上升沿,執(zhí)行加法處理時(shí),就是00000000+00010014--》00010014(都用16進(jìn)制表示)的計(jì)算過(guò)程,這個(gè)十六進(jìn)制的數(shù)換成十進(jìn)制就是65556;執(zhí)行到第八遍的時(shí)候,這個(gè)數(shù)就是65556*8=524448。而因?qū)崣C(jī)的掃描周期遠(yuǎn)低于100ms,則在實(shí)機(jī)上執(zhí)行該程序,T0計(jì)時(shí)到達(dá),掃描到T1時(shí),該數(shù)值還沒(méi)有累積到0.1S,所以T1的數(shù)值還是0沒(méi)有變成1,繼續(xù)執(zhí)行加法處理時(shí),就是00000000+00000014--》00000014的計(jì)算過(guò)程,這個(gè)十六進(jìn)制的數(shù)換成10進(jìn)制就是20,得到了想要的結(jié)果;
3,將DADDP指令換成16位的ADDP指令可以避免這種情況;
4,將T0上升沿后做加法運(yùn)算這一句緊放在T0輸出線圈這一句后面可以避免這種情況;T0輸出線圈這一句放在RST T0這段后面更好。
sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5212 個(gè)
工控威望: 7436 點(diǎn)
下載積分: 158993 分
在線時(shí)間: 3172(小時(shí))
注冊(cè)時(shí)間: 2007-11-21
最后登錄: 2024-12-22
查看sjm213的 主題 / 回貼
2樓  發(fā)表于: 2012-12-25 14:01
今天在實(shí)機(jī)上調(diào)試了這個(gè)程序,現(xiàn)象與樓主所講一樣。
再仔細(xì)想了一下,在三樓講的第二條有問(wèn)題。
PLC中無(wú)論掃描周期如何修改,執(zhí)行的結(jié)果都是樓主期望的那樣,T1對(duì)ADD之后的D350不會(huì)產(chǎn)生影響,因?yàn)門(mén)0狀態(tài)ON的這個(gè)掃描周期,T1才剛開(kāi)始計(jì)時(shí),PLC工作的原理是下一次掃描到T1輸出觸點(diǎn)時(shí)才會(huì)更新當(dāng)前值,所以T1現(xiàn)在的值是0,不會(huì)影響到T0和D350值的相加。
仿真中,無(wú)論掃描周期如何修改,T1在T0為ON開(kāi)始計(jì)時(shí)的這個(gè)周期都是已經(jīng)有了一個(gè)數(shù)值“1”,這就對(duì)D350的數(shù)值產(chǎn)生了附圖中顯示的影響。
說(shuō)明仿真和PLC實(shí)機(jī)運(yùn)行是不一樣的。
sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5212 個(gè)
工控威望: 7436 點(diǎn)
下載積分: 158993 分
在線時(shí)間: 3172(小時(shí))
注冊(cè)時(shí)間: 2007-11-21
最后登錄: 2024-12-22
查看sjm213的 主題 / 回貼
3樓  發(fā)表于: 2012-12-25 14:02
引用
引用第4樓h30631于2012-12-20 08:27發(fā)表的  :
感謝版主大師的指導(dǎo)~
依照指示,真的如板大所說(shuō),原來(lái)是時(shí)序的問(wèn)題
所以我這種寫(xiě)法會(huì)有編寫(xiě)的順序問(wèn)題,
可以在請(qǐng)問(wèn)一下,執(zhí)行 dadd這個(gè)指令 我知道的是會(huì)有一個(gè)D上位&D下位,與他相加的T也會(huì)自動(dòng)有一個(gè)上位&下位嗎?
嬀 DADDP D0 T0 D0崀=D1 D0 +"T1 T0 " ??
.......


但是32位指令執(zhí)行時(shí)是  D1  D0  +  T1  T0這是確確實(shí)實(shí)的。