freegate v7.61FINS协议包含指令系统和响应系

电脑杂谈  发布时间:2018-11-16 02:08:07  来源:网络整理

freegate v7.61_freegate安卓版2017_gate

FINS协议包含指令系统和响应系统,其命令帧格是由FINS报头、指令代码、响应代码和正文等几部分组成。从上位计算机发出的指令和响应必须符合下面帧的格式要求,并提供合适的FINS报头信息。[3-4]FINS通信服务是通过FINS命令帧和它们对应的响应帧交换实现的。

FINS命令/响应帧格式如图3所示。FINS/TCPheader中规定了五种命令,用于客户机(hostcomputer)与服务器(PLC)之间通信:发送客户机节点地址(nodeaddress);(2)发送服务器节点地址(nodeaddress);(3)发送Finsframe;(4)Finsframe发送出错通知;(5)客户机与服务器联机确认。

图3FINS命令/响应帧格式

4.通信程序的具体实现

在新建VB工程后,需要执行VB工具栏“工程/部件”命令,将Winsock控件添加到工程中,并命名为“WskClient”。程序采用TCP/IP协议进行通信,其主要属性设定如下:

WithWskClient

.Protocol=sckTCPProtocol‘采用TCP/IP协议

.LocalPort=9600‘本地计算机端口号

.RemoteHost=txtIP.Text‘取得远程PLC的IP地址

.RemotePort=txtPort.Text‘远程PLC端口号

.Bind9600‘指定使用的本地端口

EndWith

初始化工作完成后向PLC提出连接请求,待PLC接受请求并发送应答信息后,客户端程序依照各种帧格式建立好要发送的信息帧,就可以与PLC进行双向的数据交流了。在这一过程中,可建立发送失败后的重发机制,以增强通信的可靠性。

首先,建立并发送“握手信息”指令(20字节),指明客户机节点号;当计算机接收到PLC返回帧(24字节)后,检查PLC是否收到命令,并取得服务器和客户机节点号。当计算机接收到PLC返回的数据时,会产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在DataArrival事件中,可以调用GetData方法接收数据。如果接收到Close事件,则用Close方法关闭连接。另外,可用Winsock的State属性来反映当前TCP/IP的连接状态。这里仅列举主要程序如下:

‘向服务器请求连接

WskClient.Connect

TimeDelay100

Do

DoEvent

LoopUntilWskClient.state=sckConnected

‘建立并发送FINS命令帧

PrivateSubSendData_Click()

ReDimSendData(19)AsByte

SendData(0)=&H46‘FINS命令帧报头的第1个字节

……

WskClient.SendDataSendData()‘发送FINS命令帧

EndSub

‘接收PLC响应帧,并分析数据

PrivateSubWskClient_DataArrival(ByValbytesTotalAsLong)

DimiAsInteger

ReDimArriveData(bytesTotal)AsByte

wsk.GetDataArriveData,vbArray+vbByte,bytesTotal

‘接收数据,保存在ArriveData数组中

Fori=0TobytesTotal-1

txtArData.Text=txtArData.Text&""&ArriveData(i)

Nexti

……‘其它数据处理

IfArriveData(7)<>16Then


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-90206-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 段超荣
      段超荣

      找过期商品吧

    • 孙旖婧
      孙旖婧

      地球动荡的根过太源歇斯底里了

      • 胡笛
        胡笛

        老子服了你这些崇洋媚外的脑残了

    热点图片
    拼命载入中...