探讨PLC变量的数据类型及数值范围
PLC是工业控制不可缺少的自动化核心设备,要想学好PLC就必须要先了解数据类型。数据类型是所有自动化软件的编程基础,只有熟练掌握,才能随心所欲的驾驭。下面我们就以西门子S7-200为例,详细讲述这些常用的数据类型。
siemens PLC
1、基本数据类型
基本数据类型由以下几种:
1.1、位(bit)
定义为BOOL(布尔型),只有两个值:0 或 1。如:I0.0,Q0.1,M0.0,V0.1 等。
1.2、字节(Byte)
定义一个字节(Byte)等于8 位(Bit),其中0位为最低位,7 位为最高位。
如:IB0(包括 I0.0~I0.7 位),QB0(包括Q0.0~Q0.7 位),MB0,VB0 等。
用十六进制表示的范围为:00~FF,用十进制表示的范围为 0~255。
字节
1.3、字(Word)
定义相邻的两字节(Byte)组成一个字(Word),表示一个无符号整数,所以一个字为16位。
如:IW0 由 IB0 和 IB1 组成的,其中I是输入映象寄存器,W表示字,0是字的起始字节。特别注意的是:起始字节必须是偶数。
字的范围为十六进制的 0000~FFFF,十进制的 0~65536。
在编程时,如果已经使用 IW0,如果想再用 IB0或 IB1,就要特别慎重,避免重复定义。
字
1.4、双字(Double Word)
相邻的两个字(Word)组成一个双字,来表示一个无符号数。因此,双字为 32 位。
如:MD100 是由 MW100 和 MW102 组成的,其中M是位存储区,D表示双字,100是双字的起始字节。特别注意的是:双字的起始字节也必须是偶数。
双字的范围为十六进制的 0000~FFFFFFFF(即十进制的 0~4294967295)。
在编程时如果已经使用了MD100,如果再用 MW100或MW102,就要特别慎重,避免重复定义。
双字
特别注意:以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。
1.5、16位整数(INT,Integer)
整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768~32767。
正整数
1.6、32 位整数(DINT,Double Integer)
32 位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-2147483648~2147483647。
负整数
1.7、浮点数(R,Real)
浮点数为 32 位,可以用来表示小数。浮点数可以为:1.m×2e。
单精度浮点数
2、复合数据类型
用户通过复合基本数据类型而生成就是复合数据类型。
复合数据类型包括以下几种:
2.1、数组(ARRAY)
将一组同一类型的数据组合在一起组成一个单位就是数组。
2.2、结构(STRUCT)
将一组同不同类型的数据组合在一起组成一个单位就是结构。
2.3、字符串(STRING)
字符串是由最多 254 个字符组成的一维数组。
2.4、日期和时间(DATE-AND-TIME)
用于存储年、月、日、时、分、秒、毫秒和星期的数据。占用 8 个字节,BCD 编码。
星期天代码为1,星期一~星期六代码分别是 2~7。
如:DT#2004_07_15_12:30:15.200 为 2004 年 7 月 15 日 12 时 30 分 15.2 秒。
2.5、用户定义的数据类型(UDT,User-Defined Data Type)
由用户将基本数据类型和复合数据类型组合在一起形成的数据类型。
可以在数据块DB和变量声明表中定义复合数据类型。
3、数据类型汇总表格
4、举例说明
对于有符号的整数来说,最高位用作符号位,余下的位才是数值部分。
下面以有符号整数INT来举例说明其数值范围为什么是-32768-32767?
最高位是符号位,0为"+"、1为"- ,去掉一个符号位后,余下的数据只有15位。
15位二进制1对应的整数最大正整数为2^15-1=32767,最大值为+32767,对应二进制:0111 1111 1111 1111。即十进制范围:0~32767;
15位二进制1对应的整数最大负整数为-2^15=-32768,最大值为-32768,对应二进制:1111 1111 1111 1111。即十进制范围:-32768~-1;
西门子PLC
其实,数据类型简单也复杂,尤其是自定义数据类型。看得懂,并不代表你能在编程过程中能正确使用。只有自己动手编程,对不同的数据类型进行定义和使用,才能有深入地理解和掌握。当你对数据类型充分理解后,就可以学习数据的寻址。坚持不懈的学习和实际编程,才会有可能成为变成专家。
三菱FX系列PLC常见问题集(1)
【1】FX系列PLC的计算机链接功能,在使用下位请求通信功能时,对接线有什么要求吗?
答:FX系列PLC的计算机链接功能,在使用下位请求通信功能时,在RS-485中需要采用2对接线,不能采用1对接线。
【2】如何获取宽度窄的输入脉冲?
答:可编程控制器的输入ON时间或OFF时间,必须比可编程控制器的循环扫描时间+输入滤波器的时间更长。例如考虑输入滤波器10ms的响应延迟,10ms的循环扫描时间的话,ON时间、OFF时间各需要20ms.因此,不可以处理1000/(20+20)=25Hz以上的输入脉冲。但是,使用可编程控制器的特殊功能和应用指令时,可以改善这个情况。改善用的便利功能使用下面的功能,可以获取比运算周期更短的脉冲。?高速计数器功能、输入中断功能、脉冲捕捉功能、输入滤波器值的调节功能
【3】FX3U、FX3UC、FX3G系列可编程控制器,原点回归DSZR指令中,近点信号(DOG)的后端检出是否受到输入滤波常数以及顺控程序的扫描周期的影响?
答:如果将近点信号(DOG)指定为基本单元的X000~X017(FX3U-16MO,FX3UC-16MO为X000~X007;FX3G基本单元为X000~X007.),那么以Ims周期(中断)监视信号(DOG)的后端检出。在指定了X020以后的输入编号或者辅助继电器等其它的软元件时,近点信号(DOG)的后端检出受到输入滤波常数以及顺控程序的扫描周期的影响。
【4】FX3U(C),FX3G可以直接指定实数吗?
答:在FX3U、FX3UC、FX3G系列可编程控制器中,[E]是表示实数(浮点数数据)的符号,主要用于指定应用指令的操作数的数值。(例如:E1. 234或是E1. 234+3)实数的指定范围为,-1. 0x2128~-1. 0x2-126、0、1. 0x2-126~1. 0x2128.在顺控程序中,实数可以指定“普通表示”和“指数表示”两种。-普通表示就将设定的数值指定。例如,10. 2345就以E10. 2345指定。-指数表示设定的数值以(数值)x10n指定。例
如,1234以E1. 234+3指定。[E1. 234+3]的[+3]表示10的n次方(+3为103).
【5】带DOG搜索的原点回归(DSZR)指令的零点信号,该信号的逻辑能否指定?如何指定?
答:零点信号的逻辑变更[DSZR指令]带DOG搜索的原点回归(DSZR)指令的零点信号,该信号的逻辑由零点信号逻辑反转标志位的ON/OFF来指定。各脉冲输出端软元件所对应的零点信号逻辑反转标志位如下:YO00-M8346 Y001-M8356 Y002*1-M8366003*2-M8376 OFF时:正逻辑(输入为ON时,近点信号为ON)ON时:负逻辑(输入为OFF时,近点信号为ON)*1.在使用14点型、24点型FX3G可编程控制器时,脉冲输出端Y002不能指定。*2.在FX3U可编程控制器上连接了2台FX3U-2HSY-ADP时,可使用脉冲输出端Y003.O
【6】FX系列可编程控制器清零信号软元件的指定方法是什么?
答:清零信号软元件的指定方法:1)以16进制数(8进制数的表现)形式,在“清零信号软元件指定”用软元件中,写入指定为清零信号输出(Y)的软元件编号。例如设定为H0010时,为Y010;若设定为H0008时,为Y008,由于不存在,所以发生运算出错。2)对于指定了清零信号软元件的脉冲输出端软元件,使其相应的“清零信号输出有效标志位”、“清零信号软元件指定功能有效标志位”置ON.3)执行带DOG搜索的原点回归(DSZR)指令、或者原点回归(ZRN)指令。指定用的程序举例是将脉冲输出端Y000的清零信号指定为Y010的程序。LD M8000 MOVP H0010D8464 OUT M8464 OUT M8341
【7】10进制常数指定的范围是多少?
答:[K]是表示10进制整数的符号,主要用于指定定时器和计数器的设定值,或是应用指令的操作数中的数值。(例如:K1234)10进制常数的指定范围如下所示。-使用字数据(16位)时:K-32768~K32767-使用2个字数据(32位)时:K-2, 147, 483, 648~K2, 147, 483, 647O
【8】2进制浮点数的有效位数和处理范围是多少?
答:有效位数:2进制浮点数的有效数如用10进制数表示,大约为7位数。2进制浮点数的处理范围如下所示。-最小绝对值1175494x10-44-最大绝对值3402823x1032
【9】定时器中断的中断循环时间的设定范围设是什么?
答:若超出范围会执行吗?定时器中断:每隔指定的中断循环时间(10ms~99ms),执行中断子程序。在可编程控制器的运算周期以外,需要循环中断处理的控制中使用。定时器中断设定在9ms以下时,在以下情况有可能出现不能按照正确的周期处理定时器中断,所以建议在10ms以上使用。1)中断程序的处理时间比较长时。2)主程序中使用了处理较长的指令时。
【10】FX3U、FX3UC、FX3G系列可编程控制器存储器的允许写入次数是多少?
答:存储器盒允许写入次数在1万次以下,FX3G可编程控制器内置存储器(EEPROM)允许写入次数在2万次以下。O、11、使用内置高速器计数时会发生监视定时器(WDT)错误,有什么原因?输入到高速计数器中的信号,不能超过响应频率,如果超出频率信号时,可能会使WDT错误,且并联链接不能正常运行。
更多关于自动化文章分享请关注《海蓝智能科技》,私信“进群”,加入三菱PLC技术交流群,我们有专业的技术人员给您解答疑惑.
相关问答
c语言、浮点数怎么变成16进制?
首先浮点数2.5写成二进制应该为10.1(其中整数部分10b=2d,小数部分0.1*2=1所以0.1b为0.5d)。然后要把10.1规格化(写成1.xxxx*2^n的形式,有点像科学计数法)...
三菱plc怎么把10位转16位?
在三菱PLC中,将10位二进制数转换为16位二进制数可以使用位移运算和逻辑运算。以下是将一个10位的二进制数转换为16位的二进制数的示例代码:1.首先,将10位的二...
excel浮点数转换十六进制公式?
在Excel中,可以使用DEC2HEX函数将十进制浮点数转换为十六进制数。DEC2HEX函数的语法如下:```DEC2HEX(number,[places])```其中,number是要...
16进制转浮点数计算器?
本计算器用于将(32位)16进制IEEE-754标准浮点数转为10进制浮点数,输入32位(单精度)16进制IEEE-754标准浮点数,点击“计算”输出10进制浮点数。32位等于4个...
用python转换浮点数为16进制怎么写?比如把34.4536或者-34.4536转成16进制?
#-*-coding:utf8-*-importctypesdefh2f(s):cp=ctypes.pointer(ctypes.c_longlong(s))fp=ctype...
为什么PLC要运用到浮点数运算-189****6906的回答-懂得
如果PLC总是用16进制(二进制),或者BCD码,是难以满足越来越复杂的控制需要的。如果是单纯的逻辑控制当然用到的都是开关量,一般的数据采集和PID控制...
十六进制浮点数转十进制计算器?
3、在计算器的查看选项页面中找到“程序员”选项后点击。4、在出现的界面中,首先选中“十六进制”选项,然后输入需要转换的十六进制数,这里演示为“E”。5...
上位机发的浮点数是多少位?
浮点数一般是32或64位。因为浮点数的位数是指计算机内部用来保存浮点数的二进制位数,而常见的浮点数格式包括单精度浮点数(32位)和双精度浮点数(64位)。单精...
【某计算机系统中,16位浮点数的表示格式如图1所示.其...
[最佳回答]阶码为1110:对应值二进制补码为0110b,十进制为6尾数为001010000000,即去掉首位符号为后值为:0.01010000000将尾数的小数点右移位后,值为001010...
三菱PLC里的浮点运算,浮点是什么意思?-小红薯C592E475的...
所谓浮点数就是指带小数点的数为双字类型占用32为的空间使用前需要进行浮点数转换一般使用在四则运算里面转换指令为FLT和INT浮点运算就是小...