雅馬哈與上位機(jī)TCP通訊

? ? ? ? ? ? ? ? ? ? 雅馬哈與上位機(jī)TCP通訊

1.0 可以先用調(diào)試助手測(cè)試,先設(shè)定電腦IP以及雅馬哈控制器IP,系統(tǒng)--通信設(shè)置,設(shè)置控制器的IP

1.1 在選項(xiàng)--通用以太網(wǎng)端口,設(shè)置GP0(通訊對(duì)象),模式伺服,通訊對(duì)象的IP,端口1004,改行符CRLF,這里要注意了,有換行符的0A 0B為換行符,不添加會(huì)不識(shí)別的

1.2 剛才在控制器那端,設(shè)置的通訊對(duì)象為伺服端,那控制器就是客戶端,在調(diào)試助手這里,設(shè)置的對(duì)象就是控制器端,所有協(xié)議類(lèi)型為客戶端TCP Client,所有這里設(shè)置的是控制器的IP和端口,注意跟控制設(shè)置的IP端口一致

1.3 具體代碼如下:

*CONNECT:

DQ2$="trigger,"+"1"+","+"1" '--------DQ$為字符串,DQ!為實(shí)數(shù),DQ%為整數(shù)類(lèi)型

A$="" '--------字符串清空

SEND DQ2$ TO GP0'-----------------------GP0為通信端,觸發(fā)上相機(jī)1拍照{取料拍照}

SEND GP0 TO A$'---------------接收端,當(dāng)通訊GP在前面就為接收,否則為發(fā)送,A$為字符串

OK$=MID$(A$,1,1) '----------讀取A$從第1個(gè)開(kāi)始的1個(gè)字符,賦值給OK$

'

IF OK$="1" THEN

? ?X!=VAL(MID$(A$,3,8))'-----一般都為8個(gè)字節(jié),VAL為字符串轉(zhuǎn)換成實(shí)數(shù)?

? ?Y!=VAL(MID$(A$,12,8))

? ?R!=VAL(MID$(A$,21,8))

? ?LOC1(P2)=X! '--------把實(shí)數(shù)X!傳送給P2點(diǎn)位的第一軸坐標(biāo)

? ?LOC2(P2)=Y!

? ?LOC4(P2)=R!

? ?LOC3(P2)=50??

? ?GOTO *MAIN

ELSE

? ? DELAY 5000

? ? GOTO *CONNECT

? ? HALT

ENDIF

1.4 如下圖,如果相機(jī)發(fā)送1,-100.340,223.4500,23.56000,0,那我收到的第一個(gè)字符就是1,第二個(gè)就是,第三個(gè)就是-,以此類(lèi)推。這里要注意要知道機(jī)器人坐標(biāo)的最大數(shù)值,這里雅馬哈的最大位數(shù)連上+-和小數(shù)點(diǎn).是8位字符,所以每個(gè)坐標(biāo)都要滿8位,如果坐標(biāo)不滿(可能10.12也有可能是100.12)就要補(bǔ)零,要么上位機(jī)相機(jī)補(bǔ)零,要么機(jī)器人控制器識(shí)別字符或者分隔符,雅馬哈是不能識(shí)別分隔符的,而愛(ài)普生是可以的,有識(shí)別分隔符指令會(huì)簡(jiǎn)單點(diǎn)不用補(bǔ)零,識(shí)別字符的話會(huì)比較麻煩.所以雅馬哈的話最好時(shí)上位機(jī)補(bǔ)零后發(fā)送到機(jī)器人,

了解最新工控PLC,上位機(jī),機(jī)器人,通訊等實(shí)例測(cè)試筆記~~請(qǐng)關(guān)注百家號(hào)或頭條號(hào)--老王工控筆記

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容