设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子1200的数据转换比较问题
返回列表
发新帖
[西门子]
西门子1200的数据转换比较问题
[复制链接]
250
|
0
|
2024-7-22 09:03:56
|
显示全部楼层
|
阅读模式
PLC内的数据分为很多种类型,如BOOL,CHAR,INT,DINT ,REAL,LREAL,STRING等等。
有的数据类型可以互相转换
如INT类型可以隐式转换为DINT类型。
DINT类型也可以显式转换为INT类型。
在PLC中新建立一个DB块,用于存放数据
由于在PLC内,INT类型占用16Bit,而DINT类型占用32Bit,则可以通过将INT类型直接赋值给DINT类型即可,不会报警告和错误。
若将32Bit的数据放置到16Bit的数据中,则会有提示。
代码下面有一条黄色波浪线,代表警告,此操作会导致数据丢失。
若我们定义的DINT类型范围为0-1000,小于INT类型的数据长度,则完全可以在不产生警告的情况下,将DINT数据转换为INT类型数据,这就用到显式转换。
如下图所示,当我们知道我们需要转换的数据可能会存在精度问题,并且可以接受由于精度问题导致的数据丢失,则系统不会给我们警告。
此条程序和上条的作用一致,通过使用DINT_TO_INT方法,将DINT类型的dintTemp显式转换为INT类型的intTemp
然而,并不是所有的数据都适用这种方式,以下方式:
以下方法,介绍如何进行WORD类型的REAL类型高16Bit和REAL类型数据进行比较
在设备调试中,需要和设备B进行交互,通过读取设备B内的数据判断是否将数据发送给B设备。发送给设备B的数据只能是REAL类型,然而,从设备B侧读取的数据,只能是16位WORD类型。
这意味着,当我写入设备数据为REAL类型的"1.0"我读取此地址的数据只是高16Bit和低16Bit的数据。
由于REAL类型的“1.0”存放的数据只是在高16Bit,低16Bit为0,所以,仅仅需要比较高16Bit和REAL类型“1.0”的关系即可。
PLC中有可按位寻址的寄存器M,例如M100,可以定义MW100和MD100,定义REAL类型的MD100,将REAL类型的1.0传送到MD100,即可实现读取MW100和仪表读取上来的16Bit数据进行比较。
若通过类型转换,将读取上来的16Bit数据通过INT_TO_REAL方式转换,转换的结果并非需要比较的数值。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
工业技术互联
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』