快使用Ctrl+D收藏本站!本站早已不再维护,择期将关闭本站!!本站资源已全部失效,请勿打赏!!PLC培训创业官网 苏州实操派科技-点击访问-

第三章:3.1变量的表示与声明

CoDeSys π³朱子文 10829℃ 0评论

3.1.1什么是变量

我们的PLC(可编程逻辑控制器)其实可以把PLC理解成广义上的计算机,计算机可以做很多的事情,前提是人们得用计算机熟悉的语言告诉计算该做什么该怎么做。计算机熟悉的语言就是编程语言了,在真正的计算机上什么C语言啊,C++啊,Java啊,Python啊,C#啊等等都是计算机编程语言。相比于PLC编程,我们也要使用PLC熟悉的编程语言。而基于codesys开发的PLC支持PLCOpen规定的6种编程语言。此篇教程,我们主要讲ST编程。

我们在写程序完成我们想要的功能的过程中,就需要使用各种数据作为信息的承载体。而有些数据在程序使用之前就已经预先设定好了,在整个程序的运行过程中没有变化。这些量被称为常量constant。而有些量在程序运行当中数值可能会实时变化,可能被改变和赋值,这些量被称为变量。有请我们本章主角闪亮登场~变量

变量顾名思义就是一种在程序执行过程中,不断变化的量。不断变化其实也很好理解,就是指这个变量存储的数据值,在程序执行过程中根据程序流程在实时刷新变化。变量也分为很多很多种。像基本数据类型的变量,像功能块变量,像结构体变量,像数组变量等等。

变量是什么东东搞清楚了,咱们下一章简单讲讲变量的标识符

3.1.2 变量标识符

上一章节我们为大家介绍了变量的概念。那么变量又该怎么表示呢?这里就需要引入变量标识符的概念了。

其实也很好理解,我们日常生活中会有各种各样的名字,而这些名字就是我们人类社会中每一个变量个体的标识符。比如对于每个人类个体而言,我们都有自己的名字,对于我们养的宠物而言它们可能也有自己的名字。我们购买很多商品的时候,这些商品大都拥有自己的ID条码,这些条码ID就可以认为是这些“变量”的名字。

其实这些名字,就是这些变量的标识符,用来给人们区分的。下面用一个例子来大家简单讲一下。

下面是ST语言的关键字,用于表示当前段代码是什么类型的。比如下面这段代码,代表的就是YJ_BeepAlarm是一个功能块,在这个功能块中输入变量区有哪些变量参数输入进来,给当前功能块程序使用。

下面这段代码,就是上述说的输入变量区中的输入变量。这些输入变量拥有自己的名字,同时知道自己的类型。

比如“ib_报警启动”,“ib_报警停止”,”if_报警周期”,“if_报警占比”,“id_报警次数”这些都是变量的名字。而跟在它们后面的就是表示这个变量是什么类型的。就好比人类社会中,有“小米”、“小明”,“杰克”等名字,但是他到底人呢还是宠物呢亦或是手机品牌的名字呢,都是需要我们进行分类进行限定的。

在程序编程中,我们也需要做这些限制,也就是我们每一个变量名字(标识符)后面,都有自己的数据类型。关于数据类型的分类,我们将在3.4章节为大家介绍。

在codesys编程中,codesys平台是支持中文编程的,具体设置方法请参考1.4章节。使用中文编程在大多数编程语言中,并不支持。所以codesys在中国本地化方面,是很人性化的。我们可以使用codesys用中文编程。

这里插一句题外话,我相信随着中国国力的提升,我相信未来支持中文编程的语言会越来越多的……

3.1.3变量声明的格式

&
ensp;   本章节内容参考codesysV3基础用户手册。

变量声明就是指定变量的名称、类型和赋初始值,变量的声明非常重要,未经声明的变量是不能通过编译的,所以也无法在程序中使用。用户可以在程序组织单元(POU)、全局变量列表(GVL)和自动声明对话框中进行变量的声明。在CoDeSys 中变量声明分为两类,普通变量声明和直接变量。

1) 普通变量声明

最常用的变量声明,不需要和硬件外设或通讯进行关联的变量,仅供项目内部逻辑使用。普通声明须符合以下规则:

< 标识符 > : < 数据类型 > {:=< 初值 >};
{}中为可选部分。
如nTest:BOOL;,nTest:BOOL:=TRUE;

2) 直接变量声明

在CoDeSys 应用中,当需要和可编程逻辑控制器的I/O 模块进行变量映射或和外部设备进行网络通讯时,需要采用此声明方法。

使用关键字AT 把变量直接联结到确定地址,直接变量须符合以下规则:

AT<地址>:
< 标识符 > AT < 地址 > : < 数据类型 > {:=< 初始化值 >};
{}中为可选部分。

使用“%”开始,岁后是位置前缀符号和大小前缀符号,如果有分级,则用整数表示分级,并用小数点符号“.”表示,如%IX0.0,%QW0。直接变量声明的具体格式如图4.X 所示。

位置前缀的定义:
* I:表示输入单元。
* Q:表示输出单元。
* M:表示存储区单元。
大小前缀的定义如表4-X 所示。

前缀符号 定义 约定数据类型
X 位(bit) BOOL
B 字节(BYTE) BYTE
W 字(WORD) WORD
D 双字(DWORD) DWORD
L 长字(LWORD) LWORD
* 未特定位置的内部变量,系统自动分配。

【例4.X】在程序中定义了变量双字型Var1,如需拿取该变量其中的一部分数据,将其转换成布尔/字节/字类型的变量,其首地址为多少,该如何换算:
VAR
Var1 AT%ID48:DWORD;
END_VAR

%I 说明了该变量属于输入单元,具体的地址为%ID48。该地址对应的内存映射详见表4-x 所示。字地址%IW96 和%IW97 两个字组合后对应%ID48,因为48* 2(字节)后的字节首地址为96。同样的道理,字节地址%IB192、%IB 193、%IB 194 和%IB 195 这四个字节变量组合后对应%ID48,因为48 * 4(字节) 后对应的字节首地址正好为192。表4.x 列出了CoDeSys V3.x 在寻址时,根据数据类型的大小(X:bit,B:byte,W:word,D:dword)。

%IX 96.0 – 96.7 96.8 – 192.15 97.0 – 97.7 97.8 – 97.15
%IB 192 193 194 195
%IW 96 96 97 97
%ID 48 48 48 48

映射关系:
1) %MX12.0:是%MB12 的第一位。
2) %IW4:表示输入字单元4(字节单元8 和9)。
3) %Q*:输出在一个为特定的位置。
4) %IX1.3:表述输入第1 字节单元的第三位。

这里介绍的计算方法只适用于CoDeSys V3.x 的,CoDeSys V2.x 的计算方法略有不同。

转载请注明:燕骏博客 » 第三章:3.1变量的表示与声明

赞赏作者

微信赞赏支付宝赞赏

喜欢 (7)or分享 (0)

如果您喜欢本站文章,感觉本站的资源对您有帮助,请狠狠点击下面

每累计赞助40元,即可让本站按最低配置运行一个月,感谢您的支持!

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 写的很好,支持一下
    异界没有手机2019-05-10 06:55 回复
    • 感谢您的支持
      Julius_wen2019-05-10 13:44 回复
  2. 写得很好,还更新吗?
    yyt2019-07-27 13:14 回复
    • 往后再汇川技术社区:http://bbs.inovance.com 上进行更新
      Julius_wen2019-08-30 14:45 回复