线下实训
HOME
线下实训
正文内容
plc编程real 施耐德PLC应用,在程序中定义变量和数据!
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

施耐德PLC应用,在程序中定义变量和数据!

施耐德PLC中编辑变量和数据:

(一)基本知识

1、变量分类

变量是在程序执行时可以修改的内存区域。Unity Pro 软件编程可以使用两种类型的变量:

1) 定位变量:是与 I/O 硬件模块输入输出通道相关联的,或者与内存引用相关联的变量。例如:“启动电机”与输入模板通道 %I 0.5.0 相关联,“启动电机”就是定位变量。

2) 非定位变量:是既不与I/O 硬件模块输入输出通道相关联,也不与内存引用地址相关联的变量,即没有地址关联的变量成为非定位变量。非定位变量在内存中的位置不可知。这种变量定义类型可以使您在编写程序时抛开地址的束缚,完全专注于您的应用。

2、通用数据类型和范围

 BOOL/EBOOL : 布尔变量必须为 FALSE (0) 或 TRUE (1). EBOOL处理强制和边沿检测

 WORD : 代表 “位串16”, 意味着数据长度为 16 位

 INT : 代表整型数. 数值范围从 -32768 至 +32767

 UINT : 代表无符号整型数. 数值范围从 0 至 65535

 REAL : 代表浮点值. 数值范围从 -3.40e+38 至 3.40e+38

3、 通用数据类型的立即值语法

通常基本数据类型(EDT)的实例采用变量名或拓扑地址的方式引用,而在数据编辑器或程序段中也可以通过立即值的方式赋值和引用。如下图所示。

4、定义变量的三种方式

方式一,在项目浏览器中鼠标双击“变量和FB实例”,在弹出的‘数据编辑器窗口’定义,编辑、修改变量,如下图。

方式二,在项目浏览器中双击CPU或I/O模块,如下图查看相应模块的地址,在模块的I/O对象表格里定义,这种方式只能生成,不支持修改和删除。

方式三,在”程序编辑窗口”中定义,这种方式只能生成,不支持修改和删除。

(二)实际操作

1、在项目浏览器中点击“变量和FB实例”,在右侧“名称”下输入start,类型选 EBOOL,在下一行输入 stop,类型选 EBOOL,然后关闭窗口。如下图:

2、从硬件属性中书写:在项目浏览器中双击DDO3202k;左键点右侧“BMX DDO3202k”,选择I/O对象,再选择%Q,然后点击“更新网络”。在该界面右侧%Q0.2.0名称下,改写为cmd_motor,再用鼠标左键选中第2行,按着鼠标左键下拉,选择右侧Q0.2.1、Q0.2.2、Q0.2.3;然后在左侧“名称前缀”框中输入cmd_,点击“创建”。即可形成cmd_0、cmd_1、cmd_2;如下图:

3、关闭所有窗口,点击“变量和FB实例”,会显示刚才所有的定义变量名。

4、按保存按钮,保存项目。

PLC里Real数据结构和高低字节详解~一次性搞懂real问题

最近又遇到个问题,PLC和PLC通信,需要用到Real变量,还需要高低字节转换,该怎么正确传输呢?下面由我一步一步解决这个问题。一次性彻底解决Real数据结构问题。

第一步:硬件配置

倍福PLC为主站,西门子模块为从站,通过Profibus通信传输数据,但硬件配置只能配置Byte,如下图定义了64字节输入,64字节输出。

第二步:问题描述

我需要西门子PLC给我发一个real类型的数据,一个real类型为4个byte,我就在程序里定义5-8Byte这4个byte为一个Real(如下图蓝色显示,图中为64个byte的16进制显示,两个数字00代表一个byte)。

倍福里Real的16进制数据CD 4C 03 43,此时在程序里的显示为131.3;但是西门子发过来的不是131.3。

这又是什么问题呢?

此刻想到有高低字节转换,所以认为是高低字节问题导致的(我的上一篇文章详细讲解了高低字节转换机理)。于是我打算在程序里通过高低字节转换看看结果是不是一致的。也就是上图中real的16进制数据变成了43 03 4C CD。结果显示还是不正确,这就纳闷了。。

头大中……………

怎么办呢?

只能一步一步分析数据结构了。

第三步:技术原理分析

倍福侧显示的Real:131.3的数据结构如图所示

西门子侧由于有高低字转换问题,实际西门子侧需做个高低字节转换后,要给我发以下数据结构:

这样数据结构才能全部对应上,如果西门子不经过高低字节转换,直接发131.3数据给倍福,那么因为存在高低字节互换问题,倍福收到的完全是反的字节,即1100 1101 0100 1100 0000 0011 0100 0011,这就需要倍福侧再次做高低字节转换。才能得到实际的结果131.3;

卧槽!

经过推理可以经过高低字节转换就得到正确结果了呀!!

在验证一遍,西门子发个real,倍福经过高低字节转换,确实可以得到正确结果,之前我的程序写错了,程序里定义的是DWORD,不是Real!!!

研究到现在白研究了,高低字节转换就可以实现了!!!

但是既然已经研究到这了,就干脆把Real的换算机制搞清楚吧!!!!!

第四步:Real 换算机制

32位real的结构如下图:

高地址<------------>低地址

| 符号位 | 指数 | 尾数 |

| 1 bit | 8 bit | 23 bit |

*符号位1代表负数,0代表正数。

*指数就是公式里的指数。

*尾数就是小数点后面的部分。

举例说明:Real值 131.1

二进制表示位0100 0011 0000 0011 0100 1100 1100 1101

机器运算需要转为补码运算,正数补码和反码一致。

即131.3的补码和上面一样,0100 0011 0000 0011 0100 1100 1100 1101

**0代表正数;

**后面8位1000 0110为指数,转换为十进制是 指数=134。

**尾数部分为000 0011 0100 1100 1100 1101,根据公式加1;

为1. 000 0011 0100 1100 1100 1101;

Real转换公式为 REAL=1*1.(尾数部分)*2^(指数-127)

以上数据代入,十进制real即为=1.00000110100110011001101*2^(134-127)

=1.00000110100110011001101*2^7

以上由于是二进制乘法,所以每次乘以2,小数点前移1位,2^7就是前移7位,数据表示为

=10000011.0100110011001101

抓换成10进制无限接近 =131.3

到此转换完成,Lreal是64位结构也是相同的机制,只是指数和尾数变多了。

问题解决了,还收获Real数据的知识,挺充实!!

相关问答

在plc编程中byte转换成real的原理是什么

你想要一个16进制数形式的字符串还是把每个16进制数转成它代表的ascii字符?你的源数据是个byte[]?第一种就没什么可说的了,直接调每个byte的ToStri...

为什么要把plc采集的real类型的数据转化成int型?

关于这个问题,将PLC采集的实数类型数据转换为整数类型可能是为了以下几个原因:1.数据处理方便:整数类型数据处理更加简单,可以直接进行算术运算、比较、排...

wincc7.0和施耐德昆腾plc连接,REAL值显示不正常,请高手知道一下,谢谢?

查看一下wincc输出格式设置,一般大于0的real数值,数据格式采用(十进制),输出格式采用(99999.9),如果小数点需要显示多几位就多设几位,如果是显示负的real值...

库卡机器人怎么写浮点数给plc?

库卡机器人(KUKARobot)和PLC(可编程逻辑控制器)通常用于自动化系统。确保机器人和PLC之间的数据传输正确是至关重要的。浮点数通常是指带小数点的数字,如3...

plc中等于指令怎么使用?

PLC中等于指令是一条输入指令,它的操作数据类型除了SINT的格式对应的是立即数,其余的都不是。等于指令的测试源A的值与测试源B的值是否相等。REAL数据类型的...

AB的PLC中,有这些数据类型:INTDINTSINTREALBOOL。请问分别代表什么意思啊?

INT16位整型其值域为-32768~+32767DINT32位整型其值域为-2147483648~+2147483647SINT8位整型其值域为-128~+127REAL实型其值域为-2的128次方...

real占多少位?

bool布尔量就是开关量只有0,1byte字节word字16位整数dword双字32位整数int带符号16位整数dint带符号32位整数real浮点数实数32位别的我没用过...

PLC的基本数据类型,我们如何在编程中选用?

PLC的基本数据类型,我们常用的有如下几种:1.布尔类型BOOL,也就是我们常说的0和1,也可以理解为True和False,对于PLC来说就是DI或者DO点的输入或输出状态...

PLC中,实数,整数型,双整数型的概念是什么?最好举例._作业帮

[最佳回答]实数和长整型一样占用2个字(4个字节)的空间,只是实数表示的是带有小数的数据,如88.39,这就是实型,在程序中一般符号是REAL或FLOAT;而长整型也就是你...

PLC什么双整数?

实数和长整型一样占用2个字(4个字节)的空间,只是实数表示的是带有小数的数据,如88.39,这就是实型,在程序中一般符号是REAL或FLOAT;而长整型也就是你说的双整数...

 超声波洗菜机  三星 s8300c 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部