在网上并无找到关于欧姆龙的FinsTcp协议的调试工具和仿真软件,但找到的一部分资料有使用一些Tcp/UdpSocket调试工具跟下位机PLC进行网络通信,因此个人认为上位机可以使用Java编写程序,通过Socket发送相关指令给下位机,进行握手连接和数据获取。

下位机的默认端口是9600,上位机通过该端口与下位机相连。

下面给出模拟数据,其中上位机ip假设为192.1.1.24;下位机ip假设为192.1.1.48

1)通信前要进行握手连接,其中上位机发给下位机的握手格式如下:

其发送的指令为:46494E53(FINS)0000000C(长度12字节)00000000(命令代码)00000000(错误代码)00000030(客户端节点号,ip的最后位)

2)下位机返回握手连接响应,其响应格式如下:

其返回的指令为:46494E53(FINS)00000010(长度16字节)00000001(命令代码)00000000(错误代码)00000030(客户端节点号)00000018(服务器节点号)

3)之后便可进行通信,通信过程中Tcp命令格式如下:

其中Fins帧的格式如下:

给出一个例子:46494E53(FINS)0000001A(数据长度26)00000002(命令代码)00000000(错误代码)80|00|02|00|18|00|00|30|00|00|0101|B1|0064|00|0001(FINS命令帧)

FinsFrame段解析:

1)80:ICF段,80标识要求有回复,81标识不要求有回复;

2)00:RSV段,默认为00;

3)02:GCT段,表示穿过的网络层数量,0层为02,1层为01,2层为00;

4)00:DNA段,目的网络地址;

5)18:DA1段,目的节点地址,默认是目的PLC的ip地址的最后位(上述PLC的ip地址为192.1.1.24,因此该段为18);

6)00:DA2段,目的单元地址;

7)00:SNA段,源网络地址;

8)30:SA1段,源节点地址,即上位机ip地址的最后位(上述上位机的ip地址为192.1.1.48,因此该段为30);

9)00:SA2段,源单元地址;

10)00:SID段;

11)0101:读写具体命令,0101表示读,0102表示写;

12)B1:相应区域和具体方式,B1表示WR区按字,B0表示CIO区按字,30   表示CIO区按位;

13)0064:寄存器地址;

14)00:位地址,即读取数据的首地址;(原本为000000,在读的时候仅前两个字节有效,因此为00)

15)0001:读取的数量。

得到的响应反馈为:

46494E53(FINS)00000018(数据长度24)00000002(命令代码)0000 0000(错误代码)C0 00 02 00 30 00 00 18 0000 01 01 00 00 12 34 (FINS反馈帧,其中1234是反馈数据)

 

以上是关于上位机用Socket来获取下位机PLC数据的相关方法和指令,整个过程并无进行测试操作,其可行性无法确定,欢迎提出纠正。我也会继续查找相关资料和模拟软件确定方案。

FinsTCP协议的Java Socket相关推荐

  1. Java Socket通信之TCP协议

    文章目录 一. Java流套接字通信模型 1.TCP模型 2.TCP Socket常见API ServerSocket API Socket API 二.TCP流套接字编程 1.回显服务器 2.多线程 ...

  2. JAVA socket编程 Datagram套接字 UDP协议(转)

      查看文章     JAVA socket编程 Datagram套接字 UDP协议 2009-05-13 09:35 1 UDP套接字 数据报(Datagram)是网络层数据单元在介质上传输信息的一 ...

  3. java android长连接_基于Java Socket的自定义协议,实现Android与服务器的长连接(一)...

    一.基础知识准备 在正式给大家介绍自定义协议之前,我们先对网络传输和协议解析的相关知识点做一个基本的介绍,尽管这些知识点我们在学校里学过,但难免会有所遗忘,这里先做一个简单的介绍,以便对后文的内容理解 ...

  4. 基于TCP/IP协议的Java服务端与Android客户端的Socket通信及数据交互

    基于TCP/IP协议的Java服务端与Android客户端的Socket通信及数据交互 一.前言 1.Java服务端程序代码的项目名为TcpSocketServerOfJava,包名为com.exam ...

  5. 【Java Socket】TCP协议的多人聊天室

    最近老师叫我们做一个基于Socket的多人聊天室,网上很多教程都只讲了如何通过Socket来建立连接以及通过控制台一遍打印证明连接已经完成但还没有具体实现多人聊天.这次我整理了一下自己的实现代码,希望 ...

  6. Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...

    此人博客挺好的,推荐一个! 一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成. 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实 ...

  7. Java Socket编程 - 基于TCP方式的二进制文件传输

    一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成. 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实现主要功能有以下几点: 1. ...

  8. 基于Java的RDMA高性能通信库(六):SDP - Java Socket Direct Protocol

    目录 1.Java网络编程和套接字API的历史 2.InfiniBand 高速网络通信技术 3. Java 网络协议栈API 4.Java 7 SDP 远程直接内存存取(RDMA) 4.1 Java7 ...

  9. 基于Java的RDMA高性能通信库(二):Java Socket Over RDMA

    目录 1.Comparing JSOR with Java TCP communications 2.Comparing JSOR to Java Sockets Direct Protocol (S ...

  10. JAVA Socket 底层是怎样基于TCP/IP 实现的???

    首先必须明确:TCP/IP模型中有四层结构:       应用层(Application Layer).传输层(Transport  Layer).网络层(Internet Layer  ).链路层( ...

最新文章

  1. Ubantu安装maven
  2. 一篇值得收藏的正则表达式文章
  3. python怎么安装jieba库-python环境jieba分词的安装
  4. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 同时注入普通方法、静态方法、构造方法 )
  5. 图文解释Glados自动签到免费获取天数(腾讯云函数serverless版)
  6. mysql select内部原理_数据库SQL SELECT查询的工作原理
  7. 操作XML 报错:根级别上的数据无效 和 给定编码中的字符无效 解决办法
  8. java泛型的作用及其基本概念
  9. PHP配置限制文件大小上传
  10. 当打开VS2013卡到吐,并且点一下卡一下
  11. 在线考试系统详细设计
  12. 笔记本win10 QQ能登上,网页打不开
  13. 方舟生存进化手游版服务器维护,方舟生存进化手游PVX服务器规则一览 PVX服务器怎么玩_3DM手游...
  14. java super extend 区别_Java泛型中extends和super的区别
  15. wepy(minUI)框架学习
  16. Android UI个性style
  17. 让dropout在图像超分辨领域大放异彩![2022 CVPR]
  18. asp.net 页面加载
  19. 循环序列模型总结之LSTM
  20. 重装win7系统、制作win7U盘启动盘【官方纯净版,不依靠任何第三方插件】

热门文章

  1. office 2010 Word,Excel的功能区突然消失了
  2. 科三——细则以及扣分点
  3. Flutter实战】文本组件及五大案例
  4. Spotfire调试经验——环比增长率的动态计算(Dynamic moving data percentage calculation in Spotfire visualization)
  5. 设置定时器,持续调用接口
  6. win7计算机无法远程桌面连接,解决win7无法被远程桌面连接教程
  7. iOS之解决崩溃Collection was mutated while being enumerated.
  8. 最小径集的算法_【ZZ】最小割集Stoer-Wagner算法
  9. 模电--反馈电路的综合判断
  10. STM32单片机中定义结构体类型指针