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

PLC基础篇之常量与变量

程序设计的本质是对各类数据进行读写操作。数据有其特有属性,根据属性的不同,可以分为不同的数据类型。前面的文章我们介绍了PLC的基本数据类型,知道了“位”、“整型”、“字”、“双字”等基本数据类型的概念。数据类型属于抽象概念,在编程时,我们并不能直接操作数据类型,而是要操作数据的实例。实例是数据类型的具体表现,包括两种:“常量”与“变量”。今天这篇文章就跟大家聊聊在STEP7编程中用到的常量与变量。

cover.jpg“常量”,英文名称“constant”,是指在程序的运行过程中其值不能被改变的量。常量存放在只读存储区,任何试图修改常量值的代码都将引发错误。

常量可以有不同的数据类型,可以是“字节”、“字”或者“双字”。比如:B#16#10表示以“字节”形式存放的常量(占用一个字节),其值为十六进制的“10”;W#16#10表示以“字”形式存放的常量(占用两个字节),其值为十六进制的“10”;DW#16#10表示以“双字”形式存放的常量(占用四个字节),其值为十六进制的“10”;

上面的例子可以看出,虽然常量存放的值都为“0x10”,但是由于声明的数据类型不同,所以它占用的内存的资源也不同。知道了这个道理,在以后的程序设计中,就可以根据具体的需要,采用不同数据类型的常量,以便能节省内存资源,提高程序的运行效率。

常量可以表示二进制数据,用前缀“2#”表示,比如“2#1010”表示二进制的“1010”。在进行按位“与”的操作中,二进制的常量使用起来会很方便。

常量可以声明成整数类型,在SAMITIC STEP7平台下用“L#”表示,比如“L#10”,表示十进制的“10”;“L#”也可以表示负数,比如“L#-5”,表示十进制的“-5”。“L#”声明的常量占用四个字节,总计32位。

S7-1200/1500系列PLC支持更多的数据类型,其中整型数据被细分成有符号短整型(SINT),无符号短整型(USINT),有符号整型(INT),无符号整型(UINT),有符号双整型(DINT),无符号双整型(UDINT),有符号长整型(LINT,无符号长整型(ULINT)。在S7-1200/1500下的整型常数,只需要在数据类型的后面加上“#”即可,比如:“SINT#10”或者“INT#567”等。

常数可以声明成实数(浮点数),在SAMITIC STEP7平台下不需要特殊的前缀,只需要在书写是加上小数点即可,比如“10.0”,编辑器会自动使用科学计数法表示该数值,如下图:

real.png

在博途(Portal)平台下,可以使用“REAL#”表示实数常数。

在STEP7中,常量还可以表示时间,用“S5T#”表示。S5格式的时间常量占用2个字节,其格式为S5T#D_H_M_S_MS。其中“D”表示“天”,“H”表示小时,“M”表示“分钟”,“S”表示“秒”,“MS”表示“毫秒”。比如:S5T#1M5S表示1分钟零五秒,时间常量一般和定时器(Timer)配合使用。

接下来说说变量。

variable.jpg“变量”,英文名称“variable”,是在程序的运行过程中值可以被修改的量。变量也可以定义成不同的数据类型,与定义常量不同的是,定义变量时需要明确其存储区域。

西门子S7系列PLC的存储区域包括:输入过程映像区(I),输出过程映像区(Q),位存储区(M),定时器区(T)和计数器区(C)。比如M0.1表示以“位”的方式来操作“位存储区”的第0个字节的第1位,MB0表示“位存储区”的第0个字节“”,MW0表示“位存储区”的第0个“字”;MD0表示“位存储区”的第0个“双字”。

这种以存储区的编号来表示变量的方式称为变量的绝对地址表示。绝对地址不能直观地表示实际物理信号意义,程序的可读性较差。为了增加程序的可读性,S7系列PLC还支持使用符号名称来表示变量,比如可以给M0.1起个符号名“Switch_Open”,这样就知道该变量与开关的打开状态有关。

常量与变量的概念就先介绍到这里,更多关于变量的深入内容,将在以后的文章中陆续介绍。相关参考文章:

PLC基础篇之数据类型(Data type)

PLC基础篇之数制及其表示方法

S7-1200硬件篇之读懂CPU的内部存储区

官网提供本文PDF版本下载:

PLC基础篇之常量与变量

来源:本站|   大小:200 KB|   下载次数:92次

取消

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

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

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

发表评论