三菱plc数制转换及位、字数据的相互表示
数据格式的转换和显示在plc的使用中非常重要。
在plc中数据的表示有二进制、8进制、10进制、16进制、BCD码、ASCII码的新式,三菱的fx3系列为16位的,意思就是一个数据寄存器最多能储存16位的数据,如果想表示32位的,则需要使用连续两个数据寄存器来完成,这里的位数是2进制的位数并且十进制的,新手或不清楚计算机的工控人员在理解数据这块一定要明白处理器说的位数都是指二级制的,包括运算都是以二级制的形式进行的,理解二进制很重要。
二进制数据
在平常使用中我们输入或监控数据采用十进制例如对plc进行监控所看到的数据无论以什么样的格式我们看到的都是十进制的数据,这块我们一定要注意,在做一些通讯的时候我们的命令或接受来的数据是16进制或ASCII码,而这些数据在plc监控时就是10进制,与我们想要看到命令码或返回值不一样。
对于新手来说,数据这快需要下点功夫尤其对于没有计算机基础的电工人员。
plc能储存数据的元件,如字元件数据寄存器D当然是,另外还可以通过位元件(M、Y)的组合来表示,这在plc程序中经常见到,如K4M10,K2Y0等,下面我们通过在人机界面进行数值转换。
人机界面数制转换
对16位数据和32位数据进行2进制、16进制、10进制的转换,MOV指令将字元件的数值用位元件组合的形式来表达,MOV D0 K1M0,K1表示4连续位将数据D0(16进制)中的低四位的状态传输到M0~M3中,K2就是连续8位,同时通过这样可以很好的理解数据D的存储构造。
上面一排的M15代表符号位,正数是0,负数是1,所以16的数据范围是-2^15~+2^15即-32768~+32768,同理32位的数据范围:-2147483648~+2147483648。
我们随意输入一个数25149:
MOV D0 K1M0
MOV D0 K2M0
MOV D0 K3M0
MOV D0 K4M0
我们从上图发现,数据寄存器的二进制与位状态显示一致,就是说将D用KnM组成表示,二进制的1就代表M的通,在plc内部的数据寄存器也同样采用这种构造来存储数据。接下来我们看下负数的区别,我们显示-1和+1看下:
-1的显示
+1的显示
+1的显示所有进制都是1好理解,为什么-1是1111111111111111,或者FFFF呢,而不是我们想的1000000000000001?请大家评论留言!
视频加载中...
西门子数据格式以及寻址,实例讲解清晰易懂,PLC编程必修课
PLC在应用时需要处理各种各样的数据,因此为了应付这些数据,它的存储单元就需要有多种格式,今天带大家了解一下,西门子1200PLC的数据格式.
西门子S7-1200 CPU中可以按照位、字节、字和双字,对存储单元进行寻址。二进制数的一位只有0或1两种不同的取值,可以用来表示数字量或称开关量的两种不同的状态,如触点的断开和接通线圈的通电和断电等。
八位二进制数组成一个字节,其中的第0位为最低位,第七位为最高位。
两个字节组成一个字,其中的第0位为最低位,第15位为最高位。
两个字组成一个双字,其中的第0位为最低位,第31位为最高位。
西门子S7-1200 CPU,不同的存储单元都是以字节为单位, 如图所示:
对位数据的寻址由字节地址和位地址组成,如I3.2,其中的区域标识符I表示输入映像区,字节地址为3,位地址为2,这种存取方式称为字节位寻址方式。
对字节的寻址,如MB2,其中的区域标识符M表示为存储区,2表示寻址单元的起始字节地址,B表示寻址长度为一个字节,即寻址为存储区中的第二个字节。
对字的寻址,如MW2,其中的区域标识符M表示为存储区,2表示寻址单元的起始字节地址,W表示寻址长度为一个字,即两个字节,寻址为存储区中从第二个字节开始的一个字,即字节2和字节3。请注意,两个字节组成一个字,遵循的是低地址、高字节的原则。以MW2为例,MB2为MW2的高字节,MB3为MW2的低字节。
对双字的寻址,如MD0,其中的区域标识符M表示为存储区,0表示寻址单元的起始字节地址,D表示寻址长度为一个双字,即两个字四个字节,寻址为存储区中从第0个字节开始的一个双字,即字节0、字节1、字节2和字节3。
寻址方式详解
分类:寻址方式从大的方面可以分成直接寻址和间接寻址。
直接寻址就像甲要和乙说话直接叫乙的名字就可以了,甲直接和乙建立联。
间接寻址就像甲要和乙说话,而乙在另外一个城市,甲就写了一封信通过邮递员送给乙,甲通过邮递员间接和乙建立联系,这就叫间接寻址。间接寻址中指针就充当了邮递员的角色。
直接寻址分为:绝对地址寻址,符号寻址
间接寻址分为:存储器间接寻址,寄存器间接寻址。
一、直接寻址
直接寻址是最简单的寻址方法,也是编程中最常用的寻址方式。
①绝对地址寻址
绝对地址寻址就是直接调用要使用的地址
示例:
I0.0 Q1.0 MW0
②符号寻址
符号寻址就是通过符号表中的绝对地址的命名进行寻址
二、间接寻址★★★★★
间接寻址是比较复杂的寻址方式,也是我们这里重点讲解的地方,间接寻址需重点理解指针的概念。
★指针:理解指针主要需要理解指针的两个特性。
A.存储性:存储性指的是指针也是一段存储空间,它的存储内容是地址。
B.指向性:因为指针存放的内容是地址,那么指针中存放的是哪一个地址,我们就说指针指向了这个地址所对应的存储空间,这就是指针的指向性。
A.存储器间接寻址
【A1】16位指针寻址:
1)16位指针存储空间
16位指针存储空间是16位,2个字节,通过这2个字节的空间来存放变量的地址。
2)16位指针寻址范围
16位指针只能对计时器(T),计数器(C),数据块(DB,DI)的号,程序块(FB,FC)的号进行寻址,也就是这2个字节的存储空间中只能存放计时器的编号,计数器的编号,数据块的编号,程序块的编号。
3)16位指针寻址表示格式
16位指针寻址表示格式为:区域标示符[16位地址指针]
示例:
DB [MW0] //表示对DB块进行寻址,MW0中如果存储的是1,那么该寻址结果为DB1,也就是通过该指令找到了DB1数据块。
T [MW2] //表示对计时器进行寻址,MW2中如果存放的是2,那么该寻址结果为T2,也就是通过该指令找到了计时器T2。
4)16位指针寻址程序示例
例1:
L 2 //将2进行装载
T MW 0 //将2传送到MW0
A I 0.0 //如果I0.0 = True
L S5T#10S //装载时间
SD T [MW0] //T开始计时
例2:
L 1 //将1进行装载
T MW 0 //将1传送到MW0
OPN DB [MW 0] //打开DB1
L 10 //将10进行装载
T DBW 0 //将10传送到DB1.DBW0中
L DBW 0 //将DB1.DBW0进行装载
T MW 2 //将DB1.DBW0传送到MW2中
【A2】32位指针寻址
1)32位指针存储空间
32位指针存储空间是32位,4个字节,通过这4个字节的空间来存放变量的地址。
2) 32位指针寻址范围
32位指针能对I、Q、M、L、数据块的位、字节、字、双字进行寻址,也就是这4个字节的存储空间中能对上述存储类型中的位、字节、字、双字的地址进行存储。
3)32位指针存储格式
4)32位指针寻址表示格式
32位指针寻址表示格式为:地址存储器标示符[32位地址指针]
示例:
I[MD0] //I表示输入存储区,MD0存储地址信息。
Q[MD4] //Q表示输出存储区,MD4存储地址信息。
5)32位指针三种寻址方法
①直接输入10进制数寻址(最复杂最不直观的寻址方式,不推荐使用)。
②将输入的10进制数左移3位进行寻址(比较直观的寻址方式)。
③利用 P#字节.位 格式进行寻址(最直观最方便的寻址方式,推荐使用)。
6)32位指针三种寻址方法举例
★例1 :直接输入10进制数寻址
该程序实现的是两个数相加的功能。
这里我们要重点理解为什么第六句将10传送到了MW4中,而不是MW32中,为什么第八句将15传送到了MW6中,而不是MW48中。
这是因为32,和48存放到指针中是按照32位二进制数进行存放的,下面我们通过将48存放到MD24来进行举例说明
由上图可知将48放进MD24则MW[MD24]指向了MW6
例2:左移3为进行寻址
由于将10进制数对应的2进制数左移三位后,字节存储区的二进制数和该10进制数对应的2进制数又相同了,而位存储区变为0,所以这样的寻址要比例1的寻址方式显得更为直观,便于使用和理解。
例3:以 P#字节.位 格式进行寻址
通过这个实例我们可以发现直接使用P#字节.位的寻址方式是最直观方便的。
B.寄存器间接寻址
寄存器间接寻址使用的是CPU的地址寄存器AR1和AR2
B1)寻址格式
区域标示符[AR1/AR2,P#X]
注:
①AR1/AR2表示地址寄存器AR1或者AR2,地址寄存器中只能存放地址。
②P#X表示偏移量X是偏移具体数值。
B2)寄存器间接寻址示例
相关问答
plc怎样把16进制换成32位?
采用数据类型转换,比如前面的数是16位的整数后面是32的实数,可以使用转换块,INTTOREAL,输入连接的是整数,输出连接的是实数。在UnityProXL里面是这么...
plc中32位加法指令是?
数据顺序错啦应该是D2D1,D6D5D4D3,寄存器编号小的是低位,大的是高位!指令前面加了D,就表示执行32位指令,相应的操作数自动变成32位格式,比如DMOVK100...
三菱plc如何运用32位指令?
寄存器都是是16位的,32位数据寄存器是两个连续的寄存器组成的。如果使用DDRVID1D1Y0Y3,程序将自动将D1D2作为32位数据寄存器使用。不过注意:你编的这条指令,...
编程中16位和32位是指的什么意思?
十六位是表示16位2进制,因为plc本身为机器,只懂开和断,就对应着2进制的1,0通过多位二进制便可让机器(比如plc)具有计算功能,比如4位2进制数0110它的十进制...
信捷plc32位寄存器怎么写?
在触发寄存器的指令前加d.如mov是16位,dmov就是32位在触发寄存器的指令前加d.如mov是16位,dmov就是32位
plc16位和32位范围?
PLC中的位是指存储器中数据的占位或者叫数据占的存数空间,数据的长度是指可以表示的数据复杂程度的最大存储范围。用户说的16位和32位,是指二进制数据占的最...
三菱PLC中,16位和32位数据的区别?-懂得
三菱plc中的MOV主要用于16位数据,DMOV主要用于32位数据。MOV是单字节的16位数据,范围是-32765到32767,如果超过这个范围,这个数超过16位(2进制意义...
plc用两个16位存储32数据,怎样算?
你是问怎么存储吧,以西门子为例,16位为一字,32位为双字,存储规则就是低字在高位,高字在低位。比如MD400是32位的双字,包括MW400和MW401,也可分为MB400、M...
十六位运算是什么意思,PLC里面讲十六位,三十二位运算,我不知道是什么意思,能讲讲吗?
这和PLC的寄存器容量有关系。一般一个寄存器的容量就是16位的,32位就用两个寄存器。计算机里面都是用的2进制,所以一个16位的寄存器最多也只能存储的最大十进...
plc32位用什么字母表示?
PLC中的位是指存储器中数据的占位或者叫数据占的存数空间,数据的长度是指可以表示的数据复杂程度的最大存储范围。用户说的16位和32位,是指二进制数据占的最...