当前位置: 首页 > news >正文

手摸手教你撕碎西门子S7通讯协议15--开发自己的通讯库写数据

1、S7通讯回顾

    - (1)建立TCP连接      Socket.Connect- 

     - (2)发送访问请求     COTP- 

     - (3)交换通信信息     Setup Communication- 

     - (4)执行相关操作     读、写、PLC启停、时间、上传下载-  
 

2、s7报文回顾 


 

3、通讯库回顾 

4、继续封装

   /// <summary>/// 写入数据/// </summary>/// <typeparam name="T">写入的数据类型</typeparam>/// <param name="value">写入的目标数值</param>/// <param name="variable">PLC变量地址</param>/// <returns></returns>public Result Write<T>(T value, string variable){DataParameter dataParameter = new DataParameter();Type mtype = typeof(T);//如果是布尔类型,则修改数据类型为bitif (mtype.Name == "Boolean"){dataParameter.DataItemType = DataItemType.BIT;}try{// 解析地址dataParameter.GetFromVariable(variable);// 写入数据this.Write<T>(value,dataParameter.ParamItemType,dataParameter.AreaType,dataParameter.DBNumber,dataParameter.ByteAddress,dataParameter.BitAddress,dataParameter.DataItemType);if (dataParameter.State != 0xff){throw new Exception("数据写入失败!" + dataParameter.State);}return new Result();}catch (Exception ex){return new Result() { IsSuccessed = false, Message = ex.Message };}}

 

5、测试程序 

1、写入float

2、写入short

3、写入bool

 

6、小结

自己的通讯库是够甘甜的,和新疆的葡萄一样的香甜,有人可能要问,前面不是有第3方通讯库写好的,拉来用不就行了吗?是的,没有错,别人的东西可以拉来用,但是我们的目标不仅是使用,而是形成自己的产品,实力,别人的库也是写的代码,只是我们看不到而已。同样的,我们自己也可以,强国工程,从小做起,不得不来个大大的鸡腿,真香啊。 

原创不易,打字截图不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,动动你的金手指,早日实现财务自由

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android Studio的新界面,怎么切换回老界面
  • 记录一次使用Docker部署skywalking的过程
  • 基于Hadoop的服装电商数据分析系统【Hdfs、flume、HIve、sqoop、MySQL、echarts】
  • WebKit的媒体播放质量:打造高清流畅的Web体验
  • 防抖和节流
  • IC开发——RTL综合
  • oracle表、表空间使用空间
  • 什么是sql注入攻击,如何预防介绍一下mysql中的常见数据类型
  • 全面加速 GitHub,git clone 太慢的 9 种解决办法
  • Java高级Day19-List、ArrayList
  • A股探底强势反攻,量价齐声太漂亮
  • 基于SpringBoot+Vue的来访管理系统(带1w+文档)
  • 支持向量机(SVM)预测模型及其Python和MATLAB实现
  • Postman:API开发与测试的强大伴侣
  • 最低工资标准数据(2001-2023年不等)、省市县,整理好的面板数据(excel格式)
  • ES6指北【2】—— 箭头函数
  • 收藏网友的 源程序下载网
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [Vue CLI 3] 配置解析之 css.extract
  • Android开源项目规范总结
  • bootstrap创建登录注册页面
  • extjs4学习之配置
  • Java精华积累:初学者都应该搞懂的问题
  • js继承的实现方法
  • Lucene解析 - 基本概念
  • passportjs 源码分析
  • vue.js框架原理浅析
  • 关于Flux,Vuex,Redux的思考
  • 欢迎参加第二届中国游戏开发者大会
  • 利用jquery编写加法运算验证码
  • 你真的知道 == 和 equals 的区别吗?
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 三栏布局总结
  • 时间复杂度与空间复杂度分析
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 数组的操作
  • 鱼骨图 - 如何绘制?
  • PostgreSQL之连接数修改
  • 阿里云服务器如何修改远程端口?
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​iOS安全加固方法及实现
  • #define与typedef区别
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $.each()与$(selector).each()
  • ${factoryList }后面有空格不影响
  • (2)nginx 安装、启停
  • (20050108)又读《平凡的世界》
  • (pojstep1.1.2)2654(直叙式模拟)
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (计算机网络)物理层
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)大道至简,职场上做人做事做管理