主题
读取PLC中的过程参数值,存入数据库中,软件编写工具,实现数据的分析功能,通过数据的分析,优化工厂设备的工作状态,确保其工作在最佳状态。
方法
Sharp7是Snap7Client的C#端口。它不是包装器,即您没有加载snap7.dll(或.so)的接口代码,而是S7Protocol的纯C#实现。Sharp7被部署为单个源文件,其中包含一些类,您可以在.NET项目中直接使用这些类与S7PLC通信。它旨在与基于.NET的小型硬件结合使用,甚至可以用于不需要扩展控制功能的大型项目。
主要特色
完全标准的“安全托管”C#代码,没有任何依赖关系。
几乎所有具有以太网适配器且能够运行.NETCore的硬件都可以连接到S7PLC。
Helper类可访问所有S7类型,而不必担心Little-BigEndian转换。
与通用Windows平台兼容,包括用于Raspberry的Win10IoT。
与Snap7.net.cs兼容,即插即用可替换。无需部署其他库。
Sharp7部署
Sharp7是一个单个文件类库,对于C#用户:只需将其添加到您的C#项目中即可。
Sharp7中的函数运用
Sharp7中一共包含了五个类,这里我们只是用S7Client.里面含有很多函数,今天我们只讲解四个函数,连接PLC断开PLC连接读数据库中的单字写数据库中的单字(置零)
在开始之前,我们需要实例化一个对象。S7Clienta=newS7Client();
连接PLC
a.ConnectTo(plcIP,Rack,Slot)。连接返回一个整数,如果是0表示连接成功。
断开PLC
a.Disconnect();返回一个整数,如果是0表示断开连接成功。
读DBW
a.DBRead(DbNum,0,ByteSize,Buffer);DbNum表示数据块名,0表示从第一个字节开始读取,ByteSize表示要读取的字节数,Buffer是一个数组,里面存放着每个字节的值。通常这样定义Buffer
privatebyte[]Buffer=newbyte[];
S7.GetIntAt(Buffer,DbwNum);表示从数组Buffer中读取对应的DBW的值。
这种用法一般读取的值很多,如果只读取单个DBW的值的话,可以简化成下面这种方法。
a.DBRead(DbNum,DbwNum,2,Buffer);比如读取DB.DBW6,则只需要读取字节6开始的两个长度的字节,即byte6byte7放在数组中
S7.GetIntAt(Buffer,0);只需取数组中0开始的两个元素值即可。即DBW6。
写DBW(置零)
a.DBWrite(DbNum,StartByte,ByteSize,Buffer);对应的变量含义见上文解说。通常简化的做法如下a.DBWrite(DbNum,DbwNum,2,Buffer);将DbwNum开始的两个长度的字节赋值为0;如DB.DBW6,即byte6byte7变为0。
海湖江河