ロボットプログラムでのTCP通信設定方法
本記事では、FAIRINOロボットから外部機器(PC・画像処理装置)とTCP通信を行う方法について、Luaコード例と実用上のポイントをまとめました。
スクリプト入力モードへの切り替え
”Toggle Mode”アイコン「⇆」をクリックすることでスクリプト入力モードに切り替えられます。


外部デバイスとソケット通信を実施するサンプルプログラム
-- FAIRINO制御用 Luaスクリプト(V3.9.2)
-- 接続先IPアドレス
local ip = "192.168.58.5"
-- ポート番号
local port = 50001
-- ソケット接続
local reply = SocketOpen(ip, port, "socket_0")
-- 接続確認
if reply == 0 then
return print("Connection is failed!")
end
-- データ(文字列)送信
SocketSendString("VisionStart", "socket_0", 1)
-- データ受信(4つのfloat値)
local n, d1, d2, d3, d4 = SocketReadAsciiFloat(4, "socket_0", 0)
if d1 == 0 then
return print("no work")
end
-- 現在位置からx方向にd2mm、y方向にd3mmオフセットした位置に移動
Lin(CurrentPos,100,-1, 0, 1, 0, d2, d3, 0, 0, 0, 0, 100, 200)ソケット通信で使用する関数の説明
ソケットオープン関数 SocketOpen
機能: TCPソケットをオープンする
文法: SocketOpen(ip, port, socket_name)
引数:
ip IPアドレスを入力 例 “192.168.58.5”
port ポート名 例 50001
socket_name ソケット名を示し”socket_(数値)”の形にする 例 “socket_0”
戻り値: 成功で1、失敗で0を返す
ソケットクローズ関数 SocketClose
機能: TCPソケットをクローズする
文法: SocketClose(socket_name)
引数:
socket_name オープン時に作成したソケット名
戻り値: 成功で1、失敗で0を返す
メッセージ(文字列)送信関数 SocketSendString
機能: 接続したサーバーに文字列データを送信する
文法: SocketSendString(msg, socket_name, val)
引数:
msg 送信する文字列 例 “VisionStart”
socket_name オープン時に作成したソケット名 例 “socket_0”
val 不明(判明したら追記します)
戻り値: 成功で0、失敗で1を返す
メッセージ受信関数 SocketReadString
機能: サーバーから受信した文字列を取得する
文法: SocketReadString(socket_name, val)
引数:
socket_name オープン時に作成したソケット名
val タイムアウト時間(単位秒)
戻り値: str 受信した文字列データ。
メッセージ受信関数 SocketReadAsciiFloat
機能: サーバーから受信した文字列を、指定した数の数値配列データに変換し取得する
文法: SocketReadAsciiFloat(num, socket_name, val)
引数:
num 受信する数値データの配列数
socket_name オープン時に作成したソケット名
val タイムアウト時間(単位秒)
戻り値:
n … 受信したデータの配列数。引数の指定数より少ない場合は0を返す
d1, d2, d3, d4 … 受信した数値(浮動小数点)データ。
Note
メッセージ受信関数SocketReadString、SocketReadAsciiFloatで設定したタイムアウト時間内にデータを受信できなかった場合は、システムエラー(警告)が発生します
Note
SocketSendByte、SocketSendInt、SocketSendLine、SocketReadByteList、SocketReadBinaryIntegerといった関数はサジェストではでてくるものの実装されておらず、プログラム保存時にエラーが発生します。
