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相关推荐

  1. 汽车行业标准程序西门子1500大型程序发那科机器人焊装CCD 扫描MES通讯RFID读写

    汽车行业标准程序西门子1500大型程序发那科机器人焊装CCD 扫描MES通讯RFID读写 包括1台西门子1500PLC程序,2台触摸屏TP1500程序 9个远程终端ET200SP 15个Festo智能 ...

  2. opcua客户端实现断线重连_干货:通过OPC UA协议访问西门子1500数据

    轻松通过OPC UA协议访问西门子1500数据 如何实现西门子1500的OPC UA通信? 1. 功能实现 S7-1500从V2.0开始支持作为OPC UA服务器的功能,本例使用KepServer 作 ...

  3. s7 200 java_java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...

  4. 西门子1500与SMC EX260总线阀岛通讯组态

    西门子1500与SMC EX260总线阀岛组态 本文主要记录了西门子1513-1 PN与SMC的现场总线模块(EX260的SI单元)用PROFINET协议通讯的配置. 一.SMC EX260模块简介 ...

  5. 西门子1500罐装线plc程序hmi程序西门子1500带程序及hmi

    西门子1500罐装线plc程序hmi程序西门子1500带程序及hmi,适合新手案例学习.如需用于实际项目id=620809861943&

  6. smart200 写入1500db_带你用西门子1500做大项目-基础篇

    西门子S7-1500系列PLC是目前西门子主推的中高端PLC,在各个大中型项目里面有着非常高的市场占有率,学习西门子自动化相关产品并不需要说先学200SMART.再学1200.然后学1500,没有这个 ...

  7. 西门子1500通讯与西门子1200通讯(1)

    主站为西门子1500,两个从站为西门子1200! 任务要求:通过主站plc控制从站plc输出 1.第一步 主(192.168.0.20)从站一(192.168.0.21),从站二(192.168.0. ...

  8. 西门子1500博途医药系统程序案例

    西门子1500博途医药系统程序案例. 标准化编程 具体为医药制品,及空调恒温恒湿,PID控制博图程序,带昆仑流程图,西门子1500PLC和昆仑通态触摸屏上位软件,博图版本V16及以上. 适合研究学习标 ...

  9. 全网最全面的西门子1500硬件冗余项目,博图15.1

    全网最全面的西门子1500硬件冗余项目,博图15.1.非常全面,CAD图纸,合同,上位机软件是intcohid=644593395557&

最新文章

  1. mysql数据库导入到excel表格数据_[转载]将EXCEL表格中的数据导入mysql数据库表中(两种方法)...
  2. Multi-band Blending
  3. renpy 如何执行2个action_如何解决工作中遇到问题丨2个思考方式、2个技巧和1个解决系统...
  4. AntV中的饼状图重复渲染问题解决
  5. c++ 异步下获取线程执行结果_【分享吧】C++11多线程库介绍
  6. ---innerHTML---
  7. 扎心!天天写代码,方向真的对吗?
  8. rstudio 保存_Rstudio学习笔记
  9. datetime unix php,PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】...
  10. label 阻止冒泡 防止点击label 触发2次事件
  11. ftp一句話download
  12. 【PAT】1105 Spiral Matrix(柳婼的思想详细解读)
  13. 360极速浏览器查看保存密码的操作步骤
  14. iOS为什么获取不到设备的DeviceToken
  15. 微信支付 postman_微信收款商业版有什么功能?微信智慧经营2.0原来可以这么玩!...
  16. 云图说丨数字资产链:您的数字资产产权保护神
  17. 为什么要使用MonoRail?
  18. 跨平台次世代游戏引擎Unity 3D
  19. protobuf根据有关联的.proto文件进行编译
  20. 第一章:随机事件和概率(一)

热门文章

  1. 8-Arm-PEG2000-EP,含有环氧基的多臂PEG,8-Arm PEG2000-Epoxide
  2. 查询所有上级和所有下级
  3. 如何在Github中添加图片
  4. Excel快速将多个单元格合并到一个单元格
  5. Win10连接Bose QC30 显示已配对但连接失败
  6. 联想拯救者R720如何组建双通道内存
  7. 高数焦虑?这个假期,暗暗发力,2023年“兔”飞猛进
  8. 国标GB28181-2022主要技术变化
  9. Python - pyradiomics - 邻域灰阶依赖性矩阵(Neighboring Gray Level Dependence Matrix)
  10. 自动更换Termux的源,加快软件包下载速度笔记