工控课堂

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

工控课堂 首页 工控文库 PLC学习 查看内容

以什么1200PLC为例讲解PLC编程数组与指针的使用方法

2020-4-10 21:30| 发布者: gkket| 查看: 25| 评论: 2|原作者: gkket

摘要: 上一篇我用高级语言展示了一下指针的概念,很多人反应看不懂,所以这一节,我结合1200 PLC来讲解指针与数组应用。在实际应用中,我们经常需要对连续通道的模拟量进行采集转换。假设有3个连续通道的模拟量,IW100,IW1 ...

上一篇我用高级语言展示了一下指针的概念,很多人反应看不懂,所以这一节,我结合1200 PLC来讲解指针与数组应用。

在实际应用中,我们经常需要对连续通道的模拟量进行采集转换。假设有3个连续通道的模拟量,IW100,IW102和IW104,即使转换的过程一样,但是还是需要写3条转换公式。如果有30个连续通道,就要写30条转换公式,显然是一个很繁琐的过程,这时候指针就显示出它的用武之地了,下面详细介绍在这个例子中的指针应用。



图1 模拟10个连续模拟量通道



图2 声明一个word类型数组

从图2中,声明了一个word类型的数组,数组大小为10,范围为0..9 。我们仔细观察这个偏移量,发现每个数组变量的偏移量间隔为2。这是因为我们声明的是word,占了两个Byte,所以在内存里面,每个变量间隔为2 。

现在我们的问题,是如何把MW100到MW118赋值给AIArr这个数组,一种最简单的办法是,写10条公式,一个一个赋值过去,比如AIArr[0]:=MW100,AIArr[1]:=MW102,整个过程很要命,最简单的方法当然是通过指针命令 POKE_BLK来实现,具体实现如下:



图3 POKE指令

在上面SCL指令,有两个地方需要注意,第一个是数据区域类型,见下图。第二个是Count,一定要以Byte类型来计算,假设是10个Word类型,Count设置为20,如果10个Real类型,Count应该设置多少呢?请读者自行思考。



图3 数区域类型

我们来看一下程序运行效果



图4 MW区域值



图5 AIArr数据

可以明显看到,两者的结果是一样。现在我们要对模拟量通道的数字量值转化为真实值。如果10个模拟量通道的转换公式是一样的,可以很方便的采用数组+循环来实现,声明一个数组用来存储真实值,如下所示:



图6 真实值数组声明

从上图,我们可以看到,RealArr的起始地址是20,数组之间的偏移量为4。请读者自行思考为什么是这样??



图7 数字量值转真实值过程

从上图中发现,通过FOR循环可以很方便的实现数字量转换为真实值。虽然两者类型不一样,但是PLC内部实现了隐式强制转换。



图8 转换效果

结束语

今天就讲到这里,欢迎大家留言拍砖,下节课开始讲通信。

欢迎大家关注另外一个平台,gongz hao 为 plcteacher,后面PLC方面的文章,都迁移到那里,方便阅读。

来源:PLC布道师



453da90924b3418182c2b939a22b696f.jpg

路过

雷人

握手

鲜花

鸡蛋

相关阅读

发表评论

最新评论

gk-auto 2020-4-10 21:30
无回帖,不论坛,这才是人道。
wx_kIW6MQ8S 2020-4-17 21:38
顶,你牛

查看全部评论(2)

热门文章

QQ|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 || 沪公网安备 31010602005455号 )|网站地图

GMT+8, 2020-4-28 22:10 , Processed in 0.066570 second(s), 45 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部