python实现FINS协议的TCP服务端(篇一)

python实现FINS协议的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样,可以使用现成的pymodbus模块去实现。但是,我们可以根据协议帧进行组包,自己去实现帧的格式,而这一切可以基于socket模块。本文为第一篇。

一、了解FINS协议

参考文档:FinsTCP协议报文详细分析 - 知乎

1、什么是FINS协议

FINS(Factory Interface Network Service)是欧姆龙(Omron)工业自动化设备使用的通信协议,这表明我们需要查阅官方文档来实现这个协议,而该协议具有以下特点:

高效性: FINS协议是为了在工业自动化环境中实现高效通信而设计的,具有较低的通信延迟和高速数据传输能力。

灵活性: FINS协议支持多种通信方式,包括串行通信、以太网通信等,可以适应不同的网络环境和硬件设备。

多功能性: FINS协议支持多种通信功能,包括读写PLC的数据、控制PLC的操作、监控PLC的状态等,提供了丰富的通信能力。

可靠性: FINS协议具有良好的错误检测和纠正机制,确保通信数据的可靠性和完整性。

扩展性: FINS协议支持多种数据类型和数据格式,可以满足不同应用场景下的需求,具有较强的扩展性。

标准化: FINS协议是欧姆龙PLC的标准通信协议,得到了广泛应用和认可,在工业自动化领域具有一定的标准性和通用性。

易用性: FINS协议的通信指令相对简单,易于理解和实现,使得工程师能够快速开发和部署与欧姆龙PLC通信的应用程序。

2、FINS TCP与TCP的关系

FINS TCP(Factory Interface Network Service over TCP/IP)是FINS协议在TCP/IP网络上的实现方式。它是FINS协议的一种变体,使用TCP/IP作为传输层协议,用于在工业自动化系统中实现设备之间的通信。

TCP(Transmission Control Protocol)是互联网上的一种通信协议,它是面向连接、可靠的、基于字节流的传输层协议。TCP提供了数据的可靠传输,确保数据在传输过程中不会丢失或损坏。TCP协议在网络通信中广泛应用,用于建立可靠的、稳定的数据传输连接。

FINS TCP是在TCP协议的基础上实现的FINS协议,它使用TCP连接来传输FINS协议的数据。在FINS TCP中,FINS帧(Frame)被封装在TCP报文中进行传输。FINS帧包含了FINS协议的控制信息和数据内容,通过TCP连接传输到目标设备,然后在目标设备上进行解析和处理。

FINS TCP的使用使得在工业自动化系统中,不同设备(如PLC、传感器、HMI等)之间可以通过TCP/IP网络进行可靠的通信。这种通信方式广泛应用于现代工厂自动化系统中,为设备间的数据交换提供了高效、可靠的解决方案。

这也是为什么我们可以通过socket模块来实现的原因。

3、请求包

46 49 4E 53 00 00 00 1A 00 00 00 02 00 00 00 00 80 00 02 00 01 00 00 01 00 0F 01 01 82 00 64 00 00 01

4、响应包

46 49 4E 53 00 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 00 73 00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SoC和微控制器(MCU)

目录 SoCSTM32F407IGT6 MCUSTM32 SoC SoC是一种集成电路,将多个功能模块集成在一个芯片上,包括处理器、内存、外设接口、通信接口等。SoC通常用于嵌入式系统、移动设备和物联网等领域,提供了丰富的功能和性能。 STM32F407IGT6 STM32F407IG…

Jquery 老项目引入vue,elementui

背景: juery是一个广泛使用的JavaScript库,用于简化DOM操作、事件处理、动画效果等常见任务。 Vue是一个现代化的JavaScript框架,专注于构建可复用的组件和实现响应式数据绑定。在开发jQuery项目时,我们常常需要在JavaScript代码…

MTK_ISP模块调试总结

目录 一、多帧丢帧确认 二、4G平台高ISO黑白噪去除 三、PD补偿确认 四、5G平台CA-LTM修改 五、四角偏暗case 六、ISO档位不匹配 七、5G平台多帧参数不生效 八、验证ISP通道参数生效方法

java实现wav的重采样

在处理一些用户上传的音频的时候,往往根据用户的设备不通,文件格式难以统一,尤其是涉及到算法模型相关的,更是令人头疼,这里提供两种思路解决这个问题。 不借助三方库 这种采用的是javax.sound.sampled下的包来实现&a…

H5横屏适配方案

横屏模式一般使用场景比较少&#xff0c;特殊情况除外&#xff0c;一般用于游戏、操作性比较大的网页会采用横屏 整体代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" conte…

事务码增删查改表数据

常用事务码 SE11 SE14 SE16 SE16N SM30 SE11:查看数据库表/修改表中字段数量_类型/查看表中数据/设置表为可维护或不可维护 SE14:查看数据库表的创建日期创建用户名/查看表中字段/删除表中全部数据(只能全部删) SE16:查看数据库表/对可维护数据库表进行数据维护/SE16通过调试…

python语法杂记

python基础&#xff1a; 1)常用的数据结构(集合) 数据双向链表queue:队列和栈 排序字典:orderrdDict 计数器:counter 2)模块 什么是模块&#xff1f; 什么是包及如何使用第三方包&#xff1f; 模块使用总结&#xff1f; 3)函数 自定义函数一般格式&#xff1b; 函数参数中…

牛客网面试必刷TOP101--C++详细题解

题目 NC65 斐波那契数列NC103 反转字符串NC141 判断是否为回文字符串NC151 最大公约数NC4 判断链表中是否有环NC7 买卖股票的最好时机(一) NC65 斐波那契数列 题目描述&#xff1a; 分析&#xff1a; 使用递归求解&#xff0c;当输入参数等于1、2时返回整数1 class Solution …

npm包管理相关命令

前置条件&#xff0c;准备npm账号&#xff0c;并登录&#xff0c;npm login 或者 npm adduser &#xff08;这一行同样需要输入账号密码登录&#xff0c;之后就不用登录了&#xff09; 验证是否登录&#xff1a;npm whoami 还可以查看用户简介&#xff1a;npm profile get …

11-2 mybatis入门细节

mybatis Mybatis 单表CURD细节 ${} 与#{} 区别(面试题) ${} 拼接sql 造成sql注入 #{} 使用?占位 如果作为值, 推荐使用#{} ${} 实现一些动态排序,使用 #{column} select * from tb_userinfo order by ? desc column: id 赋值 sql: select * from tb_userinfo order by id …

“我和云栖有个约会”有奖征文获奖名单已公布

活动地址&#xff1a;https://activity.csdn.net/creatActivity?id10593 参与奖获得奖名单 用户昵称博文链接秋说【约会云栖】从初中至大学&#xff0c;我见证了科技变革的历程。-CSDN博客Freedom35682019年云栖大会&#xff0c;我的技术元年-CSDN博客码农研究僧云栖大会&am…

第70讲:MySQL数据库全局锁的核心概念

文章目录 1.全局锁的概念2.使用全局锁的语法结构3.全局锁的基本使用 1.全局锁的概念 全局锁是对整个数据库实例添加一个锁&#xff0c;全局锁是面向整个数据库实例的&#xff0c;而不是单个数据库&#xff0c;添加锁之后这个实例就会处于只读状态&#xff0c;此时所有的数据库…

Selenium alert 弹窗处理!

页面弹窗有 3 种类型&#xff1a; alert&#xff08;警告信息&#xff09;confirm&#xff08;确认信息&#xff09;prompt&#xff08;提示输入&#xff09; 对于页面出现的 alert 弹窗&#xff0c;Selenium 提供如下方法&#xff1a; 序号方法/属性描述1accept()接受2dismis…

redis内存淘汰策略

当Redis已用内存超过maxmemory限定时&#xff0c;触发主动清理策略主动清理策略在Redis 4.0之前一共实现了 6 种内存淘汰策略&#xff0c;在 4.0 之后&#xff0c;又增加了 2 种策略&#xff0c;总共8种a) 针对设置了过期时间的key做处理: 1. volatile-tl;在筛选时&#xff0c;…

Unity 声音的控制

闲谈&#xff1a; 游戏开发比普通软件开发难也是有原因的&#xff0c;第一 游戏功能需求变化多样内部逻辑交错纵横&#xff0c; 而软件相对固定&#xff0c;无非也就是点击跳转、数据存储 第二&#xff0c;游戏需要很多3D数学知识、物理知识&#xff0c;最起码得有高中物理的基…

人类和 AI 能够“双向奔赴”吗? | 近匠

新技术时代已经开启&#xff0c;人类首次接触生成式人工智能&#xff0c;使用对话的方式和大语言模型交互&#xff0c; 过往的经验究竟还能不能作用于这些前沿技术&#xff1f; 针对这一问题&#xff0c;本期《新程序员》采访了一 位拥有20年技术领导经验的技术预测者&#xff…

2011年01月25日 Go生态洞察:Go与JSON的高效结合

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

C#,数值计算——函数计算,切比雪夫近似算法(Chebyshev approximation)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Chebyshev approximation /// </summary> public class Chebyshev { private int n { get; set; } private int m { get; set; } privat…

2023年下半年架构案例真题及答案

案例的考点&#xff1a; 大数据架构 Lambda架构和Kappa架构 jwt特点 数据持久层&#xff0c;Redis数据丢失&#xff0c;数据库读写分离方案 Hibernat架构 SysML七个关系&#xff0c;填需求图 大数据的必选题&#xff1a; 某网作为某电视台在互联网上的大型门户入口&#…

第二证券:长期停牌一般是多久?

股票停牌不仅仅是个股的问题&#xff0c;它或许会影响到商场的整体运作和投资者的利益。那么&#xff0c;长期停牌一般是多久呢&#xff1f;从不同的视点分析&#xff0c;可以得到不同的答案。 1. 官方规则 首要&#xff0c;咱们需求查看相关规则。依据证监会规则&#xff0c…