西门子PLC《S7-200SMART》基础应用13 这节课呢给大家简单讲一下PLC当中的数据类型 这个很重要 要是对于PLC当中的数据类型和组成不了解的话,很难进行复杂程序编写的 也就是说数据类型是PLC编程的基本功 数据类型 数据类型(Data Type)是数据在CPU中的组织形式,它明确了数据的长度及数据的操作方式(支持哪些指令) 编程时给变量指定数据类型后,编译器会给该变量分配相应长度的存储空间并明确该变量的操作方式。在 S7-200 SMART 中,使用变量表进行赋值时,必须为每一个变量指定数据类型 S7-200 SMART支持的数据类型包括基本数据类型和复杂数据类型 基本数据类型包括如下几种。 ①布尔型(BOOL)数据。布尔型数据占用内存的一个位,其取值只有两种情况:0或者1 在PLC 的编程中,通常用字节的某个“位”来表示布尔型的变量。比如数字量输入点“I0.0’就是一个布尔型变量,它表示输入缓冲区的第0个字节的第0位 ②字节(BYTE) 8 个位组成一个字节 在PLC中,输入模块和输出模块的通道也是按照字节的顺序来存放的 比如 I0.0~I0.7,这8个输入“位”组成“IBO” 字节类型可以作为有符号数或者无符号数 当作为有符号数时,其取值范围为-128~+127 当作为无符号数时,其取值范围为0~255(0xFF) ③ 整型(INT)数据 整型数据占用两个字节,用来表示有符号数,其取值范围为 -32768~+32767 整型数据的最高位为符号位,“0”表示正数,“1”表示负数。 ④双整型(DINT)数据 双整型数据由两个整型数据组成,是32 位的有符号数,其取值范围为-2147483648~+2147483647 ⑤字(WORD):字是由两个字节组成的16位的无符号数,其取值范围为0~65535。与整型数据不同,字类型没有符号 ⑥双字(DWORD)数据。顾名思义,“双字”由两个“字”组成,它是32 位的无符号数,取值范围为0~4294967295 ⑦实型(REAL)数据。实型数据占用四个字节,用来表示浮点数。表示的取值范围为:正数,+1.175495E-38~+3.402823E+38;负数,-1.175495E-38~-3.402823E+38 实型数据总计 32 个“位”,被分成三个部分: a.符号位:最高位(第31位),正数为“0”,负数为“1” b.指数位:第 23 ~ 30 位,用于存储科学计数法中的指数数据,并且采用移位存储 c.尾数部分:第0~22位,表示浮点数的尾数部分 对于“指数位”,为了处理负指数的需要,其存储的值为实际指数加上偏移量“127”。比如,若实际指数为“0”,则存储值为“127”;若实际指数为“-64”,则存储值为“63” ⑧字符串(STRING)。字符串是字符的集合,其长度的取值范围为1~ 255。字符串的第一个字节用来表示其长度,其后是以字内容。为n字符串占用内存的大小为 n+1 个字节 通过以上的了解呢我们知道了基本的数据类型,这些数据从数学运算的角度很有用的 你看哈,数据长度是越来越大的,当我们要存储温度、压力、流量信号时就要用到打的数据类型,这就好比是我们去摘苹果 当我们摘一两个苹果时用手拿就行了,这就好比是用PLC的位去存储 当我们摘了十几个甚至几十个时,就需要用筐了,这就好比是字节、字、整数 当我们摘了一堆苹果时筐就盛不下了,这时候就需要用卡车了,这就好比是双整数双字 在数学计算中,我们经常会有小数点,在PLC中就是实数(浮点数),其实就是带小数点的数 字符串啊,来源于汇编语言当中的概念,相当于存储数据用的,我又好几条信息需要存放,信息的内容又不一样,怎么办,用字符串就可以了 总归来说,数据类型是为我们编程服务的,是为了更加快捷的编程 下面我们举个例子 控制要求,用8个LED组成一条灯带,这个灯带用该观察数值变化,当按下增加按钮是,灯带的发光长度增加,当按下减少键时,灯带发光长度减少 首先我们分配I/O端口 输入点:I0.0增加按钮,I0.1减少按钮 输出点:Q0.0~Q0.7对应LED1~LED7八个LED灯 输入侧输出侧接线如下 输出侧接线如下 控制程序如下 在程序网络1中,初始化脉冲SMO.1将Q.0~Q0.3置1,条形图第1~4 段亮。 在程序网络2 中,当按下增加按钮 10.0时,执行左指令SHLBQBO的初始数据2#0000 1111左移一位,移位的结果为2#0001 1110,同时QBO的最低位Q0.0置位,QBO最终结果为2#0001 1111,条形图第1~5段亮。以后每按下一次增加按钮便增加一个亮段。 在程序网络3中,当按下减少按钮 10.1时,执行右移指令 SHR B,熄灭一个亮段。以后每按下一次减少按钮,便熄灭一个亮段,直至全部段熄灭。 你看,我们使用了输出“字节”,也就是Q0.0~Q0.7这8位一块来控制的,你要是不用字节,是不是还需要Q0.0置1,Q0.1置1,Q0.2置1,Q0.3置1,Q0.4置1,Q0.5置1,Q0.6置1, Q0.7置1是不是很麻烦,还得写好几行程序 好了今天的内容先到这里,我们下期见。 |
|