PLC的高低字节转换
PLC的寄存器分为单字(Word)和双字(Dword),Word占用2个字节Byte,Dword占用4个字节Byte;
在PLC和其他设备通讯往往以字节为单位进行传送的,根据不同的通讯协议,传送所发的内容不一致,其中有些协议需要进行前后字节交换,向常见的PLC,三菱,汇川等日系PLC有专门的指令SWAP来进行转换;例如寄存器 A:=16#AABB,经过SWAP指令后,A=16#BBAA
Codesys编程和传统的PLC编程不一样,Codesys编程是属于一种面向对象的编程方式,使用起来比较具有灵活性,可以根据自己的编程习惯风格来进行编程程序;下面举例如何使用Codesys来进行编写SWAP指令;
代码如下:
---------------------------------------变量声明区--------------------------------------------------------------------------
PROGRAM PLC_PRG//程序名字
VAR
//
IN :WORD;//IN是变量名称, WORD是变量变量类型
OUT :WORD;
END_VAR
---------------------------------------程序执行区-------------------------------------------------------------
OUT :=IN/256+(IN MOD 256)*256;
(*
16位数据除以256,即将16位数据的高低8位自动分开。
例如原数值是;2#1111111100000000,转换成10进制就是 65280,转换出16进制就是FF00.
将该数值除以256和取余256,结果分别是 数值的高8位(整数),和数值的低8位(余数)
再将余数乘以256+整数得出的新数据就是高低字节转换后的数值;
*)
需要学习PLC(三菱,西门子,汇川,禾川,信捷,台达,松下,欧姆龙,Codesys)可以在评论区留言;
西门子PLC的数据类型及数据转换
1. 数据类型
在PLC项目编程中,离不开数据类型和变量,搞清楚数据类型和数据类型的转换很重要。
常用的数据类型包括以下几种:
位(bit),字节(Byte),字(Word),双字(Double Word),整型数(INT),双整型书(DINT),及实数/浮点数(Real)
1.1 位(bit)
常称作布尔量BOOL,在高级语言中,会说布尔变量,布尔控件等。
取值:0 ,1
寻址:I0.0 M0.0 Q0.0 等。
应用:在DI,DO梯形图编程中,会大量用到I点,M点,Q点。
1.2 字节(Byte)
8个bit组成一个Byte,其中0位表示最低位,7位表示最高位。如MB0(包括M0.0-M0.7位),IB0(包括I0.0-I0.7位),QB0(包括Q0.0-Q0.7位)。
寻址:MB0,IB0,QB0,VB0等。
范围:00-FF(十进制0-255)
应用:MB0赋值为1(0000 0001)即M0.0赋值为真,其余M0.1-M0.7为假。
MB2赋值为1(0000 0010)即M0.1赋值为真,其余为假。
MB3赋值为1(0000 0011)即M0.1和M0.0赋值为真,其余为假。
······
1.3 字(Word)
相邻的两个字节(Byte)组成一个字(Word),来表示一个无符号数。一个Word包括16bit。
寻址:MW0,IW0,QW0,VW0等。
范围:0000-FFFF(十进制0-65536)
应用:在模拟量的处理采集中会大量涉及到Word的应用。要注意数据的转换,在后面一块说。
······
注意:相邻两个字要慎用,如MW0(MB0+MB1),MW1(MB1+MB2),所以用了MW0,再用就从MW2,MW4这么用。
1.4 双字(Double Word)
相邻的两个字(Word)组成一个字(DWord),来表示一个无符号数。一个双字包括32bit。如MD0由MW0(MB0,MB1),MW2(MB2,MB3)组成。
寻址:MD0,ID0,QD0,VD0等。
范围:0000 0000-FFFF FFFF(十进制0-4294967295)
应用:在模拟量的处理采集中会大量涉及到DWord的应用。要注意数据的转换,在后面一块说。
······
注意:相邻两个字要慎用,如MD0(MW0+MW1),MD2(MW2+MW3),所以用了MD0,再用就从MD2,MD4这么用。
1.5 16位整形(INT,Integer)
整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768-32767.
寻址:MW0,IW0,QW0,VW0,DB1.DBW0等。
范围:-32768-32767
应用:IW0包括IB0和IB1,IB0为高字节,IB1为低字节;
注意:16位整形数和Word的寻址地址是一样的,这里就看把这个寻址地址定义为什么数据类型了。
注意2:注意区分寻址地址和数据类型,这里讨论的是数据类型。可以把一个寻址地址(DB1.DBW0)里的数定义为无符号数(Word)或(INT)
1.6 32位整形(INT,Integer)
一个32位整数里包括两个字或者说4个字节共32位(bit0-bit31),最高位的bit31表示符号位,bit31=1表示为负数。
寻址:MD0,ID0,QD0,VD0,DB0.DBD0等。
范围:-2147483648-2147483647
注意:32位整形数和DWord的寻址方式是一样的,这里就看把这个寻址地址定义为什么数据类型了。
注意2:注意区分寻址地址和数据类型,这里讨论的是数据类型。可以把一个寻址地址(DB1.DBD0)里的数定义为无符号数(DWord)或(DINT)
1.7 实数/浮点数(Real)
浮点数为32为,可以用小数来表示。
寻址:MD0,ID0,QD0,VD0,DB0.DBD0等。
范围:±1.75495×10 -38-±1.75495×10 38
2. 位、字节、字、双字关系表
3. 应用举例
在PLC模拟量的采集和输出中,经常会用到数据类型转换和线性转换,这里只简单说一下,具体应用在下一篇中介绍。
在模拟量的采集中,采集到的数据类型为16位整型,要想把它转换为物理量,就需要线性转换,线性转换就涉及到加减乘除,就需要把整形转换为实数型。
在S71200,1500中,模拟量的寻址:如%IW9。
在1200中,INT数据类型直接可以转换为Real类型
在S7300,200中,模拟量寻址:PIW0。
在300和200PLC中不允许INT直接转换为Real,先要把INT转化为DINT,然后把DINT转换为REAL。
相关问答
plc为什么要传送数据字节?
PLC(可编程逻辑控制器)需要传送数据字节是为了实现控制和通信功能。以下是其中几个原因:1.数据交换:PLC通常需要与其他设备(如传感器、执行器、人机界面等...
plc的位和节什么意思?
在PLC(可编程逻辑控制器)中,位(bit)和节(byte)是计量存储容量的单位。下面我将详细解释一下它们的含义和用途。1.位(bit):位是计算机中最小的存储单...通过...
plc字节和位是干什么用的?
PLC中的字节和位是用于在控制器中存储和操作数据的单元。1.字节(byte):它通常是8位二进制数字的一个单元,可以存储从0到255之间的数据值。在PLC中,它被用...
为什么三菱plc高低字节互换?
三菱PLC高低字节互换是因为它使用的是大端模式(BigEndian)的数据格式,即高位字节在前,低位字节在后。这种数据格式在数据传输和处理中比较常见,但有些机器...
在西门子PLC编程中,什么时候用字节,什么时候用字,什么时候用双字?难道就不能用一种,如字节?
按照数据长度选用。8位数据用字节,比如IB0(包括I0.0~I0.7共8个位).16位数据用字,比如IW0(包括IB0、IB1共16位)32位数据用双字,比如MD100(包括MW100、MW10...
PLC为什么要用字或双字?
PLC中位只有两个值,0或1,比如I0.1,Q0.1,M0.1。一个字节等于8位,其中0位为最低位,7位为最高位。比如IB0(I0.0~I0.7位),QB0(Q0.0~Q0.7位),MB0(M0.0...
在plc编程中byte转换成real的原理是什么
你想要一个16进制数形式的字符串还是把每个16进制数转成它代表的ascii字符?你的源数据是个byte[]?第一种就没什么可说的了,直接调每个byte的ToStri...
西门子字节表示方法?
西门子是一种S7系列PLC控制器所使用的编程语言,其字节表示方法是以大端字节序(BigEndian)为主。在大端字节序中,高位字节存储在低地址中,而低位字节存...
BYTE在PLC中是什么意思?
在PLC中,位,就是用0、1代码表示bool量,即是bit字节是8个bit,即是byte。字就是2个字节。双字就是2个字。这些都是为了在设备中存储区使用方便,做的一些规定。...
PLC编程里的十进制什么意思?
在PLC编程中,十进制(Decimal)是一种数字表示方式,它使用10个基本数字(0-9)和位置权重(10的幂)来表示数值。与二进制、八进制和十六进制等其他数字系统相...在...