c#发展

首页 » 常识 » 诊断 » 数据采集与可视化CSharp7学习
TUhjnbcbe - 2021/3/18 3:22:00
北京治疗白癜风哪里医院最好 http://wapyyk.39.net/hospital/89ac7_detail.html

主题

读取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。

海湖江河

1
查看完整版本: 数据采集与可视化CSharp7学习