Notes on the documentation

This description is only intended for the use of trained specialists in control and automation engineering who are familiar with the applicable national standards.
It is essential that the following notes and explanations are followed when installing and commissioning these components.

The responsible staff must ensure that the application or use of the products described satisfy all the requirements for safety, including all the relevant laws, regulations, guidelines and standards.

Disclaimer

The documentation has been prepared with care. The products described are, however, constantly under development.
For that reason the documentation is not in every case checked for consistency with performance data, standards or other characteristics.
In the event that it contains technical or editorial errors, we retain the right to make alterations at any time and without warning.
No claims for the modification of products that have already been supplied may be made on the basis of the data, diagrams and descriptions in this documentation.

Trademarks

Beckhoff®, TwinCAT®, EtherCAT®, Safety over EtherCAT®, TwinSAFE® and XFC® are registered trademarks of and licensed by Beckhoff Automation GmbH.
Other designations used in this publication may be trademarks whose use by third parties for their own purposes could violate the rights of the owners.

Patent Pending

The TwinCAT Technology is covered, including but not limited to the following patent applications and patents:
EP0851348, US6167425 with corresponding applications or registrations in various other countries.

Copyright

© Beckhoff Automation GmbH.
The reproduction, distribution and utilization of this document as well as the communication of its contents to others without express authorization are prohibited.
Offenders will be held liable for the payment of damages. All rights reserved in the event of the grant of a patent, utility model or design.


TCPlcLibSystemCx_Overview

TwinCAT PLC Library: SystemCX

Overview

This library contains functions and function blocks which are using features of devices of the Embedded PC CX line .

Functions

Name | Description
F_CXSubTimeStamp | calculates 64bit subtraction (time A [100ns] - time B [100ns]) as result in [µs], only with differences between 0 and 4294967295 us, see link
F_CXNaviSwitch | The function converts the value of the CX1100 navigation switch into an enum.
F_GetVersionTcSystemCx | The function returns library version info.

Functionblocks

Name | Description
FB_CxGetDeviceIdentification | Read the CX-Device identification
FB_CXProfiler | runtime measurement of PLC code using the CPU-Counter
FB_CXSetTextDisplay | Control of the two line display of the CX1100
FB_CXSimpleUps | Control of the UPS CX1190-UPS (part name CX1100-0900, CX1100-0910, CX1100-0920)

Requirements

Component | Version
TwinCAT on the development PC | 2.9 Build 959 or higher
CX1000-Windows CE-Image | 1.75 or higher; FB_CxGetDeviceIdentification since 2.15
CX1000-Windows XP-Image | 1.14 or higher; FB_CxGetDeviceIdentification higher than 1.33
CX1020-Windows CE-Image | 2.04 or higher; FB_CxGetDeviceIdentification since 2.15
CX1020-Windows XP-Image | 1.30 or higher; FB_CxGetDeviceIdentification higher than 1.33


FUNCTION F_CXSubTimeStamp

函数 F_CXSubTimeStamp 执行64位的时间戳A与时间戳B减法，并且把结果变换到µs。所需的分辨率为100ns的64位时间戳能用系统里的功能块GETCPUCOUNTER读出。时间戳B为负或大于4294967295us时，最大值4294967295us会被返回。 这是71分钟，34秒，967秒和295微毫秒。在这种情况下，TcUtilities.lib里的函数UInt64Sub64（）可以用来在100ns内计算一个64位减法，并且结果为64位。

FUNCTION F_CXSubTimeStamp : UDINT

VAR_INPUT
    nTimeStampLoDW_A : UDINT; (* 2*32 bit time stamp A: low DWORD  *)
    nTimeStampHiDW_A : UDINT; (* 2*32 bit time stamp A: high DWORD *)
    nTimeStampLoDW_B : UDINT; (* 2*32 bit time stamp B: low DWORD  *)
    nTimeStampHiDW_B : UDINT; (* 2*32 bit time stamp B: high DWORD *)
END_END_VAR

nTimeStampLoDW_A : 时间戳A的低32位。

nTimeStampHiDW_A : 时间戳A的高32位。

nTimeStampLoDW_B : 时间戳B的低32位。

nTimeStampHiDW_B : 时间戳B的高32位。


FUNCTION F_GetVersionTcSystemCx

TwinCAT PLC Library: CX系统

FUNCTION F_GetVersionTcCXSystem

该函数返回库的版本信息。

FUNCTION F_GetVersionTcSystemCX : UINT

VAR_INPUT
    nVersionElement : INT;
END_VAR

nVersionElement : 版本要素:

  • 1 : 主号码;
  • 2 : 次设备号;
  • 3 : 修订号;
开发环境 | 目标平台 | 包含的PLC 库
TwinCAT v2.9.0 | PC (i386) | TcSystemCX.Lib


FUNCTION F_CXNaviSwitch

函数F_CXNaviSwitch 将CX1100-Navigation-Switch的值转换成 E_CX1100_NaviSwitch类型的枚举值。

FUNCTION F_CXNaviSwitch : E_CX1100_NaviSwitch

VAR_INPUT
    iCX1100_IN : USINT
END_VAR

E_CX1100_NaviSwitch : CX1100输入的值 'IN'

Enum E_CX1100_NaviSwitch

TYPE E_CX1100_NaviSwitch : (
    e_CX1100_NaviSwitch_IDLE 		:= 0,
    e_CX1100_NaviSwitch_MIDDLE 		:= 16,

    (* clockwise in 45 degree steps *)
    e_CX1100_NaviSwitch_TOP 		:= 1,
    e_CX1100_NaviSwitch_TOPRIGHT 	:= 9,
    e_CX1100_NaviSwitch_RIGHT 		:= 8,
    e_CX1100_NaviSwitch_BOTTOMRIGHT 	:= 10,
    e_CX1100_NaviSwitch_BOTTOM 		:= 2,
    e_CX1100_NaviSwitch_BOTTOMLEFT 	:= 6,
    e_CX1100_NaviSwitch_LEFT 		:= 4,
    e_CX1100_NaviSwitch_TOPLEFT 	:= 5,

    (* clockwise in 45 degree steps with middle switch pressed *)
    e_CX1100_NaviSwitch_MIDDLE_TOP 		:= 17,
    e_CX1100_NaviSwitch_MIDDLE_TOPRIGHT		:= 25,
    e_CX1100_NaviSwitch_MIDDLE_RIGHT		:= 24,
    e_CX1100_NaviSwitch_MIDDLE_BOTTOMRIGHT 	:= 26,
    e_CX1100_NaviSwitch_MIDDLE_BOTTOM		:= 18,
    e_CX1100_NaviSwitch_MIDDLE_BOTTOMLEFT 	:= 22,
    e_CX1100_NaviSwitch_MIDDLE_LEFT		:= 20,
    e_CX1100_NaviSwitch_MIDDLE_TOPLEFT		:= 21
END_VAR

除了在枚举（f.i. 11）里定义的值，在线模式(f.i. "*** INVALID: 11 ***")其它的值描述成"*** INVALID: value ***" 。函数F_CXNaviSwitch返回无效值(f.i. 11)。


FUNCTION_BLOCK FB_CxGetDeviceIdentification

功能块 FB_CxGetDeviceIdentification 可以用来获取一个CX-设备的设备标识。

VAR_INPUT

VAR_INPUT
    bExecute 		: BOOL;
    tTimeout 		: TIME;
END_VAR

bExecute : 命令在上升沿被执行。

tTimeout : 暂停以取消函数调用。

VAR_OUTPUT

VAR_OUTPUT
    bBusy 		: BOOL;
    bError 		: BOOL;
    nErrorID 		: UDINT;
    stDevIdent 	: ST_CxDeviceIdentification;
END_VAR

bBusy : 从CX -设备读取数据。
如果 bBusy = FALSE and bError = FALSE，那么数据会被存储在stDevIdent 里

bError : 在任何错误下都为真。

nErrorID : 如果bErr为真，那么含有错误的id。

stDevIdent : 包含读取数据，参见 ST_CxDeviceIdentification。


FUNCTION_BLOCK FB_CXSetTextDisplay

功能块FB_CXSetTextDisplay 可以用来发送文本信息到CX1100两行显示器。

VAR_INPUT

VAR_INPUT
    bExecute 		: BOOL;
    nDevID 		: UDINT;
    nMode 		: E_CX1100_DisplayModes;
    stLine 		: STRING(20);
    nCursorPos	: DWORD;
END_VAR

bExecute : 在上升沿执行指令。

nDevID : CX1100 设备序列号。

nMode : 模转换器 (请参见枚举)

stLine : 20个字符的字符串。此字符串将与相应的命令一起显示。

nCursorPos : 光标位置。该字符串从这个位置开始被写入。

VAR_OUTPUT

VAR_OUTPUT
    bBusy 		: BOOL;
    bErr 		: BOOL;
    nErrorID 		: UDINT;
END_VAR

bBusy : 命令正在通过ADS传送。bBusy保持为真，然而没有接受新的命令。

bErr : 任何错误时，都变为真。

nErrorID : 如果bErr 为TRUE，那么含有错误的序列号。

E_CX1000_DisplayModes :

E_CX1000_DisplayModes : (
e_CX1100_DisplayNoAction := 0,
e_CX1100_DisplayOn := 1,
e_CX1100_DisplayOff,
e_CX1100_CursorOn,
e_CX1100_CursorOff,
e_CX1100_CursorBlinkOn,
e_CX1100_CursorBlinkOff,
e_CX1100_BackLightOn,
e_CX1100_BackLightOff,
e_CX1100_ClearDisplay,
e_CX1100_WriteLine1,
e_CX1100_WriteLine2
);

e_CX1000_DisplayNoAction : 不采取行动。

e_CX1000_DisplayOn : 开启显示。

e_CX1000_DisplayOff : 关闭显示。

e_CX1000_CursorOn : 开启光标。

e_CX1000_CursorOff : 关闭光标。

e_CX1000_CursorBlinkOn : 开启光标闪烁。

e_CX1000_CursorBlinkOff : 关闭光标闪烁。

e_CX1000_BackLightOn : 开启背景灯开。

e_CX1000_BackLightOff : 关闭背景灯光。

e_CX1000_ClearDisplay : 清除显示。

e_CX1000_WriteLine1 : 写入线1。

e_CX1000_WriteLine2 : 写入线2。


FUNCTION_BLOCK FB_CXSimpleUps

功能块FB_CXSimpleUps 可以用在CX1000或 CX1020里处理PLC的不间断电源 CX1190-UPS模块。在这种情况下，TwinCAT系统管理器中的UPS设置必须停用。

VAR_INPUT

VAR_INPUT
    bDIPDisable	: BOOL;
    iDischargeLevel	: USINT;
    tDelay		: TIME;
END_VAR

bDIPDisable :如果为TRUE，那么UPS的'1 -2-3 .. 8-9-0开关取向被忽略，在这种情况下用iDischargeLevel代替。

iDischargeLevel : 流量开关等级: 0 = 100% (最大流量), 9 = 90%, 8 = 80%, ..., 2 = 20%, 1 = 10% (最小流量)。

tDelay : 持续时间，即关机之前执行的时间。这段时间是用来克服在没有关机时的短期停电（长达10秒）。
一旦持有时间已过，FB的持有期结束，并内部再等待2.5秒。
如果届时电源恢复，那么FB继续正常运行模式，否则执行powerfail关机。
如果在关机期间或之后电源恢复，那么在UPS放电并充电后CX 重新启动。

VAR_OUTPUT

VAR_OUTPUT
    bPowerFailure	: BOOL;
    bShutdownActive	: BOOL;
    bUpsReady		: BOOL;
    b24VInOK		: BOOL;
    bHolding		: BOOL;
    tTimeUntilShutdown	: TIME;
    eUpsState		: E_UPS_STATE;
END_VAR

bPowerFailure : 如果检测到电源故障则变为FALSE，如果电源供应恢复则变为TRUE。

bShutdownActive : 如果正在执行停止或关机，则变为TRUE。

bUpsReady : 如果UPS提供电压，则变为TRUE。

b24VInOK : 如果用24V电源供应UPS则变为TRUE。

bHolding : 如果检测到电源故障，并且持有时间还没有结束则为TRUE。

tTimeUntilShotdown : 显示时间直到电源故障后系统关闭。

eUpsState :显示UPS的状态 [未定义 | 正在充电 | 已充电的 | 放点 | 放电重启| 输出断开 | 过载].

VAR_CONFIG

VAR_CONFIG
    Ii24VState AT %I* 		: BYTE;
    IiChargeState AT %I* 	: USINT;
    QiControl AT %Q* 		: BYTE;
    QiDIPControl AT %Q* 	: USINT;
END_VAR

Ii24VState : 需要连接到 '24V State'输入，参见上述图片。

IiChargeState : 需要连接到'Charge State'输入，参见上述图片。

QiControl : 需要连接到 'Contol'输出，参见上述图片。

QiDIPControl : 需要连接到'DIP Ctrl'输出，参见上述图片。


TYPE ST_CxDeviceIdentification

TwinCAT PLC Library: CX系统

TYPE ST_CX_ProfilerStruct

TYPE ST_CxDeviceIdentification :
STRUCT
strTargetType       :
STRING(20);
strHardwareModel    : STRING(10);
strHardwareSerialNo : STRING(12);
strHardwareVersion  : STRING(4);
strHardwareDate     : STRING(10);
strHardwareCPU      : STRING(10);

strImageDevice      : STRING(20);
strImageVersion     : STRING(10);
strImageLevel       :
STRING(10);
strImageOsName      : STRING(20);
strImageOsVersion   : STRING(8);

strTwinCATVersion   : STRING(4);
strTwinCATRevision  : STRING(4);
strTwinCATBuild     : STRING(8);
strTwinCATLevel     : STRING(20);
strAmsNetId         :
STRING(23);
END_STRUCT
END_TYPE

strTargetType : 对象如： 'CX1000-CE', ....的类型。

strHardwareModel : 硬件模型，如： '1001'。

strHardwareSerialNo : 硬件序列号，如：'123'。

strHardwareVersion : 硬件版本，如：'1.7'。

strHardwareDate : 硬件生产为日期，如： '18.8.06'。

strHardwareCPU : 硬件CPU的体系结构，如：'INTELx86', 'ARM', 'UNKNOWN' or '' (空字符串)。

strImageDevice : 软件平台，如：'CX1000', ....

strImageVersion : 软件平台的版本，如： '2.15'。

strImageLevel : 软件平台的级别，如： 'HMI'。

strImageOsName : 操作系统的名称，如： 'Windows CE'。

strImageOsVersion :操作系统的版本如：'5.0'。

strTwinCATVersion : TwinCAT 版本，如：为TwinCAT 2.10.1307: '2'。

strTwinCATRevision : TwinCAT 版本，如：为TwinCAT 2.10.1307: '10'。

strTwinCATBuild : TwinCAT Build，如：为TwinCAT 2.10.1307: '1307'。

strTwinCATLevel : 注册的 TwinCAT 等级，如：'PLC', 'NC-PTP', 'NC-I', ....

strAmsNetId : TwinCAT AMS-NetID，如：'5.0.252.31.1.1'。


TYPE ST_CX_ProfilerStruct

TYPE ST_CX1000_ProfilerStruct:
STRUCT
   dwLastExecTime     :DWORD;
   dwMinExecTime      :DWORD;
   dwMaxExecTime      :DWORD;
   dwAverageExecTime  :DWORD;
   dwMeasureCycle     :DWORD;
END_STRUCT
END_TYPE

dwLastExecTime: 上次执行时间的测量值，精确到µs。

dwMinExecTime: 最小执行时间，精确到µs。

dwMaxExecTime: 最大执行时间，精确到µs。

dwAverageExecTime: 前100次测量的平均执行时间，精确到µs。

dwMeasureCycle: 已测周期数。