资源描述
项目3 数制、数据类型和寻址方式
1. 数制
所有的数值在PLC中都是以二进制形式表示的,数据的长度和表示方式称为数据格式。S7-200 PLC 的指令对数据格式有一定的要求,指令与数据之间的格式一致才能正常工作。矚慫润厲钐瘗睞枥庑赖。
1) 计数体制
常用的技术体制有十进制、二进制、十六进制等。
(1) 十进制数
在十进制数中,用0,1,2,3,4,5,6,7,8,9这十个不同数码按照一定的规律排列起来表示数值的大小,其计数规律是“逢十进一”。十进制数是以10为基数的计数体制。聞創沟燴鐺險爱氇谴净。
各位数表示的数值就是该位数码(系数)乘以相应的权。按此规律,任意一个十进制数(N)都可以写成按权展开式残骛楼諍锩瀨濟溆塹籟。
=
=
(2) 二进制
二进制是以2为计数的计数体制。它只有0和1两个数码,采用“逢二进一”的计数规律。任意一个二进制数都可以写成按权展开式酽锕极額閉镇桧猪訣锥。
=
二进制数比较简单,只有0和1两个数码,并且算术运算也很简单。
(3) 十六进制数
十六进制数是以16为基数的计数体制,它用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F这16个数码表示,采用“逢十六进一”的计数规律。四位二进制码可以用一位十六进制码来表示。任意十六进制数可以写成按权展开式彈贸摄尔霁毙攬砖卤庑。
=
表1 几种数制对照表
十进制数
二进制数
十六进制数
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
8
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
(4) 数制转换
1) 二进制数转换成十进制数
例如:将二进制数转换成十进制数
=
2) 十进制数转换成二进制数
例如:将45转换成二进制数
用短除取余法
数值从下往上记
3) 十六进制数转换成十进制数
例如:将十六进制数转换成十进制数
=
4) 十进制转换成十六进制数
10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成16。
同样是45,转换成16进制则为: 2DH
5) 二进制数转换成十六进制数
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
如:上行为二制数,下面为对应的十六进制;
1111 1101 , 1010 0101 , 1001 1011
F D , A 5 , 9 B
2#111111011010010110011011=16#FDA59B
6) 十六进制数转换成二进制数
反过来,当我们看到 FDA59BH时,如何迅速将它转换为二进制数呢?
F D A 5 9 B
1111 1101 1010 0101 1001 1011
16#FDA59B=2#111111011010010110011011
(5) 奇偶校验码
数码在传送和存取过程中,会发生将“1”码误成“0”码、“0”码误成“1”码的错误。为了。为了检查出这种错误,可采取奇偶校验码的编码方式。代码有两部份组成:一部分是信息位,一部分是检误位。若加上去的检误位中的“1”码的个数和信息位中的“1”码的个数之和为奇数个,则为奇校验码,否则为偶校验码。謀荞抟箧飆鐸怼类蒋薔。
例如,对8位一组的二进制码来说,若低7位为信息位,最高位位检误位,码组1011011的奇校验码为01011011,而偶校验码为11011011。厦礴恳蹒骈時盡继價骚。
在代码传送过程中,对所收到的码组中“1”码的个数进行计算,如“1”码的个数与预定的不同,则可判断已经产生了误码。茕桢广鳓鯡选块网羈泪。
(6)机器数的编码及运算
对带符号数而言,有原码、反码、补码之分,计算机内一般使用补码。
1) 原码
将数“数码化”,原数前“+”用0表示,原数前“-”用1表示,数值部分为该数本身,这样的机器数叫原码。
设X——原数;则[X]原 = X(X 0)
[X]原 = 2n-1 – X (X 0),n为字长的位数。
如,[+3]原 = 00000011B [-3]原 = 27 - (-3) = 1000,0011B
0有两种表示方法:00000000 +0 , 10000000 -0
原码最大、最小的表示:+127、-128鹅娅尽損鹌惨歷茏鴛賴。
2)反码
规定正数的反码等于原码;负数的反码是将原码的数值位各位取反。
[X]反 = X (X 0)
[X]反 =(2n –1)+ X (X 0)
如:[+4]反 = [+4]原 = 0000,0100 B
[-4]反 = 1111,1011 B
反码范围:-128 ~ +127
两个0; +0 —— 00000000 B , -0 —— 11111111 B
3) 补码
补码的概念:现在是下午3点,手表停在12点,可正拨3点,也可倒拨9点。即是说-9的操作可用+3来实现,在12点里:3、-9互为补码。
运用补码可使减法变成加法。
规定:正数的补码等于原码。
负数的补码求法:1)反码 + 1
2)公式:[X]补 = 2n + X (X<0)
如:设X = - 0101110 B , 则[X]原 = 10101110 B
则[X]补 = [X]反 + 1 = 11010001 + 00000001 = 11010010 B
如:[+6]补 = [+6]原 = 00000110 B
[-6]补 = 28 + (-6) = 10000000 – 00000110 = 11111010 B籟丛妈羥为贍偾蛏练淨。
位补码的范围 –128 ~ +127。
0 的个数:只一个,即00000000
而10000000 B是-128的补码。
原码、反码、补码对照表:表1-2 P10 預頌圣鉉儐歲龈讶骅籴。
4)补码的运算
当X≥0时,[X]补= [X]反=[X]原
[ [X]补]补 = [X]原
[X]补+ [Y]补 = [ X+Y ]补
[ X-Y ]补= [ X+(-Y)]补
例:已知 X=52 Y=38 求X-Y渗釤呛俨匀谔鱉调硯錦。
计算机在做算术运算时,必需检查溢出,以防止发生错误
5)运算的溢出问题
资料字长(位数)有一定限制,所以资料的表示应有一个范围。
如字长8位时; 补码范围-128~+127
若运算结果超出这个范围,便溢出。铙誅卧泻噦圣骋贶頂廡。
错:两个负数相加和为正数。
可见:结果正确(无溢出)时,Cs+1 = Cs
结果错误(溢出)时,Cs+1 ≠ Cs
溢出判断:溢出 = Cs+1 Cs(即结果是0为无溢出;1为有溢出)擁締凤袜备訊顎轮烂蔷。
(7)BCD码
BCD码是Binary Coded Decimal Numbers(二进制编码的十进制数)的缩写。BCD码用四位二进制数的组合来表示1位十进制数。贓熱俣阃歲匱阊邺镓騷。
例如:十进制数23对应的BCD码为16#23,或2#00100011,
BCD码常用于输入输出设备,例如拨码开关输入的是BCD码,送给七段显示器的数字也是BCD码。
表2 BCD码和十进制数
十进制数
BCD码
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
BCD码的运算:
1) BCD码加法规则
两个BCD数相加时,“某位”的和小于10则保持不变;
两个BCD数相加时,“某位”的和大于9,则和数应加6修正。坛摶乡囂忏蒌鍥铃氈淚。
2)BCD码减法规则
两个BCD数相减时,“某位”的差未发生借位,则差数保持不变;
两个BCD数相减时,“某位”发生了借位,其差应减6修正。
这里“某位”指BCD数中的“个位”、“十位”、“百位”、……蜡變黲癟報伥铉锚鈰赘。
(9)负数的表示方法
PLC一般采用二进制补码来表示有符号数,其最高位为符号位,最高位为0时为正数,最高位为1时为负数,最大的16位正数为16#7FFF(即32767)。正数的补码是它的本身,将正数的补码逐位取反(0变为1,1变为0)后加1,得到绝对值与它相同的负数的补码。将负数的补码的各位取反后加1,得到它的绝对值。買鲷鴯譖昙膚遙闫撷凄。
例如:十进制正整数35对应的二进制补码为2#00100011,十进制数-35对应的二进制补码为2#11011101。不同数据的取值范围如下表。綾镝鯛駕櫬鹕踪韦辚糴。
数据的位数与取值范围
数据的位数
无符号整数
有符号整数
十进制
十六进制
十进制
十六进制
B(字节),8位值
0~255
0~FF
-128~127
80~7F
W(字)16位值
0~65535
0~FFFF
-32768~32767
8000~7FFF
D(双字)32位值
0~4294967295
0~FFFFFFFF
-2147483648~2147483647
8000000~7FFFFFFF
(10)用1位二进制数表示开关量
二进制数的1位(bit)只有0和1两种不同的取值,可以用来表示开关量的两种不同的状态。如果该位为1,梯形图中对应的元件的线圈“通电”,其常开触点接通,其常闭触点闭合。如果该位为0,则编程元件的线圈和触点的状态与上述相反。驅踬髏彦浃绥譎饴憂锦。
(11)位
S7-200 的位存储单元的地址由字节和位地址组成,例如:I 3.2,其中的区域标识符“I”表示输入(Input),字节地址为3,位地址为2。这种存取方式称为“字节。位”寻址方式。猫虿驢绘燈鮒诛髅貺庑。
(12)字节
8位二进制组成一个字节(Byte)。其中的第0位为最低有效位(LSB),第7位为最高有效位(MSB)。输入字节IB3(B是Byte的缩写)是由I3.0,I3.1,I3.2,I3.3,I3.4,I3.5,I3.6,I3.7 这8位组成。锹籁饗迳琐筆襖鸥娅薔。
VB100
MSB LSB構氽頑黉碩饨荠龈话骛。
V100.7
V100.6
V100.5
V100.4
V100.3
V100.2
V100.1
V100.0
(13)字
相邻的两个字节组成一个字,VW100是由VB100和VB101组成的一个字,V为区域标识符,W表示字(Word),100为起始字节的地址。注意:VB100是高位字节。輒峄陽檉簖疖網儂號泶。
VW100
MSB LSB
15 0
V100.7----V100.0
V101.7---V101.0
(14)双字
相邻的4个字节组成一个双字,VD100是由VB100---VB103组成的双字,V为区域标识符,D表示双字(Double Word), 100为起始字节的地址。注意:VB100是高位字节。尧侧閆繭絳闕绚勵蜆贅。
VD100
MSB LSB
31 0
VB100
VB101
VB102
VB103
2. CPU存储区
(1) 输入过程映像寄存器(I)
输入过程映像寄存器是PLC接收外部输入的数字量信号的窗口。PLC通过光电偶合器,将外部信号的状态读入并存储在输入过程映象寄存器中,外部输入电路接通时对应的映像寄存器为ON(1状态),反之为OFF(0状态)。输入端可以外接常开触点或常闭触点,也可以接多个组成的串、并联电路。在梯形图中,可以多次使用输入位的常开触点和常闭触点。识饒鎂錕缢灩筧嚌俨淒。
(2) 输出过程映像寄存器(Q)
在扫描周期尾部,CPU将输出过程映像寄存器的数据传送给输出模块,再由后者驱动外部负载。在梯形图中,每一个输出位的常开触点和常闭触点都可以多次使用。凍鈹鋨劳臘锴痫婦胫籴。
(3) 变量存储区(V)
变量(Variable)存储器用来在程序执行过程中存放中间结果,或者用来保存与工序或任务有关的数据。
(4) 位存储区(M)
位存储器类似于继电器控制系统中的中间继电器,用来存储中间控制状态或其它控制信息。虽然名为“位存储区”,但是也可以按字节、字或双字来存取。恥諤銪灭萦欢煬鞏鹜錦。
有些编程人员习惯于用M区来作为中间地址,但是S7-200 的M区只有32个字节。如果不够用可以用V存储区来代替M存储区。可以按位、字节、字、双字来存储V区数据。如:V10.1,VB20,VW100,VD200等鯊腎鑰诎褳鉀沩懼統庫。
(5) 定时器存储区(T)
定时器相当于继电器控制系统中的中间继电器。S7-200 有3种定时器,他们的时间基准分别为1ms,10ms,100ms。定时器的当前值是16位有符号整数,用于存储定时器累计的时间基准量值(1-32767)。硕癘鄴颃诌攆檸攜驤蔹。
(6) 计数器存储区(C)
计数器用来累计其计数输入脉冲电平由低到高的次数。CPU提供加计数器、减计数器、加减计数器。计数器的当前值为16位有符号整数,用来存放累计的脉冲数(1-32767)。当计数器的当前值大于或等于设定值时,计数器被置为1。用计数器地址(例如C20)来存取当前值和计数器位。带位操作数的指令存取计数器位,带字操作数的指令存取当前值。阌擻輳嬪諫迁择楨秘騖。
(7) 高速计数器(HC)
高速计数器用来累计比CPU的扫描速率更快的事件,计数过程与扫描周期无关。其当前值与设定值为32位有符号整数,当前值为只读数据。(HC2)氬嚕躑竄贸恳彈瀘颔澩。
(8) 累加器(AC)
累加器是可以像存储器那样使用的读/写单元,例如可以用他来向子程序来传递参数,或从子程序返回参数,以及用来存放计算的中间值。CPU 提供4个32位的累加器(AC0、AC1、AC2、AC3),可以按字节、字、双字来存取累加器中的数据。按字节、字只能存取累加器中的低8位或低16位,按双字存取全部的32位,存取的长度由所用的指令决定。釷鹆資贏車贖孙滅獅赘。
例如在指令“MOVW AC2,VW100”中,AC2按字(W)存取。
(9) 特殊存储器(SM)
特殊存储器用于CPU与用户之间的交换信息,例如:SM0.0一直为1状态。
(10) 局部存储器(L)
S7-200 有64个字节的局部(Local)存储器,其中60个可以作为暂时存储器,或者给子程序传递参数。如果用梯形图编程,编程软件保留局部存储器的后4个字节。如果用语句表编程,可以使用所有的64个字节。怂阐譜鯪迳導嘯畫長凉。
主程序、子程序、中断程序简称为POU(Program Organizational Uint,程序组织单元),个POU都有自己的局部变量表,局部变量只在它被创建的POU中有效。谚辞調担鈧谄动禪泻類。
(11) 模拟量输入(AI)
S7-200将连续变化的模拟量用A/D转换成一个字长为(16位)的数字量。用区域表示符AI、和表示长度的W和起始字节的地址来表示模拟量输入的地址。因为模拟量输入是一个字长,应从偶数字节地址开始存放。例如:AIW2,AIW4等等,模拟量输入只为只读数据。嘰觐詿缧铴嗫偽純铪锩。
(12) 模拟量输出(AQ)
S7-200将一个字长的数字用D/A转换成连续变化的模拟量,用区域标示符AQ、表示数据长度的W和字节起始地址来表示存储模拟量输出的地址。因为模拟量输出是一个字长,应从偶数字节开始存放。例如:AQW2、AQW4等等。模拟量输出值是只写数据,用户不能读取模拟量数值。熒绐譏钲鏌觶鷹緇機库。
(13) 顺序控制继电器(S)
顺序控制继电器(SCR)用于组织设备的顺序操作,与顺序控制继电器指令配合使用。
(14) 常数的表示方法和范围
常数值可以是字节、字、双字,CPU以二进制方式存储常数,常数也可以用十进制、十六进制、ASCII码或浮点数形式来表示。鶼渍螻偉阅劍鲰腎邏蘞。
表3 常数表示方式
常数
举例
十进制常数
20047
十六进制常数
16#4E4F
ASCII码常数
‘Text’
实数或浮点数格式
23.5 -1.175E-20
二进制格式
2#10110101
(15) 实数
实数(REAL)又称浮点数,可以表示为,其中尾数M和指数E均为二进制数,E可能是正数,也可能为负数。
标准格式的32位实数可以表示为浮点数,式中指数e=E+127(1《e〈〈254)为8位正整数。
实数最高位(第31位)为符号数,最高位为0时为整数,为1时为负数。因为规定为数的整数部分总是为1,只保留了尾数的小数部分m(0~22位)。纣忧蔣氳頑莶驅藥悯骛。
浮点数的表示范围是。
(16) 字符串的格式
ASCII(美国信息交换标准码)是一种字符编码格式,用一个字节中不同的二进制值代表不同的字符。例如字母“A”的ASCII值为十六进制数41H,数字5的ASCII值是35H。颖刍莖蛺饽亿顿裊赔泷。
字符串由若干个ASCII码字符组成,每个字符占一个字节。字符串的第一个字节定义了字符串的长度(0-254),即字符的个数。一个字符串的最大长度是255,一个字符串常量的最大长度是128字节。濫驂膽閉驟羥闈詔寢賻。
字符串也能包括汉字编码,每个汉字的编码占两个字节。
3. CPU存储器的范围与特性
表:S7-200 CPU存储器的范围与特性
描述
CPU221
CPU222
CPU224
CPU224XP
CPU226
输入映像寄存器
I0.0~I15.7
输出映像寄存器
Q0.0~Q15.7
模拟量输入(只读)
AIW0~AIW30
AIW0~AIW62
模拟量输出(只写)
AQW0~AQW30
AQW0~AQW62
变量存储器(V)
VB0~VB2047
VB0~VB8191
VB0~VB10239
局部变量存储器(L)
LB0~LB63
位存储器(M)
M0.0~M31.7
特殊存储器(SM)
SM0.0~SM179.7
SM0.0~SM299.7
SM0.0~SM549.7
特殊存储器(只读)
SM0.0~SM29.7
SM0.0~SM29.7
SM0.0 SM0.0~SM29.7
定时器(T)
T0 ~T255
计数器(C)
C0~C255
高速计数器(HC)
HC0~HC5
顺序控制继电器
S0.0~S31.7
累加寄存器
AC0~AC3
跳转/标号
0~255
调用/子程序
0~63
0~127
中断子程序
0~127
正负跳变
256
PID回路
0~7
串行通信口
端口0
端口0,1
表 3 S7-200 操作数范围
寻址方式
CPU221
CPU222
CPU224
CPU224XP
CPU226
位存取
I0.0~I15.7 Q0.0~Q15.7 M0.0~M31.7
S0.0~S31.7 T0~T255 C0~C255 L0.0~L63.7
V0.0~V2047.7
V0.0~V8191.7
V0.0~V10239.7
SM0.0~SM165.7
SM0.0~SM299.7
SM0.0~SM549.7
字节存取
IB0~IB15 QB0~QB15 MB0~MB32
SB0~SB31 LB0~LB63 AC0~AC3
SMB0~165
SMB0~299
SMB0~549
字存取
IW0~IW14 QW0~QW14 MW0~MW30
SW0~SW30 T0~255 C0~255
LW0~LW62 AC0~AC3
VW0~2046
VW0~8190
VW0~10238
SMW0~164
SMW0~298
SMW0~548
AIW0~30
AQW0~30
AIW0~62
AQW0~62
双字存取
ID0~12 QD0~12 MD0~28
SD0~28 LD0~60 AC0~3 HC0~5
VD0~2044
VD0~8188
VD0~10236
SMD0~162
SMD0~296
SMD0~546
展开阅读全文