找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16143|回复: 0
打印 上一主题 下一主题
收起左侧

s7-300整数INT_时间S5Time及Time相互转换

[复制链接]
跳转到指定楼层
楼主
ID:85681 发表于 2015-7-14 19:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
整数INT_时间S5TimeTime相互转换的困惑
客户1西门子热线工程师,你好,我用第三方组态软件(IntouchiFix、组态王等),想在画面上设置定时器T的时间,以便人工及时修改。但组态软件中没有S5Time数据类型,怎么办?
客户2我想在PLC程序中,用整数INT给定时器T的预设时间赋值,怎么做?
客户3我用的第三方组态软件(IntouchiFix、组态王等),想在画面上设置PID积分时间,但FB41的积分时间TITime类型,组态软件中没有Time类型,怎么办?
客户4PLC程序中,数据类型S5Time如何转换到整数INT类型?
以上四个客户,遇到的问题实质上是一样的,就是整数INT、时间S5TimeTime之间的相互转换。
如何转换,首先要弄清整数INT、时间S5TimeTime的数据结构。整数INT16位的数据:

时间S5Time16位数据,BCD码格式

时间Time32位数据,类似于双整数DINT

由此可见,三者之间的转换即是整数INT、双整数DINTBCD码之间的转换。可以根据数据结构特点,自己编程实现相互转换,这样比较复杂。利用库函数FC33/FC40是最简单方便的。方法如下:
1.
整数INT到时间S5Time的转换方法:
INT -> I_DI
指令 -> DINT -> MOVE指令 -> Time -> 库函数FC40 -> S5Time

2.
整数INT到时间Time的转换方法:
INT -> I_DI指令 -> DINT -> MOVE指令 -> Time


3.
时间S5Time到整数INT的转换方法:
S5Time ->
库函数FC33 -> Time -> MOVE指令 -> DINT -> 取其高字部分,用MOVE指令 -> INT









分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表