S7Net 读写西门子1500
1.首先在nuget中安装S7NetPlus
下面是读写方法
更多信息可以参考
Home · S7NetPlus/s7netplus Wiki · GitHub
下面的代码测试了Bool,Int,DInt,LReal四中类型。操作PLC感觉比较麻烦。测了好几天才成功。
环境 win10纯净版+博途V17+PLC1200
using CompoundingDeviceWeb.Helper;
using S7.Net;
using System.Diagnostics;namespace CompoundingDeviceWeb.Communication
{public class S7Net{public static S7Net? Instance;public static bool IsConnected { get; set; }public static bool IsAvailable { get; set; }private Plc plc;/*bool DBXDint DBDReal DBWDBD是双字、DBW是字、DBB是字节Siemens C#
BOOL bool
BYTE byte
WORD short / ushort
DWORD int / uint
INT short / ushort
DINT int / uint
REAL float
LREAL double*/public static S7Net GetInstance(){if (Instance == null){Instance = new S7Net();}return Instance;}public async void Connect(){string PLCIP = AppSettingsHelper.Configuration["PLC:IP"];plc = new Plc(CpuType.S71500, PLCIP, 0, 1);try{plc.Open();Debug.WriteLine($"PLC Connect {plc.IsConnected} ");IsConnected = plc.IsConnected;}catch (Exception ex){LogHelper.Error(ex.Message);IsConnected = false;}finally{//IsAvailable =Debug.WriteLine("PLC Connect");SendPLCConnectStatus();}}public string PLCRead(string type, int DB, int startByteAdr, byte bitAdr = 0){if (plc == null || !IsConnected){Connect();}string Result = "";switch (type.ToUpper()){case "BOOL":Result = ((bool)plc.Read(DataType.DataBlock, DB, startByteAdr, VarType.Bit, 1,bitAdr)).ToString();break;case "BYTE":Result = ((byte)plc.Read(DataType.DataBlock, DB, startByteAdr, VarType.Byte, 1)).ToString();break;case "INT":Result = (plc.Read(DataType.DataBlock, DB, startByteAdr, VarType.Int, 1)).ToString();break;case "DINT":Result = ((Int32)plc.Read(DataType.DataBlock, DB, startByteAdr, VarType.DInt, 1)).ToString();break;case "LREAL":Result = ((double)plc.Read(DataType.DataBlock, DB, startByteAdr, VarType.LReal, 1)).ToString();break;}SendPLCConnectStatus();return Result;}public string PLCWrite(string type, int DB, int startByteAdr,string value, byte bitAdr = 0){if (plc == null || !IsConnected){Connect();}string Result = "";switch (type.ToUpper()){case "BOOL":plc.Write(DataType.DataBlock, DB, startByteAdr, bool.Parse(value),bitAdr);break;case "BYTE":plc.Write(DataType.DataBlock, DB, startByteAdr, value, bitAdr); break;case "INT": plc.Write(DataType.DataBlock, DB, startByteAdr, (ushort)(int.Parse(value)));break;case "DINT":plc.Write(DataType.DataBlock, DB, startByteAdr, Int32.Parse(value));break;case "LREAL":double MyData = Convert.ToDouble(value);plc.Write(DataType.DataBlock, DB, startByteAdr, MyData);break;}return Result;}}
}
另外博途要设置 允许远程操作否则S7Net会报错!
报错的信息也有说要设置下面。我这里是设置上面就OK了
S7Net 读写西门子1500相关推荐
- 汽车行业标准程序西门子1500大型程序发那科机器人焊装CCD 扫描MES通讯RFID读写
汽车行业标准程序西门子1500大型程序发那科机器人焊装CCD 扫描MES通讯RFID读写 包括1台西门子1500PLC程序,2台触摸屏TP1500程序 9个远程终端ET200SP 15个Festo智能 ...
- opcua客户端实现断线重连_干货:通过OPC UA协议访问西门子1500数据
轻松通过OPC UA协议访问西门子1500数据 如何实现西门子1500的OPC UA通信? 1. 功能实现 S7-1500从V2.0开始支持作为OPC UA服务器的功能,本例使用KepServer 作 ...
- s7 200 java_java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...
本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...
- 西门子1500与SMC EX260总线阀岛通讯组态
西门子1500与SMC EX260总线阀岛组态 本文主要记录了西门子1513-1 PN与SMC的现场总线模块(EX260的SI单元)用PROFINET协议通讯的配置. 一.SMC EX260模块简介 ...
- 西门子1500罐装线plc程序hmi程序西门子1500带程序及hmi
西门子1500罐装线plc程序hmi程序西门子1500带程序及hmi,适合新手案例学习.如需用于实际项目id=620809861943&
- smart200 写入1500db_带你用西门子1500做大项目-基础篇
西门子S7-1500系列PLC是目前西门子主推的中高端PLC,在各个大中型项目里面有着非常高的市场占有率,学习西门子自动化相关产品并不需要说先学200SMART.再学1200.然后学1500,没有这个 ...
- 西门子1500通讯与西门子1200通讯(1)
主站为西门子1500,两个从站为西门子1200! 任务要求:通过主站plc控制从站plc输出 1.第一步 主(192.168.0.20)从站一(192.168.0.21),从站二(192.168.0. ...
- 西门子1500博途医药系统程序案例
西门子1500博途医药系统程序案例. 标准化编程 具体为医药制品,及空调恒温恒湿,PID控制博图程序,带昆仑流程图,西门子1500PLC和昆仑通态触摸屏上位软件,博图版本V16及以上. 适合研究学习标 ...
- 全网最全面的西门子1500硬件冗余项目,博图15.1
全网最全面的西门子1500硬件冗余项目,博图15.1.非常全面,CAD图纸,合同,上位机软件是intcohid=644593395557&
最新文章
- mysql数据库导入到excel表格数据_[转载]将EXCEL表格中的数据导入mysql数据库表中(两种方法)...
- Multi-band Blending
- renpy 如何执行2个action_如何解决工作中遇到问题丨2个思考方式、2个技巧和1个解决系统...
- AntV中的饼状图重复渲染问题解决
- c++ 异步下获取线程执行结果_【分享吧】C++11多线程库介绍
- ---innerHTML---
- 扎心!天天写代码,方向真的对吗?
- rstudio 保存_Rstudio学习笔记
- datetime unix php,PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】...
- label 阻止冒泡 防止点击label 触发2次事件
- ftp一句話download
- 【PAT】1105 Spiral Matrix(柳婼的思想详细解读)
- 360极速浏览器查看保存密码的操作步骤
- iOS为什么获取不到设备的DeviceToken
- 微信支付 postman_微信收款商业版有什么功能?微信智慧经营2.0原来可以这么玩!...
- 云图说丨数字资产链:您的数字资产产权保护神
- 为什么要使用MonoRail?
- 跨平台次世代游戏引擎Unity 3D
- protobuf根据有关联的.proto文件进行编译
- 第一章:随机事件和概率(一)
热门文章
- 8-Arm-PEG2000-EP,含有环氧基的多臂PEG,8-Arm PEG2000-Epoxide
- 查询所有上级和所有下级
- 如何在Github中添加图片
- Excel快速将多个单元格合并到一个单元格
- Win10连接Bose QC30 显示已配对但连接失败
- 联想拯救者R720如何组建双通道内存
- 高数焦虑?这个假期,暗暗发力,2023年“兔”飞猛进
- 国标GB28181-2022主要技术变化
- Python - pyradiomics - 邻域灰阶依赖性矩阵(Neighboring Gray Level Dependence Matrix)
- 自动更换Termux的源,加快软件包下载速度笔记