fkeickl
搞電的沒前途
級別: 略有小成
|
MODULE MainModule VAR socketdev socket_client; VAR robtarget zhuaqudian{4, 6} := [ [[[304.27,-308.43,388.88],[0.00605288,-0.921946,0.386945,-0.0159119],[-1,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[302.63,-500.33,388.88],[0.00611035,-0.921938,0.386966,-0.0158309],[-1,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[301.71,-691.96,388.88],[0.00627679,-0.921946,0.386953,-0.0156304],[-1,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[103.85,-307.68,388.88],[0.00626996,-0.921947,0.386949,-0.0156282],[-1,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[105.97,-499.35,388.88],[0.006271,-0.921942,0.386961,-0.0156303],[-1,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[103.92,-690.97,388.88],[0.00627827,-0.921947,0.386949,-0.0156317],[-1,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]], [[[-122.05,-310.89,388.88],[0.00645941,-0.921936,0.386973,-0.0156182],[-2,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-124.22,-502.28,388.88],[0.00648626,-0.921942,0.38696,-0.0156026],[-2,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-117.92,-694.13,388.88],[0.00646402,-0.921923,0.387005,-0.0155904],[-2,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-316.41,-307.47,388.88],[0.00645302,-0.921949,0.386938,-0.0156957],[-2,0,-4,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-319.25,-504.26,388.88],[0.00656645,-0.921893,0.387072,-0.0156806],[-2,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-314.56,-695.07,388.88],[0.00652637,-0.921896,0.387066,-0.0156755],[-2,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]], [[[300.57,694.78,388.88],[0.00621611,-0.921927,0.386999,-0.0155978],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[302.88,502.19,388.88],[0.00621539,-0.921926,0.387003,-0.0155974],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[301.33,309.79,388.88],[0.00621415,-0.921925,0.387004,-0.0156002],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[107.10,694.54,388.88],[0.0062171,-0.921926,0.387002,-0.0155948],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[105.49,503.12,388.88],[0.00621575,-0.921925,0.387004,-0.0155983],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[106.00,311.19,388.88],[0.00621052,-0.92192,0.387017,-0.0156025],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]], [[[-122.27,693.85,388.88],[0.00620335,-0.921927,0.386999,-0.0156261],[1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-122.85,502.21,388.88],[0.00621437,-0.921928,0.386997,-0.0156302],[1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-125.59,309.09,388.88],[0.00622092,-0.921929,0.386993,-0.0156214],[1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-320.87,694.16,388.88],[0.0062127,-0.921927,0.386998,-0.0156269],[1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-320.92,503.94,388.88],[0.00621883,-0.921923,0.387007,-0.0156311],[1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[-323.41,311.32,388.88],[0.00621518,-0.921925,0.387003,-0.015623],[1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]] ]; VAR robtarget yuandian := [[584.30,98.67,388.88],[0.000927732,0.9636,-0.267343,0.00115184],[0,-1,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; VAR robtarget touliao := [[595.42,114.45,115.41],[8.54151E-05,0.951234,-0.308469,-6.39389E-05],[0,-1,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; VAR robtarget newguodudian := [[111.88,-309.89,388.88],[0.000206237,2.54575E-05,-1,-0.000101683],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; PROC main() VAR bool retval; SocketClose socket_client; SocketCreate socket_client; SocketConnect socket_client, "192.168.100.61", 8088; WHILE TRUE DO WaitDI DI02,0; Reset DO00; Reset DO01; Reset DO02; Reset DO03; Reset DO04; IF DI00=0 AND DI01= 0 THEN gotoAreaRobotPos 1, retval; ELSEIF DI00 = 1 AND DI01= 0 THEN gotoAreaRobotPos 2, retval; ELSEIF DI00 = 0 AND DI01= 1 THEN gotoAreaRobotPos 3, retval; ELSEIF DI00 = 1 AND DI01= 1 THEN gotoAreaRobotPos 4, retval; ENDIF IF(not retval) THEN WHILE DI04=0 DO WaitDI DI04, 1; WaitTime 0.05; ENDWHILE ENDIF ENDWHILE ENDPROC PROC jiexiweizhi(string sp, num index, inout robtarget data{*}, inout bool isError, inout bool isLastLayer) VAR num count := 1; VAR num pos_count := 1; VAR bool is_sucess := TRUE; VAR num para{7}:=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]; VAR string inputstr; VAR num found; VAR string split_string := ""; VAR num split_index; VAR string remain_string := ""; VAR bool isRecvComplete := FALSE; VAR bool isParseComplete := FALSE; isError := FALSE; isLastLayer := FALSE; WHILE not isRecvComplete DO SocketReceive socket_client, \Str:=inputstr, \Time:=WAIT_MAX; found := StrMatch(inputstr, 1, ";"); IF found <= StrLen(inputstr) THEN isRecvComplete := TRUE; inputstr := StrPart(inputstr, 1, found - 1); ENDIF split_index := 1; split_string := ""; isParseComplete := FALSE; WHILE not isParseComplete DO found := StrMatch(inputstr, split_index, sp); IF found <= StrLen(inputstr) THEN IF strLen(remain_string) > 0 THEN split_string := remain_string + StrPart(inputstr, split_index, found - split_index); remain_string := ""; ELSE split_string := StrPart(inputstr, split_index, found - split_index); ENDIF is_sucess := strtoval(split_string, para{count}); IF is_sucess THEN Incr count; ENDIF IF count = 8 THEN parsePos para, data{pos_count}; Incr pos_count; count := 1; ENDIF split_index := found + 1; ELSE isParseComplete := TRUE; remain_string := StrPart(inputstr, split_index, StrLen(inputstr) - split_index + 1); ENDIF ENDWHILE ENDWHILE found := StrMatch(remain_string, 1, "error"); IF found <= StrLen(remain_string) THEN isError := TRUE; ENDIF found := StrMatch(remain_string, 1, "yes"); IF found <= StrLen(remain_string) THEN isLastLayer := TRUE; ENDIF ENDPROC PROC parsePos(num data{*}, inout robtarget robpos) robpos.trans.x := data{1}; robpos.trans.y := data{2}; robpos.trans.z := data{3}; robpos.rot.q1 := data{4}; robpos.rot.q2 := data{5}; robpos.rot.q3 := data{6}; robpos.rot.q4 := data{7}; ENDPROC PROC gotoAreaRobotPos(num index, inout bool retVal) VAR robtarget new_position{6}; VAR string inputstr; VAR num found; VAR bool flag2 := TRUE; VAR bool isError; VAR bool isLastLayer; retval := TRUE; 程序如上,其中 PROC main() VAR bool retval; SocketClose socket_client; SocketCreate socket_client; SocketConnect socket_client, "192.168.100.61", 8088; 不知道什么意思 |
|
---|---|---|
|
gander2020
智能制造
級別: 論壇先鋒
|
大概解釋下,就是一個 Socket通訊的過程,連接相機或PC時使用: PROC main() VAR bool retval; //定義一個數據類型為bool 的變量 retval SocketClose socket_client; //關閉Socket連接 socket_client,這個socket_client變量在最頂部有定義,數據類型為socketdev SocketCreate socket_client;//創建Socket連接 socket_client SocketConnect socket_client, "192.168.100.61", 8088; //連接目標或地址:192.168.100.61 端口號 8088 |
|
---|---|---|
本帖最近評分記錄:
|