C#使用S7.net连接西门子S1200PLC,C#直接连接西门子PLC

距离上一篇C#使用KepService连接已经好久了,这次把S7.net的更新上来。在此鸣谢一下(李,罗,任。)

附上github链接:https://github.com/S7NetPlus/s7netplus/wiki

第一步,首先把西门子PLC端配置好,如下图。这个很重要,后面编码都会依据这个,也就是说想要C#做读做写那么PLC部分要先规划好。

这个是DB1块的。

这个是DB3块的。

上面步骤不懂请自行学习PLC相关知识。

二、添加S7.NET引用。

安装完成后我们开始正题。

CpuType:PLC的cpu型号。我这里是1200。

IP:PLC的IP地址。

rack:机台号的位置,这个也是PLC的知识点。

slot:插槽号的位置,也是PLC的知识点。

使用这个属性来判别是否连接成功。

三、读取数据。

Read方式读取。直接根据DB1.DBX.0.0地址读取

列如:myplc.read("DB1.DBX.0.0");

将会返回一个obj的类型数据。我们需要根据PLC内不同数据类型去转换。就可以读取到相应的值

Read还有一个按偏移量去读取的,可以批量连续读取相同数据类型的,我这里的案例就只读一个出来,为了演示而已。

DataType:数据存储的位置类型。这里我是固定的选着DB块类型。

DB:第几个DB块。

startByteAdr:开始的偏移量位置。

varType:数据的类型。

carCount:结束的偏移量位置

ReadBytes方式读取根据偏移量去读取,可以是不同数据读取上来

DataType:数据存储的位置类型。这里我是固定的选着DB块类型。

DB:第几个DB块。

startByteAdr:开始的偏移量位置。

count:结束的偏移量位置,也可以理解读取多少个位数据上来。

ReadClass按照类的方式读取。

首先我们要根据上面的PLC去建立类

这个是根据DB3建立的类

然后我们使用方法读取

sourceClass:要读取的类。

DB:哪个db块

ReadStruct读取,使用结构去读取

和类一样,我们要根据PLC去建立结构

这个是根据DB1块建立的结构体

structType:结构体。

db:哪个db快。

四、写入数据。

Write写入。单个数据写入

variable:PLC具体写入块名称(例如:DB1.DBX0.0)

value:写入的值

还有按偏移量写入的就不演示了,具体看案例。

WriteBytes方式写入。

DataType:数据存储的位置类型。这里我是固定的选着DB块类型。

DB:第几个DB块。

startByteAdr:开始的偏移量位置。

value:要写入的byte数组。

WriteClassAsync 使用类方式写入数据

类写入的情况一样我们要用到刚刚建立的类,然后给类赋值,这里使用DB3块做样例。

classValue:类的值。

db:第几个db块。

WriteStructAsync 使用结构方式写入数据

structValuue:结构体。

db:第几个db块。

源码已上传,有需要可以下载,也可以联系我留下邮箱发送。

https://download.csdn.net/download/weixin_38801976/18416486?spm=1001.2014.3001.5503

----------------小尾巴分割----------------------------------------

菜鸟的记录也是进步~如果对你有所帮助,那就点赞一下吧。-----来自没有代码的程序员小萝卜

猜你喜欢

转载自blog.csdn.net/weixin_38801976/article/details/116456807