? ? ? ? Cp56Time2a是西门子PLC(可编程逻辑控制器)中用于时间数据传输的一种特殊格式,主要用于PCS7和基于TCP/IP的S7通信过程中。这种时间格式主要为了确保在不同的系统和设备之间进行精确的时间同步。
Cp56Time2a格式,如图:
Cp56Time2a格式的具体结构如下:
总的来说,Cp56Time2a格式使用了12个字节来表示完整的日期和时间信息,包括秒、毫秒、日期(日、星期、月)、以及年份,并且考虑到了闰秒的情况,能够满足工业自动化领域对时间精度和一致性的要求。
? 用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;
}