二进制、十六进制和十进制
二进制和二进制数:所有通过S7-200 SMARTPLC处理的数据(数值、字符等等)都以二进制形式表示。
十六进制和十六进制数:在二进制数中,每4个二进制位可以分为一组;这组二进制数值的不同变化可以表
示16个状态,正好是16进制数每一位数字的变化范围。可以用十六进制数值方便地表示二进制数。
例如,二进制数1000_1111b分为两组来看,分别是1000b和1111b,正好可以表示16进制数字8h和Fh(0000b
对应于0h,...,1111b对应于Fh);那么这个二进制数就可以表示为8Fh。
十进制和十进制数:十进制是S7-200SMART的数学计算的基础,一般都使用十进制的体系,除了时间(12/24或60进制)等特殊数据外。
二进制数用于在PLC中表示十进制数值、或者其他(如字符等)数据,而16进制用来比较简单地描述二进制数。
二进制位逻辑(bit)
PLC中以二进制“位”的数据形式来表示逻辑“1”、“0”(或者“开”、“关”)。位是Zui基本的数据单位。
在数据字节(Byte)中,二进制逻辑只用一个位(bit)来表示。每个字节由8个位组成。
整数、无符号整数和有符号整数
字节、字、双字都可以用来表示十进制整数,显然它们的数据长度不同,能够表示的数的大小范围也不同。
无符号整数只有0和正整数;有符号整数可以有正数和负数。
有符号整数采用二进制补码的形式来表示负数。
实数(浮点数)
实数(或浮点数)以 32 位单精度数表示,其格式为 ANSI/IEEE 754-1985标准中所描述的形式。实数按双字长度访问。
注意:浮点数jingque到小数点后第 6 位。输入浮点常数时,Zui多只能指定 6位小数。计算涉及到包含非常大和非常小数字的一长串数值时,计算结果可能不准确。
ASCII字符和String(字符串)
在S7-200 SMART中,ASCII字符是由表示字母、数字和一些特殊符号的ASCII编码组成的二进制数据字节,
一个字节存储一个字符。
访问S7-200 SMART 中的数据
S7-200SMART从外部接收信号输入(输入数据),在内部按照用户程序运算、处理后,再输出进行各种控制、显示。
CPU将信息存储在不同存储单元,每个位置均具有唯一的地址。寻址时,数据地址以代表存储区类型的字母开始,随后是表示数据长度的标记,是存储单元编号;对于二进制位寻址,还需要在一个小数点分隔符后指定位编号。
位寻址的举例如下图所示:
图1.位寻址举例
其中,存储区和字节地址(“M3”)代表 M 存储器的第 3 个字节,用句点(“.”)与位地址(位 4)分开。
字节寻址的举例如下图所示:
图2. 字节寻址举例
可以看出,VW100包括VB100和VB101;VD100包括VW100和VW102,即VB100,VB101,VB102,VB103这4个字节。这些地址是互相交叠的。
当涉及到多字节组合寻址时,遵循“高地址,低字节”的规律。
下表给出了不同数据长度可表示的整数值范围。
表1.不同数据长度表示的十进制和十六进制数范围
对本地 I/O 和扩展 I/O 进行寻址
CPU 提供的本地 I/O 具有固定的 I/O 地址。可以通过在 CPU 的右侧连接扩展 I/O 模块,或通过安装信号板来增加 I/O点。模块点的地址取决于 I/O 类型和模块在 I/O 链中的位置。
注意:
l 数字量 I/O的过程映像寄存器空间总是以八位(一个字节)递增的形式预留。如果模块没有为每个保留字节中的每一位提供相应的物理点,那些未使用的位就无法分配给I/O 链中的后续模块。对于输入模块,这些未使用的位会在每个输入更新周期中被清零。
l 模拟量 I/O 点总是以两点递增的方式分配。如果模块没有为这些点分配相应的物理 I/O,则这些I/O 点将丢失,并且不能够分配给I/O 链中的后续模块。
下表提供固定映射惯例的示例(由 STEP 7 Micro/WIN SMART 建立,并作为系统块中I/O组态的一部分下载)。
表2. CPU 映射惯例:
计数器
S7-200 SMART 指令提供了下述三种类型的计数器。
l CTU:增计数器。
l CTD:减计数器 。
l CTUD:增/减计数器 。
计数器指令的梯形图格式如下图所示:
图1.计数器指令
l CU:增计数信号输入端;
l CD:减计数信号输入端;
l PV:预置值;
l LD:装载预置值;
l R:复位输入;
注意:当子程序在同一周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器。
注意:由于每个计数器有一个当前值,请勿将同一计数器编号分配给多个计数器。(编号相同的加计数器、加/减计数器和减计数器会访问相同的当前值)
计数器按如下表所列的规律工作:
表2.计数器工作规律
计数器计数范围为0~32,767。计数器号不能重复使用。计数器有两种寻址类型:Word(字)和Bit(位)。计数器号既可以用来访问计数器当前值,也可以用来表示计数器位的状态。
增/减计数器指令举例如下图所示: