进制数的1位(bit)只能取0和1这两个不同的值,用来表示 开关量的两种不同的状态。该位的值与线圈、触点的关系。 ON/OFF, TURE/FALSE。二进制常数:2#1111011010010001。 2.十六进制数 十六进制的16个数字是0~9和A~F,每个占二进制数的4位。 B#16#,W#16并,DW#16#,W#16#13AF(13AFH)。逢16进1,例 如B#16#3C=3×16+12=60。 3.BCD码 BCD码用4位二进制薮表示一位十进制数,十进制数9对应的二 进制数为1001 最高4位用来表示符号,16/32位BCD码的范围。BCD码实际上 是十六进制数,但是各位之间逢十进一。296对应的BCD码为 W#16#296,或2#0000001010010110。 2#0000000100101000对应的十进制数也是296,对应的十进制 数为 28+25+23=256+32+8=296
二进制数的 1 位(bit)只能取 0 和 1 这两个不同的值,用来表示 开关量的两种不同的状态。该位的值与线圈、触点的关系。ON/OFF, TURE/FALSE。二进制常数:2#1111_0110_1001_0001。 2.十六进制数 十六进制的 16 个数字是 0~9 和 A~F, 每个占二进制数的 4 位。 B#16#,W#16#,DW#16#, W#16#13AF(13AFH)。逢 16 进 1,例 如 B#16#3C=3×16+12=60。 3.BCD 码 BCD 码用 4 位二进制数表示一位十进制数,十进制数 9 对应的二 进制数为 1001。 最高 4 位用来表示符号,16/32 位 BCD 码的范围。BCD 码实际上 是十六进制数,但是各位之间逢十进一。296 对应的 BCD 码为 W#16#296,或 2#0000 0010 1001 0110。 2#0000 0001 0010 1000 对应的十进制数也是 296,对应的十进制 数为 2 2 2 256 32 8 296 8 5 3 + + = + + =
3.22基本数据类型 IB1 IB2口 IB5口■■■■■■■ 图3-5位数据的存放 1.位(bit):位数据的数据类型为BOOL(布尔)型。I3.2的意 义 2.字节(Byte) 3字(Word)表示无符号数。取值范围为W#16#0000~W#16#FFF 4.双字( Double word)表示无符号数。范围DW#16#0000000 DW#16# FFFF FFFF。 5.16位整数(INT, Integer)是有符号数,补码。最高位为符号 位,为0时为正数,取值范围为-32768~32767 6.32位整数(DINT, Double Integer)最高位为符号位,取值范 围为 2147483648~2147483647。 MSB MSB 15高有效字节低有效字节 B100 (a)MB100 (b)Mw100 MSB LSB 31最高有效字节 最低有效字节 MB100 MBIOI MBIO MB103 (c)MD 图3-6字节、字和双字
3.2.2 基本数据类型 图3-5 位数据的存放 7 6 5 4 3 2 1 0 IB1 IB2 IB3 IB4 IB5 IB0 MSB LSB 1.位(bit):位数据的数据类型为 BOOL(布尔)型。I3.2 的意 义。 2.字节(Byte) 3.字(Word)表示无符号数。取值范围为 W#16#0000~W#16#FFFF。 4.双字(Double Word)表示无符号数。范围 DW#16#0000_0000~ DW#16#FFFF_FFFF。 5.16 位整数(INT,Integer)是有符号数,补码。最高位为符号 位,为 0 时为正数,取值范围为−32 768~32 767。 6.32 位整数(DINT,Double Integer)最高位为符号位,取值范 围为 −2 147 483 648~2 147 483 647。 低有效字节 最高有效字节 最低有效字节 高有效字节 MB100 MB100 MB101 MB100 MB101 MB102 MB103 LSB LSB LSB MSB MSB MSB 0 0 0 15 31 7 ( c ) MD100 ( a ) MB100 ( b ) MW100 图 3-6 字节、字和双字
7.32位浮点数 浮点数又称实数(REAL),表示为1mx2,例如1234可表示为 1234×102。根据 ANSIIEEE标准 浮点数=1m×2 式中指数e=E+127(1<e<254),为8位正整数 ANSIIEEE标准浮点数占用一个双字(32位)。 因为规定尾数的整数部分总是为1,只保留尾数的小数部分m(0 22位)。浮点数的表示范围为±1.175495×10-8~±3402823×1038 符号位 指数e 尾数的小数部分m 313029282726 222120191817161514131211109876543 图3-7浮点数的结构 用很小的存储空间(4个字节)可以表示非常大和非常小的数 PIC输入和输岀的薮值大多是整数,浮点数的运算速度比整数运算的 慢 L#为32位双整数常数,例如L#+5。 P#为地址指针常数,例如PHM20是M20的地址 S5T#是16位S5时间常数,格式为S5T# ad bh cm ds eMS S5T#4S30MS=4s30ms,取值范围为S5T#0~S5T#2H46M30S0MS (990s),时间增量为10ms。 C#为计数器常数(BCD码),例如C#250。8位ASCI字符用单 引号表示,例如‘ABC'。 T#为带符号的32位IEC时间常数,例如
7.32 位浮点数 浮点数又称实数(REAL),表示为 1.m × E 2 ,例如 123.4 可表示为 1.234 × 2 10 。根据 ANSI/IEEE 标准 浮点数=1.m × e 2 式中指数 e = E +127(1 ≤e ≤254),为 8 位正整数。 ANSI/IEEE 标准浮点数占用一个双字(32 位)。 因为规定尾数的整数部分总是为 1,只保留尾数的小数部分 m(0~ 22 位)。浮点数的表示范围为±1.175495 × 38 10− ~±3.402 823 × 1038。 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 符号位 指数e 尾数的小数部分m 图 3-7 浮点数的结构 用很小的存储空间(4 个字节)可以表示非常大和非常小的数。 PLC 输入和输出的数值大多是整数,浮点数的运算速度比整数运算的 慢。 L#为 32 位双整数常数,例如 L# +5。 P#为地址指针常数,例如 P#M2.0 是 M2.0 的地址。 S5T#是 16 位 S5 时间常数,格式为 S5T#aD_bH_cM_dS_eMS。 S5T#4S30MS = 4s30ms,取值范围为 S5T#0~S5T#2H_46M_30S_0MS (9990s),时间增量为 10ms。 C#为计数器常数(BCD 码),例如 C#250。8 位 ASCII 字符用单 引号表示,例如 ‘ABC’。 T# 为带符号的 32 位 IEC 时间常数,例如
T#1D12H30M0S250MS,时间增量为lms。 DATE是IEC日期常数,例如D#2004-1-15。取值范围为 D#1990-1-1~D#2168-12-31。 TOD#是32位实时时间( Time of day)常数,时间增量为lms, 例如TOD#23:50:45.300。 B(bl,b2)B(bl,b2,b3,b4)用来表示2个字节或4个字 节常数。 3.23复合数据类型与参数类型 1.复合数据类型 通过组合基本数据类型和复合数据类型可以生成下面的数据类 (1)数组( ARRAY)将一组同一类型的数据组合在一起,形成一 个单元。 (2)结构( STRUCT)将一组不同类型的数据组合在一起,形成 个单元。 (3)字符串( STRING)是最多有254个字符(CHAR)的一维数 组 (4)日期和时间( DATE AND TIME)用于存储年、月、日、时 分、秒、毫秒和星期,占用8个字节,用BCD格式保存。星期天的 代码为1,星期一~星期六的代码为2~7。 例如DT#200407-15-12:30:15200为2004年7月15日12时30 分152秒
T#1D_12H_30M_0S_250MS,时间增量为 1ms。 DATE 是 IEC 日期常数,例如 D#2004-1-15。取值范围为 D#1990-1-1~D#2168-12-31。 TOD#是 32 位实时时间(Time of day)常数,时间增量为 1ms, 例如 TOD#23:50:45.300。 B(b1,b2) B(b1,b2, b3,b4)用来表示 2 个字节或 4 个字 节常数。 3.2.3 复合数据类型与参数类型 1.复合数据类型 通过组合基本数据类型和复合数据类型可以生成下面的数据类 型: (1)数组(ARRAY)将一组同一类型的数据组合在一起,形成一 个单元。 (2)结构(STRUCT)将一组不同类型的数据组合在一起,形成一 个单元。 (3) 字符串(STRING)是最多有 254 个字符(CHAR)的一维数 组。 (4) 日期和时间(DATE_AND_TIME)用于存储年、月、日、时、 分、秒、毫秒和星期,占用 8 个字节,用 BCD 格式保存。星期天的 代码为 1,星期一~星期六的代码为 2~7。 例如 DT#2004-07-15-12:30:15.200 为 2004 年 7 月 15 日 12 时 30 分 15.2 秒
(5)用户定义的数据类型UDT( user-defined data types) 在数据块DB和逻辑块的变量声明表中定义复合数据类型 2.参数类型 为在逻辑块之间传递参数的形参( formal parameter,形式参数) 定义的数据类型: (1)TMER(定时器)和 COUNTER(计数器):对应的实参( actual parameter,实际参数)应为定时器或计数器的编号,例如T3,C21。 (2) BLOCK(块):指定一个块用作输入和输出,实参应为同类型 的块 (3) POINTER(指针):指针用地址作为实参。例如P#M500 (3)ANY:用于实参的数据类型未知或实参可以使用任意数据类型 的情况,占10个字节。 3.2.5系统存储器 1.过程映像输入/输出(I/Q) 在扫描循环开始时,CPU读取数字量输入模块的输入信号的状态, 并将它们存入过程映像输入( process image input,PI)中。 在扫描循环中,用户程序计算输岀值,并将它们存入过程映像输 出表( process image output,pPIQ)。在循环扫描结束时将过程映像输 出表的内容写入数字量输出模块 I和Q均以按位、字节、字和双字来存取,例如I0.0,IBO,IWO和 ID0。 与直接访问IO模块相比的优缺点
(5) 用户定义的数据类型 UDT (user-defined data types)。 在数据块 DB 和逻辑块的变量声明表中定义复合数据类型。 2.参数类型 为在逻辑块之间传递参数的形参(formal parameter,形式参数) 定义的数据类型: (1) TIMER(定时器)和 COUNTER(计数器):对应的实参(actual parameter,实际参数)应为定时器或计数器的编号,例如 T3,C21。 (2) BLOCK(块):指定一个块用作输入和输出,实参应为同类型 的块。 (3) POINTER(指针):指针用地址作为实参。例如 P#M50.0。 (3)ANY:用于实参的数据类型未知或实参可以使用任意数据类型 的情况,占 10 个字节。 3.2.5 系统存储器 1.过程映像输入/输出(I/Q) 在扫描循环开始时,CPU 读取数字量输入模块的输入信号的状态, 并将它们存入过程映像输入(process image input,PII)中。 在扫描循环中,用户程序计算输出值,并将它们存入过程映像输 出表(process image output,PIQ)。在循环扫描结束时将过程映像输 出表的内容写入数字量输出模块。 I 和 Q 均以按位、字节、字和双字来存取,例如 I0.0, IB0, IW0 和 ID0。 与直接访问 I/O 模块相比的优缺点