https://github.com/codershiyar/kawasaki_robot_udp_tcp
A comprehensive guide and example code to establish UDP communication between a PC and a Kawasaki robot.
https://github.com/codershiyar/kawasaki_robot_udp_tcp
as-language industrial-automation kawasaki network-communication python robot-programming robotics-programming tcp tcp-client tcp-protocol tcp-server tcp-socket udp udp-client udp-server udp-socket
Last synced: 2 months ago
JSON representation
A comprehensive guide and example code to establish UDP communication between a PC and a Kawasaki robot.
- Host: GitHub
- URL: https://github.com/codershiyar/kawasaki_robot_udp_tcp
- Owner: codershiyar
- Created: 2024-05-22T10:01:04.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-28T10:26:06.000Z (about 1 year ago)
- Last Synced: 2025-03-29T01:11:12.022Z (3 months ago)
- Topics: as-language, industrial-automation, kawasaki, network-communication, python, robot-programming, robotics-programming, tcp, tcp-client, tcp-protocol, tcp-server, tcp-socket, udp, udp-client, udp-server, udp-socket
- Language: AngelScript
- Homepage:
- Size: 22.5 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Kawasaki Robot UDP Communication
This repository contains example code to demonstrate how to establish a UDP communication between a PC and a Kawasaki robot.
## Files
- `robot_script.as`: Kawasaki robot AS language script to receive UDP messages.
- `send_message.py`: Python script to send UDP messages to the robot.
- `robot_tcp_communication.as`: Kawasaki robot AS language script to establish TCP connection, receive data, and close the connection.
- `robot_tcp_communication.py`: Python script to send TCP messages to the robot.## Setup
### Kawasaki Robot
1. Set up the robot with the provided script `robot_script.as`.
2. Ensure the robot's IP address and port are correctly configured.### Python Script
1. Ensure you have Python installed on your PC.
2. Update the `ROBOT_IP` and `ROBOT_PORT` variables in `send_message.py` to match your robot's configuration.### UDP Communication
1. Run the Kawasaki robot script `robot_script.as` on the robot.
2. Execute the Python script `send_message.py` on your PC to send messages to the robot:```bash
python send_message.py
```3. The robot will receive the message and print it to its console.
### TCP Communication1. Run the Kawasaki robot script `robot_tcp_communication.as` on the robot.
2. The script contains three main programs:
- `connect_to_pc`: Establishes the TCP connection to the PC.
- `receive_data`: Continuously receives data from the PC and prints it.
- `close_connection`: Closes the TCP connection.## Troubleshooting
- Ensure both the PC and the robot are on the same network.
- Verify the IP address and port configurations on both the PC and the robot.
- Check for any network firewalls that might be blocking UDP or TCP traffic.## TCP Communication Script Details
### `robot_tcp_communication.as`
```as
.PROGRAM connect_to_pc()
; Configuration for connection using TCP.
; This scripts are created by Coder Shiyar
timeout_open = 60
pc_ip[1] = 192
pc_ip[2] = 168
pc_ip[3] = 0
pc_ip[4] = 2 ; PC's IP address
pc_port = 10001
error_count = 0connect:
; Start timer
TIMER (2) = 0
; Attempt to connect to the PC
TCP_CONNECT socket_id, pc_port, pc_ip[1], timeout_open
; Check if connection is successful
IF socket_id < 0 THEN
error_count = error_count + 1
IF error_count >= 5 THEN
PRINT "Client Communication with PC has failed"
ELSE
PRINT "TCP_CONNECT error id = ", socket_id, ", error count = ", error_count
GOTO connect
END
ELSE
PRINT "TCP_CONNECT OK id = ", socket_id, ", with time elapsed = ", TIMER (2)
END
.END.PROGRAM receive_data()
; Loop to receive data continuously
WHILE TRUE DO
num_bytes = 10
max_length = 10
timeout_receive = 60
recv_result = 0
; Receive data from the PC
TCP_RECV recv_result, socket_id, $receive_buffer[1], num_bytes, timeout_receive, max_length
; Check if data reception is successful
IF recv_result < 0 THEN
PRINT "TCP_RECV error in RECV", recv_result
$receive_buffer[1] = "000"
ELSE
IF num_bytes > 0 THEN
; Print received data
FOR i = 1 TO num_bytes
PRINT "RecBuff[", i, "] = ", $receive_buffer[i]
; Check for specific messages
IF $receive_buffer[1] == "1" THEN
PRINT "IT IS 1"
END
IF $receive_buffer[1] == "2" THEN
PRINT "IT IS 2"
END
END
ELSE
$receive_buffer[1] = "000"
recv_result = -1
END
END
END
.END.PROGRAM close_connection()
; Close the connection to the PC
close_result = 0
IF socket_id >= 0 THEN
TCP_CLOSE close_result, socket_id
END
; Check if the connection is closed successfully
IF close_result < 0 THEN
PRINT "TCP_CLOSE error id = ", socket_id
ELSE
PRINT "TCP_CLOSE OK id = ", socket_id
END
.END