这里写自定义目录标题

  • C#通过S7.net读取西门子300PLC的数据
    • 一、连接PLC
    • 二、读取数据
    • 三、无实物PLC,离线模拟读取
    • 四、注意事项
      • 1.NetToPLCsim软件
      • 2、S7-PLCSIM软件
      • 3、Step7 V5.6软件

C#通过S7.net读取西门子300PLC的数据

最近一个项目需要读取西门子300PLC里面的数据,300PLC是用Step编写的,不是现有的使用较多博途软件。在读取数据上,有些不一样,所以将这里的坑记录一下;
在这里需要使用到的软件和工具:

Visual Studio 2019
Step V5.6
S7 PLCSIM
NetToPLCsim

一、连接PLC

连接PLC很简单,VS 创建好项目后,在NetGet管理中下载S7.net 的DLL,加入项目中;
在项目里引用

 // 使用S7.net dllusing S7.Net;

连接PLC 先实例化PLC类

 // New 一个300PLC的对象Plc plc =  new Plc(CpuType.S7300, ip, 0, 2);

建立连接

 //建立连接plc.Open();

这里如果IP地址没有问题的话,会显示连接成功!
如果是实体PLC的话,直接访问PLC的网络地址就好了;
如果是虚拟地址,这里需要多尝试几次;

二、读取数据

使用 public object? Read(string variable) 方法读取
读取十进制数:

             //获取输入PLC地址string temp = tbAdress.Text.Trim();//读取地址里的数据,转换成int类型int a = Convert.ToInt32(plc.Read(temp));ShowLog("当前地址" + temp + ":的十进制为" + a.ToString());

我这里读取的是PLC的 MD10(读取PLC Double Word寄存器数据
当前地址MD10:的十进制为100000
读取浮点数:

             //获取输入PLC地址string temp = tbAdress.Text.Trim();//读取地址里的数据,转换成int类型int a = Convert.ToInt32(plc.Read(temp));//10机制转换成16进制字符串string A = Convert.ToString(a, 16).ToUpper().PadLeft(8, '0');//16进制字符串转换成浮点数double result = FloatHelper.HexToFloat(A);ShowLog("当前地址" + temp + ":的十进制为" + a.ToString());ShowLog("当前地址" + temp + ":的浮点数为:" + result.ToString("0.00"));

我这里读取的是PLC的 MD30(读取PLC Double Word寄存器数据
当前地址MD30:的十进制为1084479242
当前地址MD30:的浮点数为:5.12

三、无实物PLC,离线模拟读取

因为没有300的PLC,所以需要在电脑上仿真模拟PLC;这里比较麻烦;

  1. 首先需要在电脑上安装Step7 V5.6软件,并激活使用
  2. 下载NetToPLCsim.exe 软件
  3. 当我们有了这两个软件之后,我们需要按顺序打开软件
Created with Raphaël 2.3.0 打开Step7 V5.6,加载项目程序 打开NetToPLCsim软件,自动加载软件,不用管,点确定 点仿真模拟,下载程序到虚拟PLC中 切换到NetToPLCsim软件,点Add添加站点 打开VS程序,输入站点IP,点击连接 输入需要读取的地址,点击读取

这里遇到的坑一是Step7 V5.6软件
安装的Step7 V5.6软件里面的硬件组态不全,网上百度了好久,最后不得不卸载重新安装才完成;硬件组态不全,没办法添加PLC,没有办法写PLC程序;
网上也提供了一些更新硬件组态的方法,同样也试了,很容易就卡死了;提供下面别人分享的链接,以供参考:

坑二:仿真并连接虚拟地址
一定要按照,顺序打开软件,有时候往往一次不能成功,可以多试几次;

坑三:读取的PLC数据
PLC程序如果没有用功能块,一定要用MD去存你要读取的数据;不然读取的数据会有问题;西门子MD是存 Double Word;我们的整型的数如果太大了,会涉及到需要存在两个Word中;浮点数一定是两个字的;

四、注意事项

1.NetToPLCsim软件

打开NetToPLCsim软件会报这个, 点 就可以了;

等待加载完成

加载完成,点击OK

NetToPLCsim软件界面
点击ADD,进入站点设置界面(一定要先仿真之后,再ADD)

PLCSIM IP Address后面的 在如果争取打开Step7 的仿真软件的情况下,是可以选取的;

配置完成后点击Start Server开启转接服务

2、S7-PLCSIM软件

下载程序完成后,需要将PLC置为RUN

3、Step7 V5.6软件



最后: 西门子300的PLC是需要用到一些比较老的知识,这里自己去B站需要补一下知识;

C#通过S7.net读取西门子300PLC的数据相关推荐

  1. 使用S7.net读取西门子1500PLC

    使用S7.net通信库,可以不使用任何功能块,直接用C# 访问西门子PLC 配置文件: 记得用ANSI格式.因为微软的库默认ANSI [配置信息] IP地址=192.168.1.198 CPU类型=S ...

  2. 威纶通触摸屏读取西门子1200PLC地址数据

    位数据 DBnBit int数据 Dint数据 浮点数据 字符串string数据

  3. PLC实验—西门子S7 1200读取旋转编码器数据并计算电机转速

    PLC实验-西门子S7 1200读取旋转编码器数据并计算电机转速 注意PTO控制步进电机实验博途软件需要V14版本,不然没有PTO功能块 软件的下载请点击下方百度网盘的链接 链接:https://pa ...

  4. C# 读取西门子S7系列PLC教程及源码

    创建 PLC 实例,连接和断开连接 若要创建驱动程序的实例,需要使用此构造函数: public Plc(CpuType cpu, string ip, Int16 rack, Int16 slot) ...

  5. php读取西门子plc_简单说一些PLC中模拟量的相关概念

    引言: 有些刚刚接触PLC的小伙伴对PLC中的模拟量编程不理解甚至有点摸不着方向,让他用PLC读取一个压力值模拟量,他会感到有点为难.就是因为PLC中的一些基本概念没有搞清楚,我今天简单来给大家说一些 ...

  6. JAVA采用S7通信协议访问西门子PLC

    简介 采用java的方式实现西门子S7协议 链接地址:iot-communication github: https://github.com/xingshuangs/iot-communicatio ...

  7. Java使用S7协议连接西门子PLC1200、1500

    Java使用S7协议连接西门子PLC1200.1500 1.引入s7包 2.测试代码(可参考使用) 1.引入s7包 使用 https://github.com/s7connector/s7connec ...

  8. 西门子300PLC转以太网无需编程实现与1200PLC转以太网数据通信

    西门子300PLC转以太网无需编程实现与1200PLC转以太网数据通信 本文介绍利用兴达易控生产的PLC转以太网模块(MPI-ETH-XD1.0Plus)实现1200/1500PLC与300(CPU3 ...

  9. php读取西门子plc_PLC对模拟量信号,是怎么进行处理的?

    模拟量信号是自动化过程控制系统中最基本的过程信号(压力.温度.流量等)输入形式.系统中的过程信号通过变送器,将这些检测信号转换为统一的电压.电流信号,并将这些信号实时的传送至控制器(PLC). PLC ...

最新文章

  1. hive与hbase整合
  2. matlab 电气系统设计,MATLAB 简化了控制系统的设计和分析
  3. python 正则search 所有_python之路----正则re(search,match,findall……)
  4. Python + Steamlit 快速开发可视化 web 页面!
  5. 使用老毛桃U盘重装Windows10系统
  6. hive-内置函数(常用内置函数汇总)
  7. 使用磁盘为Linux添加swap
  8. 7-192 素因子分解 (20 分)
  9. 提升网站转化率的四步优化方案
  10. Python动态数据展示
  11. 详解Haar特征与AdaBoost方法原理
  12. PJSIP集成G729
  13. 微博登录及删除粉丝/转发/评论的脚本[更新中]
  14. jQuery实现打字机效果
  15. 麻将胡牌算法的Java实现
  16. java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署
  17. 匹配,为什么要“共轭”
  18. 用户使用报告_分享短视频最新2020年抖音用户画像报告
  19. 高德地图API获取当前位置对应的周边信息
  20. ai人工智能大爆发_人工智能解释了大爆炸之前发生的事情

热门文章

  1. 解决使用aireplay攻击WiFi信道不对问题
  2. linux 配置静态ip总结
  3. linux16.04u盘制作,[总结]用U盘安装Ubuntu 16.04
  4. Notepad++ Cheat Sheet
  5. 联想微型计算机c455怎么拆开,联想c455电脑怎么拆em
  6. SRC实战-漏洞查找Google常用语法
  7. Clickhouse修改字段类型
  8. “个性化视频推荐”算法的Storm实现方案
  9. Python 函数案例分析
  10. Python和PHP的区别