lms870601
級(jí)別: 探索解密
![]() |
如圖所示程序 ![]() 通過(guò)數(shù)據(jù)交換指令交換之后的D10應(yīng)該是3112,為什么會(huì)是-12540呢?問(wèn)題出在哪里?還有就是M8160執(zhí)行XCH指令時(shí),標(biāo)志位信號(hào)M160應(yīng)該是ON,可實(shí)際上M8160一直都是OFF |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級(jí)別: VIP會(huì)員
![]() ![]() ![]() ![]() |
您錯(cuò)誤的理解了K1231在寄存器中的存儲(chǔ)方式了。 K1231在寄存器中的存儲(chǔ)方式為 0000 0100 1100 1111,因此通過(guò)交換高低位 ,形成的結(jié)果為 1100 1111 0000 0100 ,而結(jié)果的二進(jìn)制轉(zhuǎn)換為10進(jìn)制則為-12540. 如果要得到3112值,您需要為D10寫(xiě)入16進(jìn)制,即H1231. ![]() 樓主留言:有一個(gè)疑問(wèn),在4樓,麻煩解釋一下,謝謝 |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級(jí)別: VIP會(huì)員
![]() ![]() ![]() ![]() |
至于標(biāo)志位M8160的問(wèn)題,實(shí)際上M8160在第一行被置位了,M8000作為常閉觸點(diǎn),編程者使用了一個(gè)小技巧,巧妙的利用了雙線圈,使得M8160產(chǎn)生了一個(gè)脈沖,其目的只是為了當(dāng)前的XCH指令。 即使你不使用ANI M8000那行,也不會(huì)影響程序的正確性。 ![]() 樓主留言:我仔細(xì)看了時(shí)序圖,并沒(méi)有發(fā)現(xiàn)M8160有ON過(guò),麻煩解釋一下,謝謝 |
---|---|
本帖最近評(píng)分記錄: |
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級(jí)別: VIP會(huì)員
![]() ![]() ![]() ![]() |
你需要如圖一樣添加一點(diǎn)程序,然后你會(huì)發(fā)現(xiàn)D0被累加,從而證明M8160被ON過(guò)。 否則,如此短暫的數(shù)條指令間隔,你的軟件是捕捉不到如此短暫的脈沖的。 ![]() |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級(jí)別: VIP會(huì)員
![]() ![]() ![]() ![]() |
SMOV指令分為3步執(zhí)行: 1、將源數(shù)據(jù)中,這里是D5中的數(shù)據(jù)轉(zhuǎn)換為BCD碼,K1234轉(zhuǎn)換后就是1234,什么叫BCD碼你應(yīng)該知道,說(shuō)白了,就是16進(jìn)制數(shù)表示10進(jìn)制。 所以這一步就是K1234轉(zhuǎn)換為H1234. 2、進(jìn)行移動(dòng),D5中M1的位置,這里就是K4,也就是H1234中的1,移動(dòng)位數(shù)M2,這里是K2,也就是說(shuō)移動(dòng)H1234中的1和2,到目標(biāo),這里是D10的N位開(kāi)始,這里是K3,也就是說(shuō),將1,2移動(dòng)到D10的第三位 ,請(qǐng)注意,這里都是BCD碼的操作,D10的數(shù)據(jù)是H5678,其第3位就是6,將1,2移動(dòng)過(guò)來(lái),就變成了H5128 3、D10數(shù)據(jù)被轉(zhuǎn)換為二進(jìn)制,因此,D10中的H5128變成了K5128. 與前面不同的是,SMOV線纜可以控制位數(shù),XCH不可以。如果僅從高低字節(jié)的交換來(lái)看: SMOV指令相當(dāng)于: BCD指令+XCH指令+BIN指令。 Good Luck~ 樓主留言:很詳細(xì),非常感謝,這下全明白了 |
---|---|
|