luyanlong1
不停的學(xué)習(xí),努力!
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 154 個(gè)
工控威望: 798 點(diǎn)
下載積分: 4954 分
在線時(shí)間: 90(小時(shí))
注冊(cè)時(shí)間: 2013-05-20
最后登錄: 2024-09-13
查看luyanlong1的 主題 / 回貼
樓主  發(fā)表于: 2016-08-21 12:05
PLC發(fā)送8個(gè)字節(jié),儀表回應(yīng)21個(gè)字節(jié),用8位的寄存器沒(méi)問(wèn)題,但是用16位的話,儀表回應(yīng)回來(lái)的21個(gè)字節(jié)會(huì)出現(xiàn)錯(cuò)位,大俠們有什么好辦法處理一下
tingfenghu
級(jí)別: 工控俠客

精華主題: 0
發(fā)帖數(shù)量: 2845 個(gè)
工控威望: 3617 點(diǎn)
下載積分: 3517 分
在線時(shí)間: 3800(小時(shí))
注冊(cè)時(shí)間: 2007-11-04
最后登錄: 2024-11-14
查看tingfenghu的 主題 / 回貼
1樓  發(fā)表于: 2016-08-21 14:06
昨天已經(jīng)回復(fù)過(guò)你,還沒(méi)有搞定,建議還是看看手冊(cè)吧.
樓主留言:
我第一次搞這種東西,確實(shí)不懂,我沒(méi)用AD模塊,直接是RTU通信的,剛剛又試了下,AND用錯(cuò)了,就是不太理解AND和OR還有XOR,有點(diǎn)反不過(guò)勁的感覺(jué)
二手PLC,觸摸屏,伺服驅(qū)動(dòng),各類氣動(dòng)設(shè)備
http://shop58129605.taobao.com/
lvpretend
級(jí)別: 論壇先鋒
精華主題: 0
發(fā)帖數(shù)量: 1258 個(gè)
工控威望: 1428 點(diǎn)
下載積分: 3680 分
在線時(shí)間: 322(小時(shí))
注冊(cè)時(shí)間: 2015-07-20
最后登錄: 2024-05-22
查看lvpretend的 主題 / 回貼
2樓  發(fā)表于: 2016-08-21 16:45
你傳回來(lái)的數(shù)據(jù)加入放在D2000開(kāi)始。

D2005是數(shù)據(jù)字1的高8位,但在PLC里卻是放在低8位的,也就是需要把數(shù)據(jù)左移動(dòng)8位,實(shí)際上就是乘以256(16#100)。

由于臺(tái)達(dá)乘法運(yùn)算比移位運(yùn)算更快(處理器有專用乘法器),所以就是D2005 * 256

注意,16位乘法的結(jié)果是32位的,也就是占用2個(gè)16位數(shù)據(jù),我們只需要低16位。所以這也是我喜歡全部用浮點(diǎn)數(shù)來(lái)運(yùn)算的原因,反正是32位,不去管16位/32位之間的轉(zhuǎn)換問(wèn)題,慢也慢不到哪里去。

MUL  D2005   256   D100
這時(shí)D100中的數(shù)據(jù)就是D2005左移8位的數(shù)據(jù)了。

D2006是數(shù)據(jù)字1的低8位,在PLC里本就是放在低8位的,不用管它。

ADD D2006  D100  D200

這個(gè)時(shí)候D200中的數(shù)據(jù)就是按要求組合完成的16數(shù)據(jù)了。

再下來(lái)把這個(gè)16位數(shù)據(jù)轉(zhuǎn)換成32位浮點(diǎn)數(shù)

FLT D200  D300   ,為了運(yùn)算方便,建議不要直接采用地址,而采用變量定義,比如這里定義一個(gè)浮點(diǎn)數(shù) R1

則上條指令就是  FLT D200 R1

然后進(jìn)行小數(shù)點(diǎn)處理,因?yàn)橛?個(gè)小數(shù)位,所以R1/1000
DEDIV  R1  1000.00  R1  
    
注意,常數(shù)要帶小數(shù)點(diǎn),系統(tǒng)才知道是浮點(diǎn)數(shù)。
這個(gè)時(shí)候R1中就把小數(shù)位搞好了。

再來(lái)做符號(hào)位
D2003是符號(hào)位,為1就是負(fù)數(shù),那么就可以用接點(diǎn)邏輯運(yùn)算來(lái)做
LD=  D2003   1     DEMUL  R1  -1.00 R1

這樣就OK了。
當(dāng)然,移位也可以,指令還要精簡(jiǎn)些,但速度差不多。

寫(xiě)得有點(diǎn)煩鎖,不知道有寫(xiě)錯(cuò)的地方?jīng)]有,你參考下,用仿真寫(xiě)段指令試下。
本帖最近評(píng)分記錄:
  • 下載積分:+3(luyanlong1) 真誠(chéng)感謝!
    tingfenghu
    級(jí)別: 工控俠客

    精華主題: 0
    發(fā)帖數(shù)量: 2845 個(gè)
    工控威望: 3617 點(diǎn)
    下載積分: 3517 分
    在線時(shí)間: 3800(小時(shí))
    注冊(cè)時(shí)間: 2007-11-04
    最后登錄: 2024-11-14
    查看tingfenghu的 主題 / 回貼
    3樓  發(fā)表于: 2016-08-21 20:50
    d10分解成d0,d1,再將d0 ,d1 合并成 d11,ROL,ROR是循環(huán)移位,需要考慮進(jìn)位,詳細(xì)的自己是研究.
    我用三菱的軟件,好像臺(tái)達(dá)差不多的.
    [attachment=151214]
    [ 此帖被tingfenghu在2016-08-21 21:05重新編輯 ]
    本帖最近評(píng)分記錄:
  • 下載積分:+3(luyanlong1) 真誠(chéng)感謝!
  • 二手PLC,觸摸屏,伺服驅(qū)動(dòng),各類氣動(dòng)設(shè)備
    http://shop58129605.taobao.com/