twincat2有中文版么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了twincat2有中文版么相关的知识,希望对你有一定的参考价值。

参考技术A twincat2有中文版。
它的使用范围广,广泛应用于各个国家中,因此,twincat2是有中文版。
TwinCAT2安装好后如果只是仿真模拟程序是不需要驱动的,如果是想通过自己的电脑链接输入输出耦合单元或者驱动单元。

如何在 TwinCAT3 中获取 unix 时间戳?

【中文标题】如何在 TwinCAT3 中获取 unix 时间戳?【英文标题】:How do I get the unix timestamp in TwinCAT3? 【发布时间】:2017-01-20 23:00:21 【问题描述】:

我们正在开发 Beckhoff TwinCAT3 中的数据记录应用程序。要获取我们当前使用 LTIME() 的时间,然后使用 C# 将其转换为 ms:

ulong valA = reader.ReadUInt64();   // this gets the LTIME
long ftime = (long)(valA / 100);
DateTime t = DateTime.FromFileTime(ftime);
return (t.ToUniversalTime().Ticks - 621355968000000000) / 10000;

一定有更好的方法。此外,我们发现此时间与计算机时间(任务栏中的时间)之间存在差异。

从计算机时钟获取自 1970 年(格林威治标准时间)以来的毫秒数的最佳方法是什么?

我看到NT_GetTime。看起来我们需要对结构进行数学运算

感谢您的任何指点。

【问题讨论】:

作为重要说明:特别是如果您的数据点之间的时间跨度需要非常准确,那么您如何解决 plc 上的时间很重要。 NT_GetTime 抖动/不太准确。见Infosys 【参考方案1】:

关键是使用FB_TzSpecificLocalTimeToFileTime 将当前T_FILETIME 转换为使用当前时区信息(ST_TimeZoneInformation) 的UTC。这将为您提供一个 UTC windows 文件时间(滴答声),需要将其转换为 UTC unix 时间。

这里是这个过程的一个功能块实现:

声明

FUNCTION_BLOCK UnixTimestamp
VAR_OUTPUT
    seconds: ULINT;
    milliseconds: ULINT;
END_VAR

VAR
    localSystemTime : FB_LocalSystemTime := ( bEnable := TRUE, dwCycle := 1 );
    getTimeZoneInformation : FB_GetTimeZoneInformation;
    timeZoneInformation : ST_TimeZoneInformation;
    specificLocalTimeToFileTime : FB_TzSpecificLocalTimeToFileTime;
    fileTime: T_FILETIME;
    onZerothSecondLastCycle : BOOL;
END_VAR

实施

// Get local system time
localSystemTime();

// On the zeroth second of each minutesync timezone information
IF (timeZoneInformation.standardName = '' OR (localSystemTime.systemTime.wSecond = 0 AND NOT onZerothSecondLastCycle)) THEN
    getTimeZoneInformation(sNetID := '', bExecute := TRUE, tzInfo => timeZoneInformation);
END_IF;

// Convert local system time to unix timestamps
specificLocalTimeToFileTime(in := Tc2_Utilities.SYSTEMTIME_TO_FILETIME(localSystemTime.systemTime), tzInfo := timeZoneInformation, out => fileTime);
seconds := (SHL(DWORD_TO_ULINT(fileTime.dwHighDateTime), 32) + DWORD_TO_ULINT(fileTime.dwLowDateTime)) / 10000000 - 11644473600;
milliseconds := (SHL(DWORD_TO_ULINT(fileTime.dwHighDateTime), 32) + DWORD_TO_ULINT(fileTime.dwLowDateTime)) / 10000 - 11644473600000;

onZerothSecondLastCycle := localSystemTime.systemTime.wSecond = 0;

用法

VAR
    unixTime: UnixTimestamp;
    timestampSeconds: ULINT;
    timestampMilliseconds: ULINT;
END_VAR

-----

unixTime();
timestampMilliseconds := unixTime.milliseconds;
timestampSeconds := unixTime.seconds;

【讨论】:

以上是关于twincat2有中文版么的主要内容,如果未能解决你的问题,请参考以下文章

屏幕支持比较好的linux发行版么

倍福TwinCAT2中CX(ARM)啥意思

ubuntu 12.04 system 中文版在那里找

安装Twincat时报错,如图

twincat只能用倍福工控机吗

倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何在程序中添加注释