Hi KAWASAKI forum!
Previous data communication experiences were all based on the RS232C(Serial) method.
I'm never used TCP/IP communication.
That code based on Chapter 6.2.2 of the 90210-1248DEB.pdf manual, but I am not sure if it will work properly.
also, I hadn't any OLP program.
Please let me know if there are any areas that need improvement or if you have any advice. Thank you.
Code
.PROGRAM ip_connect()
; Client(Rob) connection request to Server(PC)
; Server Port Define
svr_port = 10000
; Server IP Define
svr_ip[1] = 192
svr_ip[2] = 168
svr_ip[3] = 125
svr_ip[4] = 200
; Timeout /sec
timeup = 10
TIMER (2) = 0
TCP_CONNECT svr_id, svr_port, svr_ip[1], timeup
IF svr_id = 0 THEN
PRINT "_"
PRINT ".Prog Ip_Connect"
PRINT "Connection Error"
STOP
ELSE
PRINT "_"
PRINT ".Prog Ip_Connect"
PRINT "TCP/iP Established!"
PRINT "Server ID= ", svr_id
PRINT "Taken Time= ", TIMER(2)
END
.END
.PROGRAM data_recv()
; Data Receive from Server
; Return ID (for Status Check)
rtn_id = 0
; Define String Length
str_length = 255
; Data's array count starting num
recv_ary = 1
; Timeout /sec
timeup = 10
TIMER(3) = 0
TCP_RECV rtn_id, svr_id, $recv_data[1], recv_ary, timeup, str_length
IF rtn_id <> 0 THEN
PRINT ""
PRINT ".Prog Data_Get"
PRINT "Data Receive Error= ", rtn_id
STOP
ELSE
IF recv_ary > 0 THEN
IF (recv_ary * max_length) <= 255 THEN
PRINT ""
PRINT ".Prog Data_Get"
PRINT "Data Recv OK"
PRINT "Number of array : ", recv_ary
PRINT "Final Raw data= ", $recv_data[1]
PRINT "Taken Time= ", TIMER(3)
$align = $recv_data[1]
ELSE
PRINT ""
PRINT ".Prog Data_Get"
PRINT "String too long= ", recv_ary
PRINT $recv_data[1]
STOP
END
END
END
.END
.PROGRAM data_send()
; String send to Server
; Get Model number from PLC
WAIT BITS(1057,8) <> 0
model = BITS(1057, 8)
; Trigger String Define
; "START" + "01" = "START01"
$img_num[1] = "01"
$img_num[2] = "02"
$header = "START"
$send_str[1] = $header + $img_num[model]
; Send String ($send_str) Array Index
start_idx = 1
; Return ID (for Status Check)
rtn_id = 0
; Timeout /sec
timeup = 10
TIMER(4) = 0
TCP_SEND rtn_id, svr_id, $send_str[1], start_idx, timeup
IF rtn_id <> 0 THEN
PRINT ""
PRINT ".Prog Data_Send"
PRINT "Data Send Error= ", rtn_id
STOP
ELSE
PRINT ""
PRINT ".Prog Data_Send"
PRINT "Data Send OK"
PRINT "Sent String= ", $send_str[1]
PRINT "Taken Time= ", TIMER(4)
END
.END
.PROGRAM ip_close()
; TCP Connection Terminate
; Return ID (for Status Check)
rtn_id = 0
TCP_CLOSE rtn_id, svr_id
IF rtn_id <> 0 THEN
PRINT ""
PRINT ".Prog Ip_Close"
PRINT "TCP Close Error= ", svr_id
STOP
ELSE
PRINT ""
PRINT ".Prog Ip_Close"
PRINT "TCP Close OK"
END
.END
Display More