C#通过S7.net读取西门子300PLC的数据
这里写自定义目录标题
- 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;这里比较麻烦;
- 首先需要在电脑上安装Step7 V5.6软件,并激活使用
- 下载NetToPLCsim.exe 软件
- 当我们有了这两个软件之后,我们需要按顺序打开软件
这里遇到的坑一是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的数据相关推荐
- 使用S7.net读取西门子1500PLC
使用S7.net通信库,可以不使用任何功能块,直接用C# 访问西门子PLC 配置文件: 记得用ANSI格式.因为微软的库默认ANSI [配置信息] IP地址=192.168.1.198 CPU类型=S ...
- 威纶通触摸屏读取西门子1200PLC地址数据
位数据 DBnBit int数据 Dint数据 浮点数据 字符串string数据
- PLC实验—西门子S7 1200读取旋转编码器数据并计算电机转速
PLC实验-西门子S7 1200读取旋转编码器数据并计算电机转速 注意PTO控制步进电机实验博途软件需要V14版本,不然没有PTO功能块 软件的下载请点击下方百度网盘的链接 链接:https://pa ...
- C# 读取西门子S7系列PLC教程及源码
创建 PLC 实例,连接和断开连接 若要创建驱动程序的实例,需要使用此构造函数: public Plc(CpuType cpu, string ip, Int16 rack, Int16 slot) ...
- php读取西门子plc_简单说一些PLC中模拟量的相关概念
引言: 有些刚刚接触PLC的小伙伴对PLC中的模拟量编程不理解甚至有点摸不着方向,让他用PLC读取一个压力值模拟量,他会感到有点为难.就是因为PLC中的一些基本概念没有搞清楚,我今天简单来给大家说一些 ...
- JAVA采用S7通信协议访问西门子PLC
简介 采用java的方式实现西门子S7协议 链接地址:iot-communication github: https://github.com/xingshuangs/iot-communicatio ...
- Java使用S7协议连接西门子PLC1200、1500
Java使用S7协议连接西门子PLC1200.1500 1.引入s7包 2.测试代码(可参考使用) 1.引入s7包 使用 https://github.com/s7connector/s7connec ...
- 西门子300PLC转以太网无需编程实现与1200PLC转以太网数据通信
西门子300PLC转以太网无需编程实现与1200PLC转以太网数据通信 本文介绍利用兴达易控生产的PLC转以太网模块(MPI-ETH-XD1.0Plus)实现1200/1500PLC与300(CPU3 ...
- php读取西门子plc_PLC对模拟量信号,是怎么进行处理的?
模拟量信号是自动化过程控制系统中最基本的过程信号(压力.温度.流量等)输入形式.系统中的过程信号通过变送器,将这些检测信号转换为统一的电压.电流信号,并将这些信号实时的传送至控制器(PLC). PLC ...
最新文章
- hive与hbase整合
- matlab 电气系统设计,MATLAB 简化了控制系统的设计和分析
- python 正则search 所有_python之路----正则re(search,match,findall……)
- Python + Steamlit 快速开发可视化 web 页面!
- 使用老毛桃U盘重装Windows10系统
- hive-内置函数(常用内置函数汇总)
- 使用磁盘为Linux添加swap
- 7-192 素因子分解 (20 分)
- 提升网站转化率的四步优化方案
- Python动态数据展示
- 详解Haar特征与AdaBoost方法原理
- PJSIP集成G729
- 微博登录及删除粉丝/转发/评论的脚本[更新中]
- jQuery实现打字机效果
- 麻将胡牌算法的Java实现
- java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署
- 匹配,为什么要“共轭”
- 用户使用报告_分享短视频最新2020年抖音用户画像报告
- 高德地图API获取当前位置对应的周边信息
- ai人工智能大爆发_人工智能解释了大爆炸之前发生的事情