一路向前hg
相互學(xué)習(xí),共同進(jìn)步!
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 229 個(gè)
工控威望: 303 點(diǎn)
下載積分: 917 分
在線時(shí)間: 145(小時(shí))
注冊(cè)時(shí)間: 2019-12-07
最后登錄: 2024-08-04
查看一路向前hg的 主題 / 回貼
樓主  發(fā)表于: 2024-07-16 09:36
各位工控友友,有做過(guò)總線通訊ABB機(jī)器人通訊負(fù)數(shù)的案例嗎,想半天沒(méi)想到怎么轉(zhuǎn)換。浮點(diǎn)數(shù)倒簡(jiǎn)單,總線通訊給整數(shù) ABB側(cè)除100給num數(shù)據(jù)就可以了,但負(fù)數(shù)沒(méi)想到怎么處理,求大神解
斗志不能低
快樂(lè)修狗
級(jí)別: 正式會(huì)員
精華主題: 0
發(fā)帖數(shù)量: 12 個(gè)
工控威望: 57 點(diǎn)
下載積分: 2144 分
在線時(shí)間: 29(小時(shí))
注冊(cè)時(shí)間: 2023-02-07
最后登錄: 2024-11-03
查看快樂(lè)修狗的 主題 / 回貼
1樓  發(fā)表于: 2024-07-16 16:50
加一個(gè)符號(hào)位,if 負(fù)數(shù)  then   Y=0-X  else  Y=X
樓主留言:
感謝分享!
葉上初陽(yáng)
級(jí)別: 正式會(huì)員
精華主題: 0
發(fā)帖數(shù)量: 20 個(gè)
工控威望: 66 點(diǎn)
下載積分: 104 分
在線時(shí)間: 7(小時(shí))
注冊(cè)時(shí)間: 2024-03-08
最后登錄: 2024-10-10
查看葉上初陽(yáng)的 主題 / 回貼
2樓  發(fā)表于: 2024-07-17 08:31
簡(jiǎn)單點(diǎn)的用IF判斷個(gè)大于0小于0,大于零直接輸出,小于0用abs做個(gè)絕對(duì)值輸出,再輸出個(gè)正數(shù)負(fù)數(shù)信號(hào),到了輸入端再轉(zhuǎn)換正負(fù)數(shù)。復(fù)雜點(diǎn)應(yīng)該不用另外另外加正負(fù)信號(hào),得把正負(fù)數(shù)用byte表示,轉(zhuǎn)換成二進(jìn)制做個(gè)bit的移位,前邊設(shè)置一個(gè)判斷正負(fù),之后用01表示正負(fù)值移位保存到byte里,再轉(zhuǎn)換回到十進(jìn)制,應(yīng)該不會(huì)超出組信號(hào)的表示范圍,想到了這么個(gè)法子,不知道行不行,我一會(huì)試試去。
樓主留言:
熱心助人!
真實(shí)的你,在于怎么選擇。。。工業(yè)機(jī)器人
葉上初陽(yáng)
級(jí)別: 正式會(huì)員
精華主題: 0
發(fā)帖數(shù)量: 20 個(gè)
工控威望: 66 點(diǎn)
下載積分: 104 分
在線時(shí)間: 7(小時(shí))
注冊(cè)時(shí)間: 2024-03-08
最后登錄: 2024-10-10
查看葉上初陽(yáng)的 主題 / 回貼
3樓  發(fā)表于: 2024-07-17 10:12
不用byte打包數(shù)據(jù),多此一舉,直接移位就行,組輸出范圍不夠擴(kuò)一下。
      IF a_num_test1>=0 THEN
            b_num_test1:=0;
            c_dnum_test1:=BitLShDnum(NumToDnum(b_num_test1),12);
            c_dnum_test1:=BitOrDnum(c_dnum_test1,NumToDnum(a_num_test1));
            d_num_test1:=DnumToNum(c_dnum_test1);
            SetGO io_gout_num,d_num_test1;
      ELSE
            b_num_test1:=1;
            c_dnum_test1:=BitLShDnum(NumToDnum(b_num_test1),12);
            e_num_test1:=Abs(a_num_test1);
            c_dnum_test1:=BitOrDnum(c_dnum_test1,NumToDnum(e_num_test1));
            d_num_test1:=DnumToNum(c_dnum_test1);
            SetGO io_gout_num,d_num_test1;
      ENDIF
大概這么個(gè)意思,只需要一個(gè)信號(hào),不需要分正負(fù)兩種信號(hào)輸出。但是相當(dāng)于做了個(gè)編碼,得在PLC端解碼。
樓主留言:
好貼好貼!
本帖最近評(píng)分記錄:
  • 下載積分:+1(撿到一塊錢) 熱心助人!
  • 真實(shí)的你,在于怎么選擇。。。工業(yè)機(jī)器人