lms870601
級別: 探索解密
|
如圖所示程序 通過數據交換指令交換之后的D10應該是3112,為什么會是-12540呢?問題出在哪里?還有就是M8160執行XCH指令時,標志位信號M160應該是ON,可實際上M8160一直都是OFF |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
您錯誤的理解了K1231在寄存器中的存儲方式了。 K1231在寄存器中的存儲方式為 0000 0100 1100 1111,因此通過交換高低位 ,形成的結果為 1100 1111 0000 0100 ,而結果的二進制轉換為10進制則為-12540. 如果要得到3112值,您需要為D10寫入16進制,即H1231. 樓主留言:有一個疑問,在4樓,麻煩解釋一下,謝謝 |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
至于標志位M8160的問題,實際上M8160在第一行被置位了,M8000作為常閉觸點,編程者使用了一個小技巧,巧妙的利用了雙線圈,使得M8160產生了一個脈沖,其目的只是為了當前的XCH指令。 即使你不使用ANI M8000那行,也不會影響程序的正確性。 樓主留言:我仔細看了時序圖,并沒有發現M8160有ON過,麻煩解釋一下,謝謝 |
---|---|
本帖最近評分記錄: |
銘杰工控
溫嶺市正凱自動化設備有限公司
級別: 網絡英雄
|
路過進來學習一下。有收獲謝謝C兄! |
|
---|---|---|
|
lms870601
級別: 探索解密
|
看了另一個程序,迷惑了 在這個程序中存入的數都是10進制數,可是結果如圖中所示,D中的數沒有轉換成二進制就直接傳送了。這兩個指令交換或者傳送內部的區別在哪 |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
你需要如圖一樣添加一點程序,然后你會發現D0被累加,從而證明M8160被ON過。 否則,如此短暫的數條指令間隔,你的軟件是捕捉不到如此短暫的脈沖的。 |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
SMOV指令分為3步執行: 1、將源數據中,這里是D5中的數據轉換為BCD碼,K1234轉換后就是1234,什么叫BCD碼你應該知道,說白了,就是16進制數表示10進制。 所以這一步就是K1234轉換為H1234. 2、進行移動,D5中M1的位置,這里就是K4,也就是H1234中的1,移動位數M2,這里是K2,也就是說移動H1234中的1和2,到目標,這里是D10的N位開始,這里是K3,也就是說,將1,2移動到D10的第三位 ,請注意,這里都是BCD碼的操作,D10的數據是H5678,其第3位就是6,將1,2移動過來,就變成了H5128 3、D10數據被轉換為二進制,因此,D10中的H5128變成了K5128. 與前面不同的是,SMOV線纜可以控制位數,XCH不可以。如果僅從高低字節的交換來看: SMOV指令相當于: BCD指令+XCH指令+BIN指令。 Good Luck~ 樓主留言:很詳細,非常感謝,這下全明白了 |
---|---|
|
銘杰工控
溫嶺市正凱自動化設備有限公司
級別: 網絡英雄
|
千載難逢的學習機會,又受教了。 |
|
---|---|---|
|