北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章545 浏览8634922

基于Snap7使用C#编程访问西门子PLC系列教程(6)-存储区读写(一)

本文是Snap7软件包系列教程的第6篇,该软件包可以通过PC端编程访问PLC的数据,如果你对它还不太熟悉,请点击专辑查看之前的文章介绍。

上一篇文章我们介绍了Snap7Client的ReadArea()方法和WriteArea()方法,分别用于服务器数据的读取和写入,这两个函数功能强大,但是参数比较多,使用起来不太方便。为了更方便的对不同的存储区(比如:数据块、输入/输出映像区、位存储区)进行读写,Snap7软件包还提供了专门的存储区读写函数,今天这篇文章,就给大家介绍如下几个方法(函数):

  1. DBRead();

  2. DBWrite();

  3. ABRead();

  4. ABWrite();

cover.png

1、Snap7Client.DBRead()

Snap7Client的DBRead()方法可以从服务器读取数据块(DB)的内容,函数原型如下图:

DBRead.png

该方法有三个参数,见下面的表格:

Snap7Client.DBRead()参数列表
名称
数据类型
说明
DBNumber整数
要读取的数据块的编号(范围:0~0xFFFF)
Start
整数
要读取数据的起始地址
Size整数
要读取的字节数
Buffer字符数组
存放读取到数据的数组

Snap7Client.DBRead()数据的读取是以字节为单位的,它本质上是对ReadArea()方法进行封装,并且将参数Area 设置为 S7AreaDB;将参数WordLen 设置为S7WLBytes;

比如,要读取DB1的从0开始的24个字节,可以使用下面的代码:

DBRead_example.PNG

2、Snap7Client.DBWrite()

Snap7Client的DBWrite()方法可以将数据写入到服务器指定数据块(DB)的指定地址,函数原型如下图:

DBWrite.PNG

该方法的参数与DBRead()类似,只不过是写操作,具体请看下面的表格:

Snap7Client.DBWrite()参数列表
名称
数据类型
说明
DBNumber整数
要写入的数据块的编号(范围:0~0xFFFF)
Start
整数
要写入的数据起始地址
Size整数
要写入的字节数
Buffer字符数组
存放要写入数据的数组

Snap7Client.DBWrite()数据的写入是以字节为单位的,它本质上是对WriteArea()方法进行封装,并且将参数Area 设置为 S7AreaDB;将参数WordLen 设置为S7WLBytes;

比如,要将pBuffer数组的25个字节写入到DB100的从10开始的地址中,可以使用下面的代码:

DBWrite_example.PNG

特别说明:DBRead()和DBWrite()方法不能访问优化的数据块,因此在S7-1200/1500系列PLC中,必须取消数据块属性中"优化的块访问"选项,如下图:

DB_access_.png

3、Snap7Client.ABRead()

Snap7Client的ABRead()方法可以读取PLC过程输出映像区(Process Output Image)的数据,以字节为单位,函数原型如下:

ABRead.PNG

该方法的参数如下:

Snap7Client.ABRead()参数列表
名称
数据类型
说明
Start
整数
要读取的起始地址
Size整数
要读取的字节数
Buffer字符数组
存放读取到的数据的数组

Snap7Client.ABRead()本质上是对ReadArea()方法进行封装,并且将参数Area 设置为 S7AreaPA;将参数WordLen 设置为S7WLBytes;

比如,要读取QB0~QB9的10个字节的数据,可以使用下面的代码:

ABRead_Example.PNG

4、Snap7Client.ABWrite()

Snap7Client的ABWrite()方法可以将数据写入到PLC的过程输出映像区(Process Output Image)中,以字节为单位,函数原型如下:

ABWrite.PNG

该方法的参数如下:

Snap7Client.ABWrite()参数列表
名称
数据类型
说明
Start
整数
要写入的起始地址
Size整数
要写入的字节数
Buffer字符数组
存放写入数据的数组

Snap7Client.ABWrite()本质上是对WriteArea()方法进行封装,并且将参数Area 设置为 S7AreaPA;将参数WordLen 设置为S7WLBytes;

比如,要将15个字节的数据写入到QB10~QB24,可以使用下面的代码:

ABWrite_Example.PNG

Snap7Client还有用于输入映像区、位存储区、定时器、计数器等存储区的读写方法,将在后续文章中介绍。

我的微信视频号开通了,以视频的方式分享工控小知识,欢迎扫描下面的链接查看:

founderchip.png

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论