西门子PLC编程:通讯报文的大端格式和小端格式

报文包含若干信号,信号的格式(Byte order)可以是两种之一: Motorola或者Intel。他们是指Motorola和Intel处理器中使用的数据的储存格式,也就是两种字节序,Motorola是大端字节序,Intel是小端字节序。 

大端模式:是指对于多字节数据的MSB(最高有效字节)保存在内存的低地址中,而数据的LSB(最低有效字节)保存在内存的高地址中。

小端模式:是指对于多字节数据的MSB(最高有效字节)保存在内存的高地址中,而数据的LSB(最低有效字节)保存在内存的低地址中。

 例如一个值为0x7788的16bit的WORD型变量x, 存放在0x0010开始存储器地址中。对于大端模式,就是将0x77放在低地址中,即0x0010中,0x88放在高地址中,即0x0011中。小端格式,刚好相反。 

//CONVERT AND COPY CONTROL WORD TO BUFFER
//The SINAMICS and the SIMATIC uses different Byte orders (Endianness)
//The SINAMICS use Intel format or Little-Endian while the SIMATIC uses Motorola format or Big-Endian.
//The control and status words we change the high AND low bytes
//大端左移位(ROL)改为小端
  #tempOutDataWord[1] := ROL(IN := #statControlWord, N := 8);

西门子S7-300S7-400 S7-1200/1500 是大端序(Big-Endian)S7-1200/1500 标准块为大端序,优化的块为小端序(Little-Endian)

 

 “西门子352报文”在SIMATICS G120控制单元中使用的是Intel小端序,而在PLC SIMATIC S7-1500中标准数据块(非优化块)使用的是大端序。这时,大端控制报文需要使用ROL命令转换成小端控制报文(ROR命令亦可)。“西门子352”控制报文示例如下(报文格式详见第54节“变频器的 PROFIBUS DP 通讯”中的报文格式):

 

 G120控制单元和S7-1500 PLC报文中的速度、电流、扭矩等不需要大小端转换。以转速为例:

//CONVERT SETPOINT VALUE AND COPY TO BUFFER
//The speed value is transferred as scaled value.
//The reference speed for the scaling is stored in P2000 in a SINAMICS G120, which is about 1482rpm. 
//The scaling is: 100%(of P2000)=4000hex=16384dez 
#actualSpeed:=1482*(INT_TO_REAL(WORD_TO_INT(#tempInDataWord[2]))/ 16384.0);
#tempOutDataWord[2]:=INT_TO_WORD(REAL_TO_INT(#speedSetpoint/1482*16384.0);

 

 

 

 

这里G120变频器返回的速度、电流和扭矩:#tempInDataWord[2]#tempInDataWord[3]#tempInDataWord[4]Word类型,大端格式,高字节在低位存储,低字节在高位存储。设置数据类型也可以为INT,PLC直接读取。如果返回值是16384,即0x4000,则:

tempInDataWord[2] 存储区: 0x00(高位),0x40(低位)

如下图所示,TempwordByte[0](16#00)和TempwordByte[1] (16#ff)分别为TempWord的低存储位和高存储位,从WORD转换为INT,无论是直接赋值还是使用WORD_TO_INT命令,都是高低存储位互换后转换成整数,即:高字节为16#00,低字节为16#ff。给WORD变量赋值时(16#ff00,16#ff是高字节,16#00是低字节),16#ff存储在低位,16#00存储在高位。在WORD和INT的书写时,高字节在前,低字节在后,但是在存储时,高字节在后(低存储位),低字节在前(高存储位)。!!高低字节顺序在存储或读取过程中发生转换!!

 

上述示例中是优化的DB数据块,是小端序,而程序所在的OB1块是非优化块,所有的变量都是大端序。

博图编程中获取变量bit位的方法:#<variable>.%X0 bit=0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值