威纶通触摸屏读写s7-300的浮点数
威纶通读取 DB块方法
触摸屏读取s7-300的浮点数--液位值:,用DBDn读取s7-300的DBD,地址格式分
为两部分DB块号(前三位,范围是0~255)和DBD号(后四位,范围是0~8192)。
在显示浮点数时,设备类型必须设定为:Dn,地址格式是FFFDDDD(FFF:设定块的地址;DDDD:设定块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB块10中的第2个字 DB10_0002 DBDn 100002(2+4)。
S7-300PLC组态 DBDn 010122是指DB块1中的第122个字
DB位的表示方法:
如
在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如威纶通里面选择DBDn,后面写入 20003.
同理,字节地址一样。
威纶通读取DB块方法
触摸屏读取s7-300的浮点数--液位值:,用DBDn读取s7-300的DBD,地址格式分为两部
分DB块号(前三位,范围是0~255)和DBD号(后四位,范围是0~8192)。
在显示浮点数时,设备类型必须设定为:Dn,地址格式是FFFDDDD(FFF:设定块的地址;DDDD:设定块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB块10中的第2个字 DB10_0002 DBDn 100002(2+4)。
S7-300PLC组态 DBDn 010122是指DB块1中的第122个字
DB
位的表示方法:
如在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如威纶通里面选择DBDn,后面写入 20003.
同理,字节地址一样。
威纶通读取1200DB块方法(完整资料).doc
【最新整理,下载后即可编辑】
触摸屏读取s7-300的浮点数--液位值:DB1.DBD20,用DBDn 读取s7-300的DBD,地址格式分为两部分DB块号(前三位,范围是0~255)和DBD号(后四位,范围是0~8192)。
在显示浮点数时,设备类型必须设定为:DB Dn,地址格式是FFFDDDD(FFF:设定DB块的地址;DDDD:设定DB块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB 块10中的第2个字 DB10_0002 DBDn 100002(2+4)。
S7-300PLC 组态 DBDn 010122是指DB块1中的第122个字
DB位的表示方法:如DB1.DB2.3
在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如DB2.DBD3 威纶通里面选择DBDn,后面写入 20003.
同理,字节地址一样。
威纶通读取1200DB块方法
触摸屏读取s7-300的浮点数--液位值:,用DBDn读取s7-300的DBD,地址格式分为两部分DB块号(前三位,范围是0~255)和DBD号(后四位,范围是0~8192)。
在显示浮点数时,设备类型必须设定为:DB Dn,地址格式是FFFDDDD(FFF:设定DB块的地址;DDDD:设定DB块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB块10中的第2个字 DB10_0002 DBDn 100002(2+4)。
S7-300PLC组态 DBDn 010122是指DB块1中的第122个字
DB位的表示方法:
如
在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如威纶通里面选择DBDn,后面写入 20003.
同理,字节地址一样。
s7-300的数据类型
S7-300的数据类型分以下三种:基本数据类型、复合数据类型和参数类型。
一、基本数据类型1、位(bit)常称为BOOL(布尔型),只有两个值:0或1。
如:I0.0,Q0.1,M0.0,V0.1等。
2、字节(Byte)一个字节(Byte)等于8位(Bit),其中0位为最低位,7位为最高位。
如:IB0(包括I0.0~I0.7位),QB0(包括Q0.0~Q0.7位),MB0,VB0等。
范围:00~FF(十进制的0~255)。
3、字(Word)相邻的两字节(Byte)组成一个字(Word),来表示一个无符号数,因此,字为16位。
如:IW0是由IB0和IB1组成的,其中I是区域标识符,W表示字,0是字的起始字节。
需要注意的是,字的起始字节(如上例中的“0”)都必须是偶数。
字的范围为十六进制的0000~FFFF(即十进制的0~65536)。
在编程时要注意,如果已经用了IW0,如再用IB0或IB1要特别加以小心。
4、双字(Double Word)相邻的两个字(Word)组成一个双字,来表示一个无符号数。
因此,双字为32位。
如:MD100是由MW100和MW102组成的,其中M是区域标识符,D表示双字,100是双字的起始字节。
需要注意的是,双字的起始字节(如上例中的“100”)和字一样,必须是偶数。
双字的范围为十六进制的0000~FFFFFFFF(即十进制的0~4294967295)。
在编程时要注意,如果已经用了MD100,如再用MW100或MW102要特别加以小心。
以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。
5、16位整数(INT,Integer)整数为有符号数,最高位为符号位,1表示负数,0表示正数。
范围为-32768~32767。
6、32位整数(DINT,Double Integer)32位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。
范围为-2147483648~2147483647。
实用文库汇编之威纶通读取1200DB块方法
*作者:蛇从梁*
作品编号:125639877B 550440660G84
创作日期:2020年12月20日
实用文库汇编之触摸屏读取s7-300的浮点数--液位值:DB1.DBD20,用DBDn读取s7-300的DBD,地址格式分为两部分DB块号(前三位,范围是0~255)和DBD号(后四位,范围是0~8192)。
在显示浮点数时,设备类型必须设定为:DB Dn,地址格式是FFFDDDD(FFF:设定DB块的地址;DDDD:设定DB块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB块
10中的第2个字 DB10_0002 DBDn 100002(2+4)。
S7-300PLC组态 DBDn 010122是指DB 块1中的第122个字
DB位的表示方法:
如DB1.DB2.3
在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如DB2.DBD3 威纶通里面选择DBDn,后面写入 20003.
同理,字节地址一样
作者:蛇从梁
作品编号:125639877B 550440660G84
创作日期:2020年12月20日。
S7-300基本数据类型
STEP7中的基本数据类型W^(BGGL)位数据的数据类型为BOOL (布尔)型,在软件编程中BGGL 变量的值1和0常用英语单词TURE (真)和FALSE (假)来表示,对应二进制数中的“1”和“0”,常用于开关量的逻辑运算,存储空间为1位。
⑵字节(BYTE)字节数据长度为8位,数据格式为B#16#,B代表BYTE, 表示数据长度为一个字节(8位),#16#表示十六进制,取值范围为B#16#0〜B#16#FF。
⑶字(WORD)字数据长度为16位,这种数据可采用4种方法进行描述。
二进制:二进制的格式为2#,如2#101,取值范围为2#0〜2#1111_1111_1111_1111,书写时每4位可用下划线隔开,也可直接表示为2#111111111111。
十六进制:十六进制的格式为W#16#,W代表WORD, 表示数据长度为16位,#16#表示十六进制,数据取值范围为W#16#0〜W#16#FFFF。
BCD码:BCD码的格式为C#,取值范围为C#0〜C #999。
BCD码是用4位二进制表示1位十进制数,4位二进制中的0000〜1001组合分别表示十进制中的0〜9, 4位二进制中的1010〜1111组合放弃不用。
BCD码的最高4位用来表示符号,十六位86口码的取值范围为一999〜+999。
在STEP7的数据格式中,BCD码的取值只取正值,与最高4位的符号无关。
无符号十进制数:无符号十进制数的格式为B#(X, 义),取值范围为B#(0, 0)〜B#(255, 255),无符号十进制数是用十进制的0〜255对应二进制数中的0000_0000〜1111_1111 (8位),16位二进制数就需要两个0〜255的数来表示,例如:B# (12, 254)=2#0000_1100_1111_111012 254上面4种数据都是描述一个长度位16位的二进制数,无论你使用哪种方式都可以。
例如,如果想得到二进制数0000100110000111,可以使用2#0000_1001_1000_0111,也可以使用W#16#987,还可以使用C#987或者8#(9,135)。
威纶屏双精度浮点数(double)转单精度浮点数(float)转双整型(unsigned int)整数及短整型(short)小数
双精度浮点数转换单精度浮点数双精度浮点数转换整型数最近经常需要读取流量计数据,但流量计总量通常采用64位双精度浮点数(double)储存,但无论是电脑组态软件还是触摸屏组态软件,都只能读取32位数据,查询大量资料,不得其法。
只能自己动手!经过研究,通过威纶触摸屏宏指令,可以将双精度浮点数转为单精度浮点数或整型数据,转换过程分享给大家,希望对遇到相同问题的难兄难弟有帮助。
(没有转换的数据截图)(转换后的数据截图)以下为doule转float原程序:双精度浮点数转换单精度浮点数比较容易,将以下代码复制到宏文件即可。
macro_command main()bool bit[48],ba[8]short e[2]GetData(bit[0], "Local HMI", LW_Bit, 1000, 48)SetData(bit[4], "Local HMI", LW_Bit, 1400, 11)GetData(e[0], "Local HMI", LW, 14, 1)e[1]=e[0]-1023+127SetData(e[1], "Local HMI", LW, 15, 1)GetData(ba[0], "Local HMI", LW_Bit, 1500, 8)SetData(bit[45], "Local HMI", LW_Bit, 1600, 3)SetData(bit[16], "Local HMI", LW_Bit, 1603, 16)SetData(bit[0], "Local HMI", LW_Bit, 1703, 4)SetData(ba[0], "Local HMI", LW_Bit, 1707, 8)SetData(bit[15], "Local HMI", LW_Bit, 1715, 1)end macro_command如果看不懂,以下是加标注的完整原程序,供大家参考。
威纶通读取1200DB块方法
触摸屏读取s7-300的浮点数--液位值:,用DBDn读取s7-300的DBD,地址格式分为两部分DB块号(前三位,范围是0~255)和DBD 号(后四位,范围是0~8192)。
在显示浮点数时,设备类型必须设定为:Dn,地址格式是FFFDDDD(FFF:设定块的地址;DDDD:设定块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB块10中的第2个字DB10_0002 DBDn 100002(2+4)。
S7-300PLC组态 DBDn 010122是指DB块1中的第122个字
DB位的表示方法:
如
在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如威纶通里面选择DBDn,后面写入 20003.
同理,字节地址一样。
威纶通读取DB块方法
触摸屏读取s7-300的浮点数--液位值:DB1.DBD20,用DBDn读取s7-300的DBD,地址格式分为两部分DB块号(前三位,范围是0~255)和DBD号(后四位,范围是0~8192)。
在显示浮点数时,设备类型必须设定为:DB Dn,地址格式是FFFDDDD(FFF:设定DB块的地址;DDDD:设定DB块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB块10中的第2个字 DB10_0002 DBDn 100002(2+4)。
S7-300PLC组态 DBDn 010122是指DB块1中的第122个字
DB位的表示方法:
如DB1.DB2.3
在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如DB2.DBD3 威纶通里面选择DBDn,后面写入 20003. 同理,字节地址一样。
威纶通读取DB块方法完整版
威纶通读取D B块方法 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】
触摸屏读取s7-300的浮点数--液位值:,用DBDn读取s7-300的DBD,地址格式分为两部分DB块号(前三位,范围是0~255)和DBD号(后四位,范围是
0~8192)。
在显示浮点数时,设备类型必须设定为:Dn,地址格式是FFFDDDD(FFF:设定块的地址;DDDD:设定块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB块10中的第2个字 DB10_0002 DBDn 100002(2+4)。
S7-
300PLC组态 DBDn 010122是指DB块1中的第122个字
DB 位的表示方法:
如在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如威纶通里面选择DBDn,后面写入 20003.
同理,字节地址一样。
威纶通读取DB块方法
威纶通读取D B块方法公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]
触摸屏读取s7-300的浮点数--液位值:,用DBDn读取s7-300的DBD,地址格式分为两部分DB块号(前三位,范围是0~255)和DBD号(后四位,范围是
0~8192)。
在显示浮点数时,设备类型必须设定为:Dn,地址格式是FFFDDDD(FFF:设定块的地址;DDDD:设定块里面的字地址,当字地址不满4位时,需要以零补齐。
)。
例如DB块10中的第2个字 DB10_0002 DBDn 100002(2+4)。
S7-300PLC组态 DBDn 010122是指DB块1中的第122个字
DB位的表示方法:
如
在威纶通里面如选择DBnbit 后面就是100023
上面表格中,FFFFF表示DB块地址,DDDD表示字节地址,o表示位地址。
如果要表示浮点数,则必须用DBDn
FFFFF表示DB块地址,DDDD表示字起始地址
如威纶通里面选择DBDn,后面写入 20003.同理,字节地址一样。
威纶通16进制转换成浮点数
威纶通16进制转换成浮点数威纶通(Wayland)是一种16进制数表示的浮点数格式。
它是IEEE 754浮点数标准的一种变种,用于在16位字节中紧凑地表示浮点数。
在威纶通中,一个浮点数由4个十六进制数字表示,每个十六进制数字占据4位,总共占据16位字节。
其中,第一个十六进制数字表示浮点数的符号位,剩下的三个十六进制数字表示浮点数的尾数。
具体的转换过程如下:1.确定符号位威纶通中,若第一个十六进制数字的最高位为0,则表示浮点数为正数,若最高位为1,则表示浮点数为负数。
2.确定指数位在威纶通中,浮点数的指数位始终为固定值-2。
这意味着浮点数总是乘以16的-2次方。
3.确定尾数根据威纶通的规定,尾数由剩下的三个十六进制数字表示。
其中,最高位占据1/16,次高位占据1/256,最低位占据1/4096。
尾数的最高位始终为1,但在威纶通中不显示出来。
以上三个步骤可以简单概括为:符号位确定,指数位固定为-2,尾数按照威纶通规定转换。
下面我们通过一个示例来演示威纶通到浮点数的转换:假设我们有一个威纶通数值:00A7,我们将按照上述步骤进行转换。
1.确定符号位首先,我们观察第一个十六进制数字的最高位,也就是数字0的最高位为0,因此该浮点数为正数。
2.确定指数位威纶通中指数位始终为固定值-2。
所以,我们知道指数位为-2。
3.确定尾数剩下的三个十六进制数字为0A7。
根据威纶通的规定,我们将把这三个数字转换为二进制,并根据尾数的规定将它们分配到相应的位上。
0A7的二进制为0000 1010 0111。
根据威纶通的规定,最高位是1,但不显示出来。
因此,我们去掉最高位的1,剩下000 1010 0111。
最高位的1代表1/16,次高位的1代表1/256,最低位的1代表1/4096。
所以,我们可以将尾数写为:(1/16) + (1/256) + (1/4096) = 0.0663。
综上所述,给定的威纶通数值00A7对应的浮点数为正的0.0663乘以16的-2次方,即0.0663乘以0.00390625,结果为0.000259012。
s7-300plc浮点数表示的一个费解问题
s7-300plc浮点数表示的一个费解问题问:在线检测时如下:十六进制:L-1.073742e+009CE800000T DB1.DBD7CE800000L-1.073742e+009CE800001//同样的数为什么16进制表示于上面不同?T DB1.DBD11CE800001L-1.181116e+009CE8CCCCDT DB1.DBD15CE8CCCCDL 1.073742e+0094E800001T DB1.DBD194E800001上位我是用高级语言按照浮点数的IEEE754表示规则转换过来的,读到的是这样的:十进制:DB1.DBD7=-1.073741824E9十六进制:DB1.DBD7=CE800000十进制:DB1.DBD11=-1.1811160064E9十六进制:DB1.DBD11=CE800001十进制:DB1.DBD15=1.974461964222464E9十六进制:DB1.DBD15=CE8CCCCD十进制:DB1.DBD19=1.1811160064E9十六进制:DB1.DBD19=4E80000116进制的读取与s7-300plc的一模一样,但是只有一个数计算的结果是对的。
我想应该是s7-300plc传输的问题L-1.073742e+009CE800000T DB1.DBD7CE800000L-1.073742e+009CE800001//同样的数为什么16进制表示于上面不同?T DB1.DBD11CE800001因为同一个浮点数PLC用显示了两种16进制,所以我认为另外两个浮点数的16进制表示出了问题,导致上位读取错误,为什么会这样?答:1.使用16进制转IEEE754的小程序可以检验转换程序是否正确。
0xCE800000=>-10737418240xCE800001=>-10737419520xCE8CCCCD=>-11811160320x4E800001=>1073741952结果符合你的PLC程序中浮点数。