当前位置: 首页 > news >正文

上位机编程:CP56Time2a格式精讲

Cp56Time2a介绍:

        Cp56Time2a是西门子PLC(可编程逻辑控制器)中用于时间数据传输的一种特殊格式,主要用于PCS7和基于TCP/IP的S7通信过程中。这种时间格式主要为了确保在不同的系统和设备之间进行精确的时间同步。

Cp56Time2a格式,如图:

Cp56Time2a格式的具体结构如下:

  1. 字节0-1:包含秒值的低16位。
  2. 字节2-3:包含秒值的高16位。
  3. 字节4-5:毫秒值,最高有效位(第16位)表示是否闰秒,其余15位表示毫秒。
  4. 字节6-7:日期信息,其中:
    • 低5位表示日(1-31)
    • 第6位表示月中的哪一天(星期几,0代表星期日,1代表星期一,以此类推)
    • 高2位表示月份(1-12)
  5. 字节8-9:年份的低16位。
  6. 字节10-11:年份的高16位。

总的来说,Cp56Time2a格式使用了12个字节来表示完整的日期和时间信息,包括秒、毫秒、日期(日、星期、月)、以及年份,并且考虑到了闰秒的情况,能够满足工业自动化领域对时间精度和一致性的要求。

Cp56Time2a编码:

  用java实现时间格式转换Cp56Time2a编码,如下图:

//Cp56Time2a编码
public static byte[] toBytes(Date date) {SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("下发时间:"+sdf.format(date));byte[] result = new byte[7];Calendar aTime = Calendar.getInstance();aTime.setTime(date);aTime.add(Calendar.MONTH,1);int milliseconds = aTime.get(Calendar.SECOND);milliseconds=milliseconds*1000;result[0] = (byte) (milliseconds % 256);result[1] = (byte) (milliseconds / 256);result[2] = (byte) aTime.get(Calendar.MINUTE);result[3] = (byte) aTime.get(Calendar.HOUR_OF_DAY);result[4] = (byte) aTime.get(Calendar.DAY_OF_MONTH);result[5] = (byte) aTime.get(Calendar.MONTH);result[6] = (byte) (aTime.get(Calendar.YEAR) % 100);return result;}

http://www.lryc.cn/news/284123.html

相关文章:

  • Webpack5入门到原理12:处理 Html 资源
  • Vue3-Axios二次封装与Api接口统一管理
  • RHCE: 主从DNS服务器配置 (实现正反向解析)
  • Git学习笔记(第6章):GitHub操作(远程库操作)
  • 【主题广范|见刊快】2024年海洋工程与测绘遥感国际学术会议(ICOESRS 2024)
  • 解决el-radio-group只触发一次的问题
  • openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_RSA_keygen.c
  • 密码搜|Facebook 8组问答,搞定Pixel与广告之间的关系!
  • Apache StringUtils:Java字符串处理工具类
  • 设计模式 代理模式(静态代理 动态代理) 与 Spring Aop源码分析 具体是如何创建Aop代理的
  • 【EI会议征稿通知】第七届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2024)
  • Verilog基础:强度建模(一)
  • Spring Boot各类变量的使用
  • Hive管理UDF详解
  • bug笔记:解决 HTTP Error 500.30 - ASP.NET Core app failed to start
  • 理解pytorch系列:transpose是怎么实现的
  • Linux tftp命令教程:文件传输利器(附案例详解和注意事项)
  • beego的模块篇 - task任务
  • ThreadLocal工具类
  • 【c语言】扫雷(上)
  • Java读取制表符文本转换为JSON
  • 从C到C++:向面向对象过渡的技巧与诀窍
  • Vue3中动态组件使用
  • kubernetes工作负载-DamonSet
  • zabbix其他配置
  • 蓝桥杯备战 每日一题 (2)
  • GetShell的姿势
  • workflow源码解析:ThreadTask
  • 为何谷歌强制要求安装ssl证书?
  • 【刷题】 leetcode 2 .两数相加