全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 工业控制 >

西门子S7-1500产生精确时间戳的方法

时间:2023-05-12 16:25

人气:

作者:admin

标签: 西门子  数据采集  S7-1500 

导读:精确到纳秒的时间位数很长(从1970-1-1开始计算),是无法被32位整数容纳的,因此,此处仅计算其相对时间。起始时间timeMeasure.timeNowULIntStart在开始通讯,或者PLC启动时获取。...

概述

在数据采集时,精准的相对时间是非常重要的。尤其是高速采集时,上位机的软件(尤其是windows系统里的软件)很难精准地确定信息的时刻。这时候,如果PLC能够在提供数据时,同时提供一个精准的时间标志(时间戳),将能极大地提高数据采集的计时准确性,并降低采集系统的复杂性。下面将介绍获取一个精确到微秒的Uint32时间戳的详细步骤。虽然S7-1500已经支持64位的整型,但是,考虑到低端的PLC还不支持64位的整型,因此,此处选择相对通用的32位无符号整型。PART01完整程序 程序在准备工作结束后,进行一次时间戳计算,包括了时钟获取、转换等过程。

a3a2ac06-f09a-11ed-90ce-dac502259ad0.jpg

PART02将时钟转换成整型数

首先读取时钟,写入到一个长时间类型LDT,然后,转成64位无符号整型ULInt。这个转化是无损失的,"timeMeasure".timeNowULInt精确到纳秒(ns)。

a3c93e2a-f09a-11ed-90ce-dac502259ad0.jpg

PART03获取相对时间

精确到纳秒的时间位数很长(从1970-1-1开始计算),是无法被32位整数容纳的,因此,此处仅计算其相对时间。起始时间"timeMeasure".timeNowULIntStart在开始通讯,或者PLC启动时获取。

a3eac04a-f09a-11ed-90ce-dac502259ad0.jpg

PART04转成微秒(μs),并转成32位无符号整数 此处截取微秒的部分,并强制转化成32位无符号整数"dbGen_1024".stamp。

a40d144c-f09a-11ed-90ce-dac502259ad0.png

PART05翻转的问题 用32位无符号整数表达微秒的时间戳时,由于32位无符号整数的最大值是4_294_967_295,大概1.2小时就会溢出而自然翻转到0,因此,采集软件必须注意处理翻转的问题。

a425728a-f09a-11ed-90ce-dac502259ad0.jpg

PART06有时间戳采集时的对时机制

由于PLC的对时(调表)不是很方便,因此,PLC里的绝对时间很可能是原始的时间,因此,我们只利用其准确的相对时间来生成时间戳。

在采集软件里要进行对时操作(PLC-Recorder是在收到第一个完整电文时,读取电文内的时间戳和系统时间,完成对时,后续都用相对时间来处理,实际工作时,还要考虑PLC初始化、网络中断等很多其他因素)。

审核编辑 :李倩

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信