EPSON TCP/IP 通信

EPSON SCARA机器人TCP/IP 通信时,涉及到的相关指令说明。

14.3 TCP/IP命令。

OpenNet    //打开TCP/IP端口。
ChkNet     //返回端口状态:等待读取的字节数或错误条件。
CloseNet   //关闭TCP/IP端口。
SetNet     //运行时或从命令窗口中设置通信端口参数。
Print #   //从端口中发送字符。
Input #   //从端口接收字符到一个或多个变量中。
Line Input #  //从端口接收一行字符到一个字符串变量中。
Read #    //从端口接收一行以上字符到一个字符串变量中。
ReadBin #   //从端口中接收一个或多个字节。
Write #     //从端口中发送字符。
WriteBin #  //从端口中发送一个或多个字节。

OpenNet # 端口编号 As { Client | Server }


说明:  OpenNet用于打开TCP/IP端口,以便与网络上的其它电脑进行通信。1个系统作为服务器打开,其它系统作为客户端打开。先启动哪个都可以

格式:   OpenNet # 端口编号 As { Client | Server }

参数:   端口编号  指定要打开的TCP/IP端口编号的整数值。端口编号的范围为201 - 216。

示例:

Controller #1:
Port: #201
Host Name: 192.168.0.2
TCP/IPPort: 1000
 
Function tcpip
   OpenNet#201 As Server
   WaitNet #201
   Print #201, "Data from host 1"
Fend
 
 
Controller #2:
Port: #201
Host Name: 192.168.0.1
TCP/IPPort: 1000
 
 
Function tcpip
   String data$
   OpenNet#201 As Client
   WaitNet #201
   Input #201, data$
   Print "received '", data$, "' from host 1"
Fend

OpenNet( 端口编号 )

说明:    用于获取实施OpenNet的任务编号。
格式:    OpenNet( 端口编号 )  

参数:     端口编号 指定要打开的TCP/IP端口编号的整数值。端口编号的范围为201 - 216。

示例:

Print OpenNet(PortNo)


ChkNet(通信端口编号)

说明:       用于返回网络端口的接收缓冲器内的字符数。

格式:       ChkNet(通信端口编号)


参数:      通信端口编号 指定TCP/IP端口编号 (201- 216)。

返回值:   返回接收字符数(整数值)。 

                如果不存在接收数据,以下述负值返回端口状态。 

                -1  端口已打开,但是未确立通信

                -2  其他任务正在使用端口

                -3  未打开端口


示例:

Integer numChars
numChars = ChkNet(201)


CloseNet# 通信端口编号| All


说明:  用于关闭OpenNet打开的TCP/IP端口。

格式:  CloseNet# 通信端口编号| All 


参数: 通信端口编号  指定要关闭的TCP/IP端口编号(201 - 216)。

           如果指定All,将关闭该任务打开的所有TCP/IP端口。


示例:

CloseNet #201


SetNet #通信端口编号,主机地址,TCP/IP端口编号,终止符,流控制,超时时间


说明:  用于设置TCP/IP端口参数。

格式:  SetNet #通信端口编号,主机地址,TCP/IP端口编号,终止符,流控制,超时时间

参数: 通信端口编号  指定要设置参数的TCP/IP的端口编号。范围为201 - 216。

            主机地址  指定主机的IP地址。

            TCP/IP端口编号  指定TCP/IP端口编号。

            终止符  指定CR、LF、CRLF中某个行末字符。

            流控制  是指软件流控制。指定NONE。

            超时时间  以秒指定收发的最长时间。指定0时,超时则变为无限。

 备注:  参数被保存在控制器内的小型闪存卡中。如果执行SetNet,则会向小型闪存卡执行写入操作。!!

            过于频繁地向小型闪存卡执行写入会影响到卡的使用寿命。建议仅在需要变更参数时执行SetNet。!!


示例:

SetNet#201, "192.168.0.1", 2001, CRLF, NONE, 0


Print #端口编号,  输出数据[,输出数据...] [,] 

说明:  Print # 用于将变量数据、数值或字符串输出到由端口编号指定的通信端口或装置中。

格式:  Print #端口编号,  输出数据[,输出数据...] [,]

参数:  端口编号  是表示文件、通信端口、数据库或装置的ID编号。

                          文件编号是由ROpen、WOpen、AOpen等语句指定的编号。

                          通信端口编号是由OpenCom(RS-232C)或OpenNet(TCP/IP)语句指定的编号。

                          数据库编号是由OpenDB语句指定的编号。

                          装置ID为以下数值。

                                 21 RC+ 

                                 24 TP 

                                 28 LCD 

           输出数据...  指定数值或字符串。

           , (逗号)   如果语句的结尾有逗号,则不进行改行。可省略。

注意: 最大数据长度!

本命令一次可处理的最大数据长度为256 Byte。但对象为数据库时,最大数据长度为4096 Byte。

与其它控制器进行变量交换时 -  指定多个字符串变量,以及指定数值变量和字符串变量两者时,需要在字符串数值数据中明确添加分隔符(定多个字。

使用通信端口交接控制器之间的字符串变量、数值变量。


发送侧  (任一模式即为OK。)

Print #PortNum, "$Status,", InData, OutData
Print #PortNum, "$Status", ",",InData, OutData

接收侧

Input #PortNum, Response$, InData, OutData

向文件写入时进行缓冲:可利用Flush语句写入被缓冲的数据。利用Close语句关闭文件时也进行写入。
示例:

Function printex 
   String temp$ 
   Print #1, "5"  '将_5输出到端口_1中 temp$ = "hello"
   Print #1, temp$ 
   Print #2, temp$ 
   Print #1 " Next message for port 1" 
   Print #2 " Next message for port 2" 
Fend

Input  #端口编号,变量名[,变量名,变量名,...]


说明: 用于从文件、通信端口、数据库或装置接收字符串或数值数据,并将其据保存到变量中。

格式: Input  #端口编号,变量名[,变量名,变量名,...]

参数: 端口编号  是表示文件、通信端口、数据库或装置的ID编号。

                          文件编号是由ROpen、WOpen、AOpen等语句指定的编号。

                          通信端口编号是由OpenCom(RS-232C) 或OpenNet(TCP/IP) 语句指定的编号。

                          数据库编号是由OpenDB语句指定的编号。

                          装置ID为以下数值。

                             21 RC+ 

                             24 TP 

           变量名  指定接收数据的变量名。


         注意:

          数值输入规则:进行数值输入时,如果有分隔符以外的非数值数据,将舍去该非数值数据及其以后的数据。

          字符串输入规则:代入到字符串中时,将把数字和字母作为字符处理。

          最大数据长度:本命令一次可处理的最大数据长度为256 Byte。但对象为数据库时,最大数据长度为4096 Byte。

          与其他的Input命令有关的规则:


                -为代入对象指定多个变量时,各个要代入的数值数据必须用分隔符“,” 或空白(“”)分隔。

                -指定多个字符串变量以及指定数值变量和字符串变量两者时,数值数据必须用分隔符“,”或空白、(“”)分隔,而字符串数据必须用分隔符“,” 分隔。

                -输入数据类型必须符合代入对象的变量类型。


         使用通信端口交接控制器之间的字符串变量、数值变量示例:

                发送方  (任一模式即为OK。)

Print #PortNum, "$Status,", InData, OutData
Print #PortNum, "$Status", ",",InData, OutData

 接收方

Input #PortNum, Response$, InData, OutData

 易引起的错误:指定的变量数与输入数据的数量不一致时,如果命令指定的变量数与从设备接收的数值数据的数量不一致,将出现错误2505。

示例:

Function GetData 
     Integer A 
     String B$ 
     OpenCom #1 
     Print #1, "Send" 
     Input #1, A'从端口#1获取数值
     Input #1, B$ '从端口#1获取字符串
     CloseCom #1 
Fend

Line Input #端口编号,字符串变量名$


说明:  Line Input # 用于从由端口编号指定的装置读入读入1行数据,并代入到由字符串变量名$指定的变量中。

格式:  Line Input #端口编号,字符串变量名$

参数:

            端口编号  是表示文件、通信端口、数据库或装置的ID编号。

                           通信端口编号是由OpenCom(RS-232C) 或OpenNet(TCP/IP) 语句指定的编号。

                           数据库编号是由OpenDB语句指定的编号。

                           装置ID为以下数值。

                                21 RC+ 

                                24 TP 

            字符串变量名$,  指定字符串变量名。(请在字符串变量名最后附加$。)

示例:  

Function lintest  //下例所示为从通信端口1接收字符串数据并代入到字符串变量A$中。
    String a$
    Print #1, "Please input string to be sent to robot"
    Line Input#1, a$
    Print "Value entered = ", a$
Fend

Read #端口编号,字符串变量$,字符数


说明: 用于从文件或通信端口读入指定的字符数。

格式: Read #端口编号,字符串变量$,字符数

参数:

           端口编号  是表示文件或通信端口的ID编号。

                         文件编号是由ROpen、WOpen、AOpen等语句指定的编号。

                         通信端口编号是由OpenCom (RS-232C) 或OpenNet (TCP/IP) 语句指定的编号。

           字符串变量$  指定接收字符串的字符串变量名。

           字符数  指定要读入的字节数。

示例:

Integer numOfChars
String data$
numOfChars = ChkCom(1)
If numOfChars > 0 Then
Read#1, data$, numOfChars
EndIf

ReadBin #端口编号,变量名


ReadBin #端口编号,数组变量名(),字节数


说明:  用于从文件或通信端口读取二进制数据。

格式:  ReadBin #端口编号,数组变量名(),字节数

参数:  端口编号  是表示文件或通信端口的ID编号。

                          文件编号是由BOpen等语句指定的编号。

                          通信端口编号是由OpenCom (RS-232C) 或OpenNet (TCP/IP) 语句指定的编号。

           变量名     指定接收数据字节以及Byte型变量、整数变量或Long型变量的名称。

           数组变量名()  指定接收数据字节以及Byte型变量、整数变量或Long型变量的名称。可指定一维数组变量。

           字节数  指定要读入的字节数。需为最大数组下标以下(也就是不能超过数组下标,否则数组容易溢出)。

示例:

Integer data
Integer dataArray(10)
numOfChars = ChkCom(1)  //ChkCom(通信端口编号)。用于返回通信端口的接收缓冲器内的字符数。
  If numOfChars > 0 Then
     ReadBin#1, data
  EndIf
numOfChars = ChkCom(1)
  If numOfChars > 10 Then
     ReadBin#1, dataArray(), 10
  EndIf

Write # 端口编号, 字符串


说明:  用于将字符串写入到文件或通信端口中。不附加行末终止符。Write命令不同于Print命令,不附加行末终止符。

格式:  Write # 端口编号, 字符串

参数:  端口编号  是表示文件或通信端口的ID编号。

                          文件编号是由ROpen、WOpen、AOpen等语句指定的编号。

                          通信端口编号是由OpenCom(RS-232C)或OpenNet(TCP/IP)语句指定的编号。

            字符串     指定要写入的字符串。

  注意: 向文件写入时进行缓冲。可利用Flush语句写入被缓冲的数据。利用Close语句关闭文件时也进行写入。

示例:

OpenCom #1
For i = 1 to 10
Write#1, data$(i)
Next i
CloseCom #1

WriteBin #端口编号,写入数据

WriteBin #端口编号,数组变量名(), 字节数


说明:  用于将二进制数据写到文件或通信端口中。

格式:  WriteBin #端口编号,写入数据

            WriteBin #端口编号,数组变量名(), 字节数

参数:  端口编号  是表示文件或通信端口的ID编号。

                           文件编号是由BOpen等语句指定的编号。

                           通信端口编号是由OpenCom(RS-232C)或OpenNet(TCP/IP)语句指定的编号。

            写入数据  以整数或表达式指定要写入的数据。

            数组变量名()  指定保存写出数据字节的Byte型变量、整数变量或Long型变量的名称。可指定一维数组变量。

            字节数  指定要写出的字节数。需为最大数组下标以下(也就是不能超过数组下标,否则数组容易溢出)。


示例:

Integer i, data(100)
OpenCom #1 
For i = 0 To 100 
WriteBin#1, i
Next i
WriteBin#1, data(), 100 
CloseCom #1


下面是另一篇文章中举的一个例子,请参考:

image.png

image.png

image.png

image.png

image.png


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年3月    »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864