TCPlcLibSUPS_Overview

TwinCAT PLC Library: SUPS

概述

这个库包含为了使用Seconds UPS的功能和功能块。 参见例子Sample_S_UPS.pro.

功能块

名称 | 描述
FB_S_UPS | 功能块用于从PLC使用Seconds UPS
FB_NT_QuickShutdown | 对于QuickShutdown，被用于FB_S_UPS.内在功能块

功能

名称 | 描述
F_GetVersionTcSUPS | 功能回复库的版本信息。

调整需要量

组件 | 版本
TwinCAT on the development PC, on the target system | 2.11 Build 1542 或更高r


FUNCTION_BLOCK FB_NT_QuickShutdown

功能块FB_NT_QuickShutdown用于不停止或者Windows操作系统立即重启PC。

Attention:注意：
 功能块FB_NT_QuickShutdown只是在功能块FB_S_UPS内部使用的。

FUNCTION_BLOCK FB_NT_QuickShutdown

VAR_INPUT

VAR_INPUT
    NETID :T_AmsNetId;
    START :BOOL;
    TMOUT :TIME := DEFAULT_ADS_TIMEOUT;
END_VAR

NETID : 该PC的AmsNetID号。

START : 上升沿触发PC快速重启

TMOUT : 超时时间。

VAR_OUTPUT

VAR_OUTPUT
    BUSY  :BOOL;
    ERR   :BOOL;
    ERRID :UDINT;
END_VAR

BUSY :QuickShutdown功能响应。

ERR : 发生错误。

ERRID : 发生错误时发送错误号。


FUNCTION_BLOCK FB_S_UPS

功能块FB_S_Ups是使用在带有Seconds UPS功能的PC上，通过UPS与PLC实现通讯。FB_S_Ups可以保存持久性数据，并且在电源出故障时执行 QuickShutdown命令。 FB_S_UPS 的 INPUTs用默认值即可。

注意 		数据丢失
Seconds UPS功能只能维持电压几秒钟。 但这点时间足以保存持久性数据。 用以持久性保存的模式必须是"SPDM_2PASS，尽管这可能带来实时性的问题。为了长期保存持久性数据，路由器内存必须足够大！

Mode eSUPS_WrPersistData_Shutdown (默认设置): 写入持久性数据并且自动执行QuickShutdown命令。

Mode eSUPS_WrPersistData_NoShutdown:只写入持久性数据，而不执行QucikShutdown命令。

Mode eSUPS_ImmediateShutdown: 立即执行QuickShutdown命令。

Mode eSUPS_CheckPowerStatus: 只有在确认电源出故障前，该功能不执行。在电源异常时功能块将等待一个tRecoverTime (10s)的时间，如果超过10秒电源恢复正常则回到PowerOK状态，否则则显示电源发生故障。 I

在电容器放电之后UPS将关闭主板，由于是独立运行的模式，所以即便是电源恢复正常，也会写入持久性数据并且执行QuickShutdown命令。T

UPS的容量太小了以至于不能对系统进行较长时间的供电。由于UPS供电而使得硬盘不能被操作，那么持久性数据必须保存到Compact Flash中。在保存完之后则执行QuickShutdown命令。

注意 		如果文件被修改时应该注意:
如果其他应用程序或者PLC仍然在电源故障时运行文件或者写入数据，那么这些文件将损坏，因为QuickShutdownIf会。

注意 		如果使用Windows XP嵌入时注意:
通过Seconds UPS功能， EWF (Enhanced Write Filter) 或者 FBWF (File Based Write Filter)必须启动为了能够确认Windows XP嵌入文件在带有Seconds UPS功能系统上的有效期。

EWF启用时，Twincat/Boot文件需要位于一个非保护的分区中。(见注册表: HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\System\BootPrjPath).

FBWF启用时，TwinCAT\Boot文件需要从保护区中分出来 (见Beckhoff FBWF Manager, Exclusion Settings).

FUNCTION_BLOCK FB_S_UPS

VAR_INPUT

VAR_INPUT
    sNetID          : T_AmsNetId := '';               (* '' = local netid *)
    iPLCPort        : UINT := AMSPORT_R0_PLC_RTS1;    (* PLC Runtime System for writing persistent data *)
    iUPSPort        : UINT := 16#4A8;                 (* Port for reading Power State of UPS, dafault 16#4A8 *)
    tTimeout        : TIME := DEFAULT_ADS_TIMEOUT;    (* ADS Timeout *)
    eUpsMode        : E_S_UPS_Mode := eSUPS_WrPersistData_Shutdown; (* UPS mode (w/wo writing persistent data, w/wo shutdown) *)
    ePersistentMode : E_PersistentMode := SPDM_2PASS; (* mode for writing persistent data *)
    tRecoverTime    : TIME := T#10s;                  (* ON time to recover from short power failure in mode eSUPS_WrPersistData_NoShutdown/eSUPS_CheckPowerStatus *)
END_VAR

sNetID : PC的AmsNetID

iPLCPort : 运行时系统PLC的端口号(AMSPORT_R0_PLC_RTS1 = 801, AMSPORT_R0_PLC_RTS2 = 811, AMSPORT_R0_PLC_RTS3 = 821, AMSPORT_R0_PLC_RTS4 = 831).

iUPSPort : 读UPS-State时的端口号 (系统默认值为16#4A8).

tTimeout : 超时执行的QuickShutdown.

eUpsMode : ,如果稳定的数据需要被写入或者一个 QuickShutdown 需要被履行，eUpsMode 定义
系统默认量是 eSUPS_WrPersistData_Shutdown, 意味着稳定值的写入，然后QuickShutdown. 参见 E_S_UPS_Mode.

ePersistentMode ：数据加密编写模式，默认值是SPDM_2PASS.

tRecoverTime : 时间将会等到一次失电之后(UPS 模式不会下降) 来回到 PowerOK.状态。
tRecoverTime需要时间略大于UPS保持时间的最大值，因为UPS将在电力被重启之后关断 。

VAR_OUTPUT

VAR_OUTPUT
    bPowerFailDetect	: BOOL;            (* TRUE while powerfailure is detected *)
    eState 		: E_S_UPS_State;   (* current ups state *)
END_VAR

bPowerFailDetect : 如果失电被检测到则显示为TRUE ; 如果供电充分则为FALSE

eState : 功能块的内在状态的值参见 E_S_UPS_State.

VAR_GLOBAL

VAR_GLOBAL
    eGlobalSUpsState : E_S_UPS_State;    (* current ups state *)
END_VAR

eGlobalUpsState : 功能块的内在状态作为全局复制eState, 值参见E_S_UPS_State.


FUNCTION F_GetVersionTcSUPS

The function returns library version info.

FUNCTION F_GetVersionTcSUPS : UINT

VAR_INPUT
    nVersionElement : INT;
END_VAR

nVersionElement : 版本元素:

  • 1 : 主设备号;
  • 2 : 此设备号;
  • 3 : 修订号;
发展环境 | 目标平台 | PLC 包含库
TwinCAT v2.11.0 | PC (i386) | TcSUPS.Lib


E_S_UPS_Mode

eSUPS_WrPersistData_Shutdown:
    Writing of persistent data and then a QuickShutdown

eSUPS_WrPersistData_NoShutdown:
    only writing of the persistent data (no QuickShutdown)

eSUPS_ImmediateShutdown:
    only QuickShutdown (no writing of persistent data)

eSUPS_CheckPowerStatus:
    only check status (neither writing of persistent data nor a QuickShutdown)


E_S_UPS_State

eSUPS_PowerOK:
    in all modes: Power supply is OK

eSUPS_PowerFailure:
    in all modes: Power supply is faulty (only shown for one PLC cycle)

eSUPS_WritePersistentData:
    in Mode eSUPS_WrPersistData_Shutdown: Writing of persistent data is active
    in Mode eSUPS_WrPersistData_NoShutdown: Writing of persistent data is active

eSUPS_QuickShutdown:
    in Mode eSUPS_WrPersistData_Shutdown: QuickShutdown is active
    in Mode eSUPS_ImmediateShutdown: QuickShutdown is active

eSUPS_WaitForRecover:
    in Mode eSUPS_WrPersistData_NoShutdown: wait for the reestablishment of the power supply
    in Mode eSUPS_CheckPowerStatus: wait for the reestablishment of the power supply

eSUPS_WaitForPowerOFF:
    in Mode eSUPS_WrPersistData_Shutdown: Wait for switching off of the PC by the UPS
    in Mode eSUPS_ImmediateShutdown: Wait for switching off of the PC by the UPS