• {{item.name}}
运动控制系统SIMOTION {{item.name}}
{{item2.name}}
更多
常问问题

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

star star star star star
5.0 分
  • 使用操作
  • 程序
  • 读取
  • 仿真
文档编号:F1006| 文档类型:常问问题| 发布时间:2024年01月22日
  • 0
  • 520
  • 861
本文介绍了SIMOTION系统中当产生工艺对象报警时,如何在TechnologicalFaultTask中添加程序,通过读取TSI来获取报警代码及信息以供高一级控制器做报警评估的实现方法,并以两个编程示例来进行说明。

1概述

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

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

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

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

·         TSI#alarmNumber → 报警代码

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

2 TSI介绍

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

TSI数据类型说明
TSI#startTimeDT任务开始的时间
TSI#currentTaskIdStructTaskId任务的TaskId
TSI#cycleTimeTIME任务配置的循环时间(= 0, 由于任务是顺序执行的)
TSI#dwuser_1DWORD内部预留
TSI#dwuser_2DWORD内部预留
TSI#alarmNumberDINT触发报警的代码 (见SIMOTION Alarms Diagnostics 手册中的描述)在报警信息中的参数输出在 TSI#alarmP1_DINT 到TSI#alarmP5_LREAL中 (如. TSI#alarmP3_UDINT 表示参数3,数据类型为 UDINT).
TSI#toInstANYOBJECT产生错误的TO 背景数据,可用AnyObject_to_Object功能块进行转换。
TSI#commandId.lowUDINT触发命令的Commandld (低位)
TSI#commandId.highUDINT触发命令的Commandld (高位)
TSI#alarmP1_DINTTSI#alarmP1_UDINTTSI#alarmP1_LREALDINTUDINTLREAL%A : 数据类型的缩写%d: DINT%X: UDINT%lf : LREAL示例: /3/%X表示参数 3 数据类型为 UDINT 。
TSI#alarmP2_DINTTSI#alarmP2_UDINTTSI#alarmP2_LREALDINTUDINTLREAL
TSI#alarmP3_DINTTSI#alarmP3_UDINTTSI#alarmP3_LREALDINTUDINTLREAL
TSI#alarmP4_DINTTSI#alarmP4_UDINTTSI#alarmP4_LREALDINTUDINTLREAL
TSI#alarmP5_DINTTSI#alarmP5_UDINTTSI#alarmP5_LREALDINTUDINTLREAL

3编程示例

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

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

INTERFACE

PROGRAM PROGTechFault;

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

 VAR_GLOBAL CONSTANT

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

 END_VAR

// ----------- Types -------------------------------------------------

   TYPE

       StructAlarm :   STRUCT

          iAlarmNumber    : DINT;         // Alarmnumber

          dtStartTime     : DT;           //

          sObject         : ANYOBJECT;

       END_STRUCT;

   END_TYPE

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

   VAR_GLOBAL

       giTechFaultCounter : INT;   // counts all technological errors

                                   // FIFO with Alarm   informations

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

   END_VAR

END_INTERFACE

IMPLEMENTATION

PROGRAM PROGTechFault

   VAR

       iHelp                      : INT;

       iToType                    : INT;

       iAlarmNumber               : INT;

  END_VAR

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

   iHelp := giMAX_NR_OF_ALARM_LIST;

   REPEAT

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

       iHelp := iHelp - 1;

   UNTIL iHelp = 0 END_REPEAT;

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

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

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

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

     

END_PROGRAM

END_IMPLEMENTATION

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

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

INTERFACE

      USEPACKAGE CAM;

      PROGRAM TO_AlarmProg;

END_INTERFACE

IMPLEMENTATION

     PROGRAM TO_AlarmProg

VAR

s_i_Count : INT;

s_i_RetVal: DINT;

END_VAR;

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

s_i_Count:= s_i_Count + 1;

   //  Acknowledge specific TO alarm  

s_i_RetVal := _resetAxisError(axis:=Axis_1,

                             errorResetMode:=SPECIFIC_ERROR,

                                   errorNumber:=30002);

END_IF;

END_PROGRAM

END_IMPLEMENTATION

如果您对该文档有任何建议,请将您的宝贵建议提交至下载中心留言板。

该文档的文档编号:F1006

附录-推荐网址

驱动技术

西门子(中国)有限公司

工业业务领域客户服务与支持中心

网站首页:www.4008104288.com.cn

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

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

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

注意事项

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

声明

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

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

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

西门子(中国)有限公司


您可以前往全球资源库查看此文档

剩余80%未阅读,请登录后下载/查看文档

  • 评论
更多
  • 分享

    扫码分享

提示
您即将前往“全球技术资源库”。
“全球技术资源库”的用户名与本地支持中心(下载中心、技术论坛、找答案、1847工业学习平台)的用户名不通用。如果需要在全球技术资源库下载文档,您需要重新登录或注册。
确定

0元领课点我

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。