版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ignition由InductiveAutomation:Ignition报警与事件处理技术教程1Ignition报警系统概览1.1报警系统架构在Ignition中,报警系统是基于事件驱动的架构设计。它由多个组件构成,包括报警定义、报警处理器、报警客户端和报警历史数据库。这些组件协同工作,确保从数据采集到报警通知的整个流程高效且准确。报警定义:用户可以定义各种报警规则,包括触发条件、报警级别和通知方式。这些规则基于Ignition的数据点和事件进行配置。报警处理器:负责监控数据点和事件,当满足报警规则时,触发报警。报警客户端:用于显示实时报警信息,可以是Ignition的Web客户端或移动设备上的应用程序。报警历史数据库:存储所有报警事件的历史记录,便于后续分析和报告生成。1.2报警类型与级别Ignition支持多种报警类型,包括但不限于:状态报警:基于数据点的状态变化触发。数值报警:基于数据点的数值超出预设范围触发。事件报警:基于特定事件的发生触发。报警级别通常分为:信息:用于记录系统状态,不影响正常操作。警告:表示潜在问题,需要关注但不紧急。严重:表示需要立即处理的严重问题。紧急:表示系统处于危险状态,需要立即采取行动。1.3报警触发机制Ignition的报警触发机制基于事件监听和条件评估。以下是一个使用Ignition脚本语言(Groovy)定义报警规则的示例://定义报警规则
defalarmRule={
//获取数据点
defdataPoint=project.data.get("MyDataPoint")
//检查数据点的值
if(dataPoint.value>100){
//触发严重级别的报警
project.alarms.createAlarm("HighValueAlarm","MyDataPointistoohigh","SEVERE")
}
}
//注册报警规则
project.eventHandlers.register("MyAlarmRule",alarmRule)1.3.1示例解释定义报警规则:使用Groovy脚本定义一个函数alarmRule,该函数检查名为MyDataPoint的数据点的值。条件评估:如果MyDataPoint的值大于100,则触发报警。触发报警:通过调用project.alarms.createAlarm方法,创建一个名为HighValueAlarm的报警,描述为MyDataPointistoohigh,级别为SEVERE。注册规则:使用project.eventHandlers.register方法注册报警规则,使其在Ignition系统中生效。通过上述机制,Ignition能够实时监控数据点和事件,及时触发报警,确保操作人员能够迅速响应系统状态变化,有效预防和处理潜在问题。本教程详细介绍了Ignition报警系统的架构、报警类型与级别,以及报警触发机制,并通过一个Groovy脚本示例展示了如何定义和触发报警。这为理解和应用Ignition的报警功能提供了基础,有助于提高工业自动化系统的监控效率和响应速度。2Ignition报警与事件处理教程2.1配置报警2.1.1创建报警条件在Ignition中,创建报警条件是报警系统的核心。这涉及到定义何时触发报警的规则。Ignition使用强大的表达式语言,允许用户基于各种数据点和条件来创建复杂的报警规则。示例:基于温度数据点创建报警假设我们有一个温度数据点TemperatureSensor,我们想要创建一个报警,当温度超过30°C时触发。//创建报警条件
ExpressionalarmCondition=newExpression("TemperatureSensor>30");在Ignition中,这通常通过图形界面完成,但也可以通过脚本语言如Java来实现。上述代码创建了一个表达式,该表达式检查TemperatureSensor数据点的值是否大于30。2.1.2设置报警动作报警动作定义了当报警条件满足时,系统应执行的操作。这可以包括记录事件、发送通知、执行脚本等。示例:记录报警事件当温度报警触发时,我们可能想要记录这个事件,包括时间戳和报警的详细信息。//设置报警动作:记录事件
AlarmActionlogAction=newLogAlarmAction();
logAction.setLogToHistory(true);
logAction.setLogToEventLog(true);上述代码创建了一个LogAlarmAction对象,配置了它将报警记录到历史和事件日志中。2.1.3配置报警通知报警通知允许系统在报警触发时通知相关人员。这可以通过电子邮件、短信、或系统内的消息等方式实现。示例:通过电子邮件发送报警通知假设我们想要在温度报警触发时,通过电子邮件通知维护团队。//配置报警通知:电子邮件通知
AlarmActionemailAction=newEmailAlarmAction();
emailAction.setRecipients("maintenance@");
emailAction.setSubject("TemperatureAlarmTriggered");
emailAction.setBody("Thetemperaturehasexceededthelimit.Pleasecheckthesystem.");这段代码创建了一个EmailAlarmAction对象,设置了接收者、邮件主题和邮件正文。当报警条件满足时,Ignition将使用这些设置发送电子邮件。2.2综合示例:配置温度报警下面是一个综合示例,展示了如何在Ignition中配置一个温度报警,包括创建条件、设置动作和配置通知。//定义报警条件
ExpressionalarmCondition=newExpression("TemperatureSensor>30");
//创建报警
Alarmalarm=newAlarm("TemperatureAlarm");
alarm.setCondition(alarmCondition);
//设置报警动作:记录事件
AlarmActionlogAction=newLogAlarmAction();
logAction.setLogToHistory(true);
logAction.setLogToEventLog(true);
alarm.addAction(logAction);
//配置报警通知:电子邮件通知
AlarmActionemailAction=newEmailAlarmAction();
emailAction.setRecipients("maintenance@");
emailAction.setSubject("TemperatureAlarmTriggered");
emailAction.setBody("Thetemperaturehasexceededthelimit.Pleasecheckthesystem.");
alarm.addAction(emailAction);
//应用报警配置
AlarmManageralarmManager=project.getAlarmManager();
alarmManager.addAlarm(alarm);在这个示例中,我们首先定义了报警条件,然后创建了一个报警对象,并将条件设置到该对象中。接着,我们配置了两个报警动作:一个用于记录事件,另一个用于发送电子邮件通知。最后,我们将报警添加到Ignition的报警管理器中,使其生效。通过上述步骤,我们可以有效地在Ignition中配置报警,确保系统在特定条件下能够及时响应并通知相关人员,从而提高工厂的运营效率和安全性。3事件处理基础3.1事件与脚本绑定在Ignition中,事件处理是自动化系统的核心功能之一,它允许你响应系统中的各种事件。事件可以是数据变化、用户操作、定时任务等。脚本绑定是将事件与特定的脚本代码相关联的过程,这样当事件发生时,Ignition就会执行相应的脚本。3.1.1示例:数据变化事件绑定假设我们有一个温度传感器,其数据点ID为TemperatureSensor1。我们想要在温度超过设定阈值时发送警报。以下是如何在Ignition中设置数据变化事件绑定的步骤:打开IgnitionDesigner。转到数据标签页。选择TemperatureSensor1数据点。在数据点属性中,找到事件处理部分。选择数据变化事件。在脚本绑定字段中,输入以下脚本://当温度超过30度时发送警报
if(event.value>30){
varalarm=newmon.alarming.Alarm();
alarm.setSeverity(mon.alarming.AlarmSeverity.MINOR);
alarm.setMessage("温度传感器1的温度超过30度");
alarm.setSource("TemperatureSensor1");
alarm.setTimestamp(newDate());
alarm.send();
}3.1.2解释event.value:这是事件触发时数据点的当前值。Alarm:这是Ignition中用于创建警报的类。setSeverity:设置警报的严重性等级。setMessage:设置警报的描述信息。setSource:设置警报的来源,通常是触发事件的数据点。setTimestamp:设置警报的时间戳。send:发送警报。3.2事件触发器类型Ignition支持多种事件触发器类型,每种类型都有其特定的用途。以下是一些常见的事件触发器类型:数据变化:当数据点的值发生变化时触发。定时器:在特定的时间间隔或特定时间点触发。用户界面:当用户与界面元素(如按钮、文本框)交互时触发。系统事件:响应系统级事件,如Ignition启动或关闭。3.2.1示例:定时器事件触发器假设我们需要每5分钟执行一次数据备份。以下是如何设置定时器事件触发器的步骤:在IgnitionDesigner中,转到脚本标签页。创建一个新的脚本。在脚本中,使用Timer类来设置定时器事件://每5分钟执行一次数据备份
vartimer=newmon.script.builtin.Timer();
timer.setInterval(5*60*1000);//设置间隔为5分钟
timer.setScript("DataBackupScript");//设置要执行的脚本名称
timer.start();3.2.2解释Timer:这是Ignition中用于创建定时器的类。setInterval:设置定时器的执行间隔,单位为毫秒。setScript:设置定时器触发时要执行的脚本名称。start:启动定时器。3.3编写事件处理脚本编写事件处理脚本时,重要的是要确保脚本能够正确响应事件,并且在执行时不会影响系统的稳定性和性能。以下是一些编写事件处理脚本的建议:使用事件对象:事件对象提供了关于触发事件的信息,如事件类型、时间戳、数据点ID等。确保你的脚本能够正确地使用事件对象。异常处理:在脚本中包含异常处理逻辑,以防止脚本执行失败导致系统不稳定。性能优化:避免在事件处理脚本中执行耗时的操作,如大量数据读写。如果需要执行耗时操作,考虑使用异步处理或后台任务。3.3.1示例:用户界面事件处理脚本假设我们有一个按钮,当用户点击时,需要显示一个弹出窗口。以下是如何编写用户界面事件处理脚本的示例://当按钮被点击时显示弹出窗口
event.source.showPopup("AlertPopup","温度传感器1的温度超过30度","确认");3.3.2解释event.source:这是触发事件的界面元素。showPopup:这是用于显示弹出窗口的方法。AlertPopup:这是弹出窗口的名称。"温度传感器1的温度超过30度":这是弹出窗口中显示的警报信息。"确认":这是弹出窗口中的按钮标签。通过以上示例和解释,你可以开始在Ignition中设置和编写事件处理脚本,以响应各种事件并执行相应的操作。4高级报警管理4.1报警历史与趋势分析在工业自动化系统中,报警历史记录是监控和维护设备健康、生产效率的关键。Ignition提供了强大的工具来管理和分析报警历史。通过Ignition的报警历史功能,用户可以记录所有报警的发生时间、类型、状态和相关数据,以便于后续的分析和报告生成。4.1.1实现原理Ignition使用数据库来存储报警历史,可以是SQLServer、MySQL或其他兼容的数据库系统。每当系统中产生报警时,Ignition会自动将报警信息记录到数据库中,包括报警的触发时间、恢复时间、报警级别、报警描述、关联的设备或过程变量等。4.1.2数据样例假设我们有以下报警历史数据:AlarmIDTimestampSeverityDescriptionDeviceID12023-01-0108:00Critical温度过高D00122023-01-0108:05Warning压力异常D00232023-01-0108:10Info设备重启D0014.1.3代码示例使用Ignition的SQL脚本功能,我们可以查询特定设备的报警历史:--SQL查询示例
SELECTTimestamp,Severity,Description
FROMAlarms
WHEREDeviceID='D001'
ORDERBYTimestampDESC;此查询将返回设备D001的所有报警记录,按时间降序排列。4.2报警抑制与过滤在复杂的工业环境中,频繁的报警可能会导致操作员的注意力分散,降低效率。因此,有效的报警抑制和过滤机制是必要的,以确保只有重要的报警被显示和处理。4.2.1实现原理Ignition允许用户设置报警抑制规则,这些规则可以基于时间、设备状态、报警类型等条件。例如,如果一个设备在维护期间,可以设置规则来抑制所有来自该设备的报警,直到维护完成。4.2.2数据样例假设我们有以下报警抑制规则:RuleIDDeviceIDStartTimeEndTimeAlarmType1D0012023-01-0109:002023-01-0110:00Critical2D0022023-01-0109:302023-01-0111:30Warning4.2.3代码示例使用Ignition的脚本功能,我们可以编写一个脚本来检查当前时间是否在报警抑制规则的时间范围内://Groovy脚本示例
defcurrentTimestamp=newDate().format("yyyy-MM-ddHH:mm")
defrule=SQL("SELECT*FROMAlarmSuppressionRulesWHEREDeviceID='D001'ANDcurrentTimestampBETWEENStartTimeANDEndTime")
if(rule.size()>0){
//抑制报警
("报警被抑制,设备D001正在维护中。")
}else{
//允许报警
("设备D001的报警未被抑制。")
}4.3报警确认与清除报警确认和清除是确保报警系统有效性的关键步骤。操作员需要能够确认报警,表明他们已经注意到并开始处理。一旦问题解决,报警应该被清除,以避免重复显示。4.3.1实现原理Ignition的报警确认机制通常通过用户界面实现,操作员在看到报警后,可以通过点击确认按钮来标记报警为已确认状态。报警清除则需要在问题解决后,通过系统或操作员手动操作来实现。4.3.2数据样例假设我们有以下报警确认和清除的记录:AlarmIDTimestampSeverityDescriptionDeviceIDAcknowledgedAckTimestampClearedClearTimestamp12023-01-0108:00Critical温度过高D001true2023-01-0108:05true2023-01-0108:1522023-01-0108:05Warning压力异常D002falsenullfalsenull4.3.3代码示例使用Ignition的脚本功能,我们可以编写一个脚本来确认和清除报警://Groovy脚本示例
defalarmID=1
defalarm=SQL("SELECT*FROMAlarmsWHEREAlarmID=?",[alarmID])
if(alarm.size()>0){
if(!alarm[0].Acknowledged){
//确认报警
SQL("UPDATEAlarmsSETAcknowledged=true,AckTimestamp=?WHEREAlarmID=?",[newDate(),alarmID])
("报警ID${alarmID}已被确认。")
}
if(alarm[0].Severity!='Critical'&&!alarm[0].Cleared){
//清除报警
SQL("UPDATEAlarmsSETCleared=true,ClearTimestamp=?WHEREAlarmID=?",[newDate(),alarmID])
("报警ID${alarmID}已被清除。")
}
}以上脚本首先查询特定ID的报警,然后检查是否已被确认。如果未确认,则更新数据库以标记报警为已确认状态。接着,如果报警的严重性不是Critical且未被清除,脚本将清除报警。5事件驱动的自动化5.1自动化工作流设计在工业自动化领域,事件驱动的自动化工作流设计是实现高效生产管理和实时响应的关键。IgnitionbyInductiveAutomation提供了强大的工具,允许用户基于特定事件触发自动化流程,从而减少人工干预,提高生产效率和准确性。5.1.1原理事件驱动的自动化依赖于Ignition的事件处理引擎,该引擎可以监听各种事件,如设备状态变化、数据阈值触发、用户操作等。一旦检测到预定义的事件,系统将自动执行一系列预设的动作,如发送警报、启动流程、更新数据库等。5.1.2内容事件定义:在Ignition中,首先需要定义事件,这包括事件的类型、触发条件和事件的优先级。工作流设计:设计自动化工作流,包括事件触发后的处理逻辑,如条件判断、动作执行顺序等。动作执行:配置具体动作,如发送电子邮件、记录日志、控制设备等。5.1.3示例假设我们有一个温度监控系统,当温度超过设定阈值时,需要自动发送警报并记录事件。#定义事件监听器
deftemperature_monitor():
#获取温度数据
temperature=get_temperature_data()
#检查温度是否超过阈值
iftemperature>100:
#发送警报
send_alert("Temperatureexceededthreshold!")
#记录事件
log_event("Temperaturealert",temperature)
#Ignition事件处理引擎调用
Ignition.event_engine.add_listener(temperature_monitor,"TemperatureSensor")在上述代码中,temperature_monitor函数监听温度传感器的数据,当温度超过100度时,调用send_alert和log_event函数执行相应的动作。5.2事件驱动的报表生成事件驱动的报表生成是自动化系统中的一项重要功能,它允许系统在特定事件发生时自动创建和发送报表,从而提供实时的生产数据和分析结果。5.2.1原理Ignition的报表模块可以配置为在事件触发时自动生成报表。这包括选择报表模板、定义数据源和设置触发条件。5.2.2内容报表模板设计:创建报表模板,定义报表的布局和样式。数据源配置:指定报表的数据来源,如数据库、实时数据点等。事件触发配置:设置报表生成的触发条件,如每天固定时间、特定事件发生时等。5.2.3示例假设我们需要在每天凌晨自动发送前一天的生产数据报表。#定义报表生成函数
defgenerate_daily_production_report():
#获取前一天的生产数据
production_data=get_production_data_yesterday()
#生成报表
report=create_report(production_data,"DailyProductionReportTemplate")
#发送报表
send_report(report,"daily_production_report@")
#Ignition事件处理引擎调用
Ignition.event_engine.add_listener(generate_daily_production_report,"DailyReportTrigger",{"hour":0,"minute":0})在本例中,generate_daily_production_report函数在每天凌晨被调用,收集前一天的生产数据,生成报表,并通过电子邮件发送。5.3事件与外部系统集成事件与外部系统集成是实现跨系统自动化和数据交换的关键。Ignition允许事件处理逻辑与外部系统如ERP、SCM等进行通信,从而实现更广泛的功能和集成。5.3.1原理Ignition的事件处理引擎可以配置为在事件发生时调用外部系统的API,发送数据或接收指令。5.3.2内容API配置:配置Ignition与外部系统之间的API通信,包括认证、数据格式等。事件触发的API调用:定义在特定事件发生时调用的API,以及传递的数据参数。数据交换:确保数据在Ignition和外部系统之间的正确交换和处理。5.3.3示例假设我们需要在设备故障时自动通知ERP系统进行维护调度。#定义设备故障通知函数
defnotify_erp_on_device_failure(device_id):
#构建API请求
api_url="/api/maintenance_schedule"
headers={"Authorization":"BearerYOUR_ACCESS_TOKEN"}
data={"device_id":device_id,"status":"failure"}
#发送API请求
response=requests.post(api_url,headers=headers,json=data)
#检查响应
ifresponse.status_code==200:
log_event("ERPnotifiedformaintenance",device_id)
else:
log_error("FailedtonotifyERP",response.text)
#Ignition事件处理引擎调用
Ignition.event_engine.add_listener(notify_erp_on_device_failure,"DeviceFailureEvent")在本例中,notify_erp_on_device_failure函数在设备故障事件发生时被调用,向ERP系统的维护调度API发送设备ID和状态,从而触发维护流程。通过上述示例,我们可以看到IgnitionbyInductiveAutomation如何通过事件驱动的自动化,实现工作流设计、报表生成和外部系统集成,从而提高工业自动化系统的效率和响应能力。6报警与事件的系统集成6.1与SCADA系统集成6.1.1原理SCADA(SupervisoryControlandDataAcquisition)系统是用于远程数据采集和控制的自动化系统,广泛应用于工业领域。在Ignition中,报警与SCADA系统的集成是通过监听数据变化、设备状态或特定事件来触发报警,从而实现对工业过程的实时监控和异常响应。Ignition提供了强大的报警管理功能,包括报警定义、报警通知、报警历史记录和报警趋势分析,这些功能可以无缝地与SCADA系统中的数据和事件相结合。6.1.2内容报警定义:在Ignition中,可以通过配置报警条件来定义报警。例如,如果某个传感器的温度超过设定阈值,可以触发一个报警。报警通知:一旦报警触发,Ignition可以自动发送通知给相关人员,如通过电子邮件、短信或移动应用推送。报警历史记录:所有触发的报警都会被记录,形成报警历史,便于后续分析和报告生成。报警趋势分析:Ignition支持对报警数据进行趋势分析,帮助识别报警模式,优化报警设置,减少误报。6.1.3示例假设我们有一个SCADA系统,监控一个工厂的温度传感器,当温度超过30°C时,我们希望在Ignition中触发一个报警。//Ignition中定义报警的示例代码
Alarmalarm=newAlarm();
alarm.setName("TemperatureAlarm");
alarm.setCategory("Temperature");
alarm.setCondition("Temperature>30");
alarm.setPriority(2);
alarm.setAcknowledged(false);
alarm.setActive(true);
alarm.setTimestamp(newDate());
//将报警添加到Ignition的报警系统
AlarmManageralarmManager=GatewayProject.getAlarmManager();
alarmManager.addAlarm(alarm);6.2与MES系统集成6.2.1原理MES(ManufacturingExecutionSystem)系统主要用于管理制造过程中的执行,包括生产调度、过程控制、质量管理和设备维护等。Ignition与MES系统的集成,主要是通过共享生产数据、状态信息和事件记录,实现生产过程的全面监控和优化。例如,当MES系统检测到生产线上的某个设备出现故障时,可以自动在Ignition中触发报警,通知相关人员进行处理。6.2.2内容数据共享:Ignition可以与MES系统实时交换数据,包括生产进度、设备状态和质量指标等。状态监控:通过MES系统,Ignition可以监控生产线的实时状态,如设备运行、停机或维护状态。事件记录:MES系统中的事件记录可以被Ignition捕获,用于生成报警或进行数据分析。6.2.3示例假设MES系统检测到设备故障,我们希望在Ignition中触发一个报警。//Ignition中定义基于MES事件的报警示例代码
Alarmalarm=newAlarm();
alarm.setName("DeviceFailureAlarm");
alarm.setCategory("Device");
alarm.setCondition("DeviceStatus=='Fault'");
alarm.setPriority(3);
alarm.setAcknowledged(false);
alarm.setActive(true);
alarm.setTimestamp(newDate());
//将报警添加到Ignition的报警系统
AlarmManageralarmManager=GatewayProject.getAlarmManager();
alarmManager.addAlarm(alarm);6.3与ERP系统集成6.3.1原理ERP(EnterpriseResourcePlanning)系统用于整合企业内部所有部门和功能的资源,包括财务、人力资源、供应链和生产管理等。Ignition与ERP系统的集成,主要是通过数据交换,将生产过程中的报警和事件信息反馈给ERP系统,用于成本控制、资源规划和决策支持。例如,当生产线上出现大量报警时,ERP系统可以自动调整生产计划,以减少损失。6.3.2内容数据交换:Ignition可以将报警和事件信息发送给ERP系统,用于生产成本分析和资源规划。决策支持:ERP系统可以基于Ignition提供的报警数据,进行实时的决策分析,如调整生产计划或资源分配。报告生成:Ignition和ERP系统可以联合生成综合报告,包括生产效率、成本控制和质量指标等。6.3.3示例假设我们需要将Ignition中的报警数据发送给ERP系统进行成本分析。//Ignition中定义报警并发送给ERP系统的示例代码
Alarmalarm=newAlarm();
alarm.setName("ProductionCostAlarm");
alarm.setCategory("Cost");
alarm.setCondition("ProductionCost>Budget");
alarm.setPriority(1);
alarm.setAcknowledged(false);
alarm.setActive(true);
alarm.setTimestamp(newDate());
//将报警数据发送给ERP系统
ERPConnectorerpConnector=GatewayProject.getERPConnector();
erpConnector.sendAlarmData(alarm);以上示例展示了如何在Ignition中定义报警,并与SCADA、MES和ERP系统进行集成,实现工业自动化和信息化的深度融合。通过这些集成,企业可以实现更高效、更智能的生产管理。7Ignition报警与事件处理:最佳实践与案例研究7.1报警管理最佳实践7.1.1原理与内容在工业自动化领域,报警管理是确保系统稳定运行和及时响应异常情况的关键。IgnitionbyInductiveAutomation提供了强大的报警管理功能,允许用户自定义报警规则,监控系统状态,并通过多种方式通知相关人员。以下是一些在Ignition中实施报警管理的最佳实践:定义清晰的报警级别:根据报警的严重程度,将其分为不同的级别,如信息、警告、严重和紧急。这有助于过滤和优先处理报警。使用报警模板:创建通用的报警模板,可以减少重复工作,确保报警信息的一致性和准确性。报警确认与清除:确保报警被确认后,系统能够自动清除或手动清除,避免报警堆积。报警历史记录:保存报警历史,用于分析和报告,帮助识别系统中的潜在问题。报警通知:通过电子邮件、短信或移动应用推送,确保关键报警能够及时通知到相关人员。7.1.2示例:创建报警规则#创建一个报警规则,监控温度传感器是否超过设定值
fromignitionimportAlarm,Tag
#定义温度传感器的Tag
temperature_tag=Tag("Tem
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新媒体内容创作提高粉丝粘性指导书
- 就新市场开拓策略的讨论函4篇范文
- 活字印刷技艺传承与创新成效评估表
- 产品退货处理流程信函(6篇)
- 跨部门合作流程商洽函8篇范文
- 环境保护公益项目设计策划指南
- 手工DIY项目实践手册
- 风险控制力考评表
- 软件项目开发与项目管理复合型人才整体绩效评定表
- 核对应收账款金额明细及账期确认函7篇范本
- 解读慢性阻塞性肺病(GOLD)指南(2026)更新要点课件
- 光伏电站运行维护规程
- THIS001-2022红外热电堆传感器
- 外墙水包砂质保合同范本
- 肢体创伤后水肿管理指南解读
- 招标代理业务管理规范与操作指南
- 旅游直播培训课件
- T/CAPA 3-2021毛发移植规范
- 急诊治疗过程中的医患沟通技巧
- 旅游客车交通安全检查
- 金属基体上的金属覆盖层 电沉积和化学沉积层 附着强度试验方法评述
评论
0/150
提交评论