一种基于TCPIP通信协议的自定义帧格式驱动方法及程序
技术领域
本发明涉及工业通信协议领域,尤其是基于TCP/IP开发的用于SanMotion与第三方控制器或其它的通信协议。
背景技术
TCP/IP是一个比较广泛应用于民用领域的通信协议,其可扩展性,非常强大。因为诞生之初就是专门为美国海军开发的通信系统,因此在工业领域使用也是水到渠成的。但是工控领域主要对其要求是开放,稳定。因此基于TCPIP的协议开发的其它工业协议逐步推向市场并越来越成熟。但是,正是由于其开放性造成基于TCP协议开发的自主协议大量的涌现出来,从而导致用户在使用不同厂家的控制硬件时没法联机直接读写其内部自定义的内存变量。
发明内容
本发明所要解决的技术问题是提供一种基于TCPIP通信协议的自定义帧格式驱动方法及程序,解决SanMotion控制器与S7300-CP343通信,并读写其自定义内存长度。
为解决上述技术问题,本发明的技术方案之一是:一种基于TCP/IP通信协议的自定义帧格式驱动方法,包括以下步骤:
(1)在服务器与客户端之间完成TCP/IP标准协议的通讯建立;
(2)使用二次握手协议保证数据的完整性;
(3)通过对发送接收数据的解码及格式变换,理解数据含义,制定通信协议符号对照表。
作为改进,所述步骤(1)中,使用SANMOTION控制器作为服务器, S7300-CP343通讯处理器作为客户端;并利用SANMOTION控制器的库函数完成TCP/IP标准协议的通信建立。
作为改进,所述步骤(2)的二次握手协议包括:
(2.1)通过客户端发送请求信号给服务器,服务器回应确认信号返回给客户端,确保通信建立,避免浪费通信资源;
(2.2)客户端发送固定长度数据包给服务器,服务器将收到的数据包返回给客户端进行二次确认并返回确认信号;
(2.3)服务器发送固定长度数据包给客户端,客户端将收到的数据包返回给服务器进行二次确认并返回确认信号。
作为改进,所述步骤(2.1)-(2.3)中,设计延时报警、清空数据进行故障安全保护措施。
作为改进,所述步骤(3)中,服务器接收到的字符以ASCII码对应的16进制数值存储;按照接收字符既定的编码方式进行反方向解码,分别制定出位、字、双字的通信协议对照表。
为解决上述技术问题,本发明的技术方案之二是:一种基于TCP/IP通信协议的自定义帧格式驱动程序,包括:
基于TCP/IP标准协议在服务器与客户端之间建立的通讯连接;
保证数据传输完整性的二次握手协议;
用于规定在程序中怎么使用收到的数据和打包一个发送的数据的通信协议符号对照表。
作为改进,使用SANMOTION控制器作为服务器, S7300-CP343通讯处理器作为客户端。
作为改进,二次握手协议包括:
(1)通过客户端发送请求信号给服务器,服务器回应确认信号返回给客户端,确保通信建立,避免浪费通信资源;
(2)客户端发送固定长度数据包给服务器,服务器将收到的数据包返回给客户端进行二次确认并返回确认信号;
(3)服务器发送固定长度数据包给客户端,客户端将收到的数据包返回给服务器进行二次确认并返回确认信号。
作为改进,服务器接收到的字符以ASCII码对应的16进制数值存储;按照接收字符既定的编码方式进行反方向解码,分别制定出位、字、双字的通信协议对照表。
本发明与现有技术相比所带来的有益效果是:
利用软件的方式取代大量外部硬件接线实现通讯方式,极大的节约了成本,并且可以实现单独靠接线不能实现的模拟量数据传输。并可实现通过Internet进行远程维护,监控。同时避免了直接使用国外进口的标准化硬件通信协议对内存数据访问量的限制,自行定义数据变量的传输数量及存储区。
附图说明
图1为本发明硬件测试系统示意图。
图2为本发明TCPIP通信建立的SANMOTION功能图。
图3为本发明二次握手协议流程图。
具体实施方式
一种基于TCPIP通信协议的自定义帧格式驱动程序,本发明可用于包装机械领域的码垛机器人的控制。本发明驱动程序包括;
(1)使用硬件平台,完成TCPIP标准协议的通讯建立;
(2)通过程序设计,使用二次握手协议保证数据的完整性;
(3)通过对发送接收数据的解码及格式变换,理解数据含义,制定通信协议符号对照表。
如图1所示,使用SANMOTION控制器作为服务器,S7300-CP343通讯处理器作为客户端搭建实验测试硬件平台。
如图2所示,利用SANMOTION的库函数即SanTcpIp_ServerFB,完成TCPIP标准协议的通信建立;Active表示的是通信建立状态。SendtoIP是客户端的IP地址,recedata是接收数据缓冲区,senddata是发送数据缓冲区。Send_number是本次发送数据个数,Recvnumber是接收数据个数,Send是标志位。
如图3所示,通信建立后,使用二次握手协议保证数据的完整性,包括以下步骤:
(1)通过S7300-CP343发送请求信号给SANMOTION,SANMOTION回应确认信号返回给S7300-CP343,确保通信建立,避免浪费通信资源;
(2)S7300-CP343发送固定长度数据包给SANMOTION,SANMOTION将收到的数据包返回给S7300-CP343进行二次确认并返回确认信号;
(3)SANMOTION发送固定长度数据包给S7300-CP343,S7300-CP343将收到的数据包返回给SANMOTION进行二次确认并返回确认信号。
以二次握手协议步骤(1)、(2)、(3),程序设计延时报警、清空数据进行故障安全保护措施。
那么,在程序中怎么使用收到的数据和打包一个发送的数据,是一个问题,所以有必要制定一个对应的表格去实现,然后把对应的规则制成标准定下来。
接收到的字符以ASCII码对应的16进制数值存储,按照接收字符既定的编码方式进行反方向解码,分别制定出位、字、双字的通信协议对照表。
例如:SANMOTION接收缓冲区的保存形式RecvData[0]=87,RecvData[1]=66,RecvData[2]=48,RecvData[3]=48,因此S7300-CP343发送给SANMOTION控制器的数据是87H,66H,48H,48H。根据此编码方式进行反方向解包并定义读取单个位的变量为“R_GenerateBit[XX]”后面两个“X”号代表从00到31,就是读取单个位是32位,对应发送方RB0X_Y,X对应发送的字节(0到3)、Y对应发送字节的位数(0到7);读取单个字的变量为“R_GenerateWord[XX]”后面两个“X”号代表从00到15,就是读取单个字是16个;读取单个双字的变量为“R_GenerateDWord[XX]”后面两个“X”号代表从00到07,就是读取单个双字是8个;同理制定出以下通信协议对照表。
Read_bit |
Commander |
Write_bit |
Commander |
R_GenerateBit[00] |
RB00_1 |
W_GenerateBit[01] |
WB00_1 |
R_GenerateBit[01] |
RB00_2 |
W_GenerateBit[02] |
WB00_2 |
R_GenerateBit[02] |
RB00_3 |
W_GenerateBit[03] |
WB00_3 |
... |
... |
... |
... |
R_GenerateBit[31] |
RB03_7 |
W_GenerateBit[31] |
WB03_7 |
上表位单个位操作对应的应用程序使用变量。
Read_bit |
Commander |
Write_bit |
Commander |
R_GenerateWord[00] |
RB04-RB05 |
W_GenerateWord [01] |
WB04-WB05 |
R_GenerateWord[01] |
RB06-RB07 |
W_GenerateWord [02] |
WB06-WB07 |
R_GenerateWord[02] |
RB08-RB09 |
W_GenerateWord [03] |
WB08-WB09 |
... |
... |
... |
... |
R_GenerateWord[15] |
RB34-RB35 |
W_GenerateWord[15] |
WB34-WB35 |
上表位单个字操作对应的应用程序使用变量。
Read_bit |
Commander |
Write_bit |
Commander |
R_GenerateDWord[00] |
RB36-RB39 |
W_GenerateDWord [01] |
WB36-WB39 |
R_GenerateDWord[01] |
RB40-RB43 |
W_GenerateDWord [02] |
WB40-WB43 |
R_GenerateDWord[02] |
RB44-RB47 |
W_GenerateDWord [03] |
WB44-WB47 |
... |
... |
... |
... |
R_GenerateDWord[07] |
RB64-RB67 |
W_GenerateDWord[15] |
WB64-WB67 |
上表位单个双字操作对应的应用程序使用变量。
本发明能够达到的效果:
(1)利用软件的方式取代大量外部硬件接线实现通讯方式,极大的节约了成本,并且可以实现单独靠接线不能实现的模拟量数据传输,并可实现通过Internet进行远程维护,监控;
(2)通过二次握手协议确保了数据包的准确性和完整性;
(3)通过制定协议通信对照表,极大的方便了首发数据的使用,而不再需要考虑中间数据转换解包过程;
(4)避免了直接使用国外进口的标准化硬件通信协议对内存数据访问量的限制,自行定义数据变量的传输数量及存储区。