如何通过TSI获取工艺对象的报警代码及信息

n

1概述n

在配置了StartTechnologicalFaultTask全局响应的情况下,一旦产生工艺对象报警SIMOTION控制器会自动调用TechnologicalFaultTask,执行任务中分配的程序。未决报警的代码及工艺对象触发的报警在此任务中被扫描。通过任务开始信息(TSI),信息可被传到 TechnologicalFaultTask中。可以在TechnologicalFaultTask中添加程序以读取报警代码及信息并将它们传送给高一级控制器以做报警评估,用户也可根据需要编写报警处理的相关程序。n

注意:如果在TechnologicalFaultTask中未添加任何程序,任务被报警调用后会造成CPU进入停机模式。n

在TechnologicalFaultTask 中,可传送下述参数,以用于报警评估:n

· TSI#startTime → 报警被触发的时间n

· TSI#alarmNumber → 报警代码n

· TSI#toInst → 触发报警的工艺对象名称(如:Axis_1)。n

2 TSI介绍

TSI是Task Start Information的缩写,当由于工艺对象报警时系统会触发TechnologicalFaultTask任务,在此任务中编程可以得到相关的任务开始信息,如哪个工艺对象在什么时间报警代码是多少等,可得到TSI的详细说明如下表所示:n

TSI

数据类型

说明

TSI#startTime

DT

任务开始的时间

TSI#currentTaskId

StructTaskId

任务的TaskId

TSI#cycleTime

TIME

任务配置的循环时间(= 0, 由于任务是顺序执行的)

TSI#dwuser_1

DWORD

内部预留

TSI#dwuser_2

DWORD

内部预留

TSI#alarmNumber

DINT

触发报警的代码 (见SIMOTION Alarms Diagnostics 手册中的描述)n

在报警信息中的参数输出在 TSI#alarmP1_DINT TSI#alarmP5_LREAL中 (如. TSI#alarmP3_UDINT 表示参数3,数据类型为 UDINT).

TSI#toInst

ANYOBJECT

产生错误的TO 背景数据,可用AnyObject_to_Object功能块进行转换。

TSI#commandId.low

UDINT

触发命令的Commandld (低位)

TSI#commandId.high

UDINT

触发命令的Commandld (高位)

TSI#alarmP1_DINTn

TSI#alarmP1_UDINTn

TSI#alarmP1_LREAL

DINTn

UDINTn

LREAL

触发的报警信息的参数1 到 5的数据类型。n

示例:TSI#alarmP3_UDINT c包含参数 3,数据类型为 UDINT。n

可从SIMOTION Alarms Diagnostics 手册中获得报警有效参数的描述。参数的状态代码及数据类型使用的语法如法:n

/n/%An

表示:n

· /n/ : 参数号n

  • %A : 数据类型的缩写
  • %d: DINTn
  • %X: UDINTn
  • %lf : LREAL

示例: /3/%X表示参数 3 数据类型为 UDINT 。

TSI#alarmP2_DINTn

TSI#alarmP2_UDINTn

TSI#alarmP2_LREAL

DINTn

UDINTn

LREAL

TSI#alarmP3_DINTn

TSI#alarmP3_UDINTn

TSI#alarmP3_LREAL

DINTn

UDINTn

LREAL

TSI#alarmP4_DINTn

TSI#alarmP4_UDINTn

TSI#alarmP4_LREAL

DINTn

UDINTn

LREAL

TSI#alarmP5_DINTn

TSI#alarmP5_UDINTn

TSI#alarmP5_LREAL

DINTn

UDINTn

LREAL

3编程示例

3.1 将工艺报警信息保存至数组中

下述程序将出现的工艺报警信息的报警代码、触发时间及工艺对象名称存入“gasAlarmList”中,将之前存贮的报警信息在数组中向上移动,当前报警信息存入数组gasAlarmList[0]中。n

INTERFACEn

PROGRAM PROGTechFault;n

// ----------- Device Global Constants -------------------------------n

VAR_GLOBAL CONSTANTn

giMAX_NR_OF_ALARM_LIST :INT := 15; //Maximum element in alarm listn

END_VARn

// ----------- Types -------------------------------------------------n

TYPEn

StructAlarm : STRUCTn

iAlarmNumber : DINT; // Alarmnumbern

dtStartTime : DT; //n

sObject : ANYOBJECT;n

END_STRUCT;n

END_TYPEn

// ----------- Device Global Variables -------------------------------n

VAR_GLOBALn

giTechFaultCounter : INT; // counts all technological errorsn

// FIFO with Alarm informationsn

gasAlarmList : ARRAY[0..giMAX_NR_OF_ALARM_LIST] OF StructAlarm;n

END_VARn

END_INTERFACEn

IMPLEMENTATIONn

PROGRAM PROGTechFaultn

VARn

iHelp : INT;n

iToType : INT;n

iAlarmNumber : INT;n

END_VARn

// shift alarm list ----------------------------------------------n

iHelp := giMAX_NR_OF_ALARM_LIST;n

REPEATn

gasAlarmList[iHelp] := gasAlarmList[iHelp-1];n

iHelp := iHelp - 1;n

UNTIL iHelp = 0 END_REPEAT;n

// insert new alarm in list --------------------------------------n

gasAlarmList[0].iAlarmNumber := TSI#AlarmNumber;n

gasAlarmList[0].dtStartTime := TSI#StartTime;n

gasAlarmList[0].sObject := TSI#toInst;n

END_PROGRAMn

END_IMPLEMENTATIONn

3.2 将Axis_1的每次报警30002进行计数

将Axis_1的每次报警30002进行计数,并且自动确认此报警信息。n

INTERFACEn

USEPACKAGE nCAM;n

PROGRAM TO_AlarmProg;n

END_INTERFACEn

IMPLEMENTATIONn

PROGRAM TO_AlarmProgn

VARn

s_i_Count : INT;n

s_i_RetVal: DINT;n

END_VAR;n

IF (TSI#alarmNumber = 30002) AND (TSI#toInst = Axis_1) THENn

s_i_Count:= s_i_Count + 1;n

// Acknowledge specific TO alarm n

s_i_RetVal := _resetAxisError(axis:=Axis_1,n

errorResetMode:=SPECIFIC_ERROR,n

errorNumber:=30002);n

END_IF;n

END_PROGRAMn

END_IMPLEMENTATIONn
n

如果您对该文档有任何建议,请将您的宝贵建议提交至www.4008104288.com.cn

驱动技术下载中心http://www.ad.siemens.com.cn/download/DocList.aspx?TypeId=0&CatFirst=85 n

驱动技术全球技术资源http://support.automation.siemens.com/CN/view/zh/10803928/130000

找答案驱动技术版区:http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1038 n

注意事项

应用示例与所示电路、设备及任何可能结果没有必然联系,并不完全相关。应用示例不表示客户的具体解决方案。它们仅对典型应用提供支持。用户负责确保所述产品的正确使用。这些应用示例不能免除用户在确保安全、专业使用、安装、操作和维护设备方面的责任。当使用这些应用示例时,应意识到西门子不对在所述责任条款范围之外的任何损坏/索赔承担责任。我们保留随时修改这些应用示例的权利,恕不另行通知。如果这些应用示例与其它西门子出版物(例如,目录)给出的建议不同,则以其它文档的内容为准。n

声明

我们已核对过本手册的内容与所描述的硬件和软件相符。由于差错难以完全避免,我们不能保证完全一致。我们会经常对手册中的数据进行检查,并在后续的版本中进行必要的更正。欢迎您提出宝贵意见。n

版权© 西门子(中国)有限公司2001-2013 版权保留n

复制、传播或者使用该文件或文件内容必须经过权利人书面明确同意。侵权者将承担权利人的全部损失。权利人保留一切权利,包括复制、发行,以及改编、汇编的权利。

西门子(中国)有限公司

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc329180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论