1、spring batch 的命名空间
spring xml中指定batch的前缀作为命名空间。
示例:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:batch="http://www.springframework.org/schema/batch"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/batch
http://www.springframework.org/schema/batch/spring-batch.xsd">
<batch:job id="importProductsJob">
(...)
</batch:job>
</beans>
当指定batch命名空间之后,bean中的声明都需要加上batch的前缀,例如:<batch:job id="importProductsJob">
spring的命名空间的前缀可以指定任意的名称,这里采用batch作为前缀,为了方便理解。
2、spring batch XML的主要标签有:job、step、tasklet、chunk、job-repository
3、Job配置。job元素是整个配置的顶级元素,它的属性有:
a、id
b、restartable
c、incrementer
d、abstract
e、parent
f、job-repository
restartable 属性如果是false,则程序不允许重启。如果发生重启,会抛出JobRestartException异常。
文:秦史黄
01 什么是批次控制系统
批次控制系统按照字面理解可知生产过程是按照一批一批的方式进行的,英文是Batch Control System。中文也是根据这个翻译过来的。主要应用的行业有制药行业,食品饮料,精细化工和涂料行业。相信大家都有过买饮料或买药的经历,那么这些商品上面不仅会显示生产日期,有效期,同时也都会显示批号的,或者叫批次号,代表是那个批次生产出来的。如果有质量问题也便于产品的追溯和原材料溯源。批号英文一般用lot No.或者Lot Number来表示。
下面拿大家时不时都想喝点的可乐来举例,有原味的可乐,0卡路里可乐,苹果味可乐以及我最近刚刚品尝过的咖啡可乐等等。可以说是多种多样。那么针对每一个种类的可乐来讲里面的配料是不同的,咖啡味的需要往可乐里加一定比例咖啡,其他的可乐就不需要。但是水, 二氧化碳,糖以及其他的香精等原材料,但是不同类型的可乐那么原材料的比例是不一样。那这个就是配方了。不同类型的产品用不同的配方。同一个产品的配方每次生产就是一个批次,就会有一个批次号。
那么为了实现这种批次生产而部署的控制系统就是批次控制系统了。
随着社会进步,大家对新产品的需求变化非常快,尤其是现在大家追求个性,都想有自己唯一的订制化产品。所以批次生产由之前的大批量少种类逐渐向小批量多种类的方式进行转变。
批次生产中面对复杂的工艺,种类繁多的原材料,再加上产品种类繁多且多变,这时就会会大量的配方出现,并且还需要不断的创建,更新和维护。同时还需要有原材料溯源,产品溯源,批次生产报表等等需求,如果仍然采用传统的PLC控制显然是不能满足这种不断变化的需求的。这时就需要上一套批次控制系统了。
02 批次控制系统标准
批次控制早在1995年美国国家标准协会就发表了批次Batch标准了:ANSI/ISA-88。也就是大家常说的S88标准。
在标准里定义了几个标准模型如下:
Physical model 物理模型
在物理模型里定义了几个层级上图所示,具体描述如下:
Enterprise 企业层 ----商业层面的企业
site 工厂层 ---企业可能有一个或多个工厂
Area 区域层---工厂里可能有多个生产区域
上面这三个层级不是批次控制考虑的范畴,但是为了物理模型的完整性,列出来。批次控制系统涉及到的是区域往下的层级。
Cell车间层---生产区域内可能有多个车间
Unit单元 -- 在车间里可能有一个或多个生产单元,比如一个生产缸可以当做一个单元, 车间里多个单元可能还有上下游关系或者并行关系。
Equipment Module 设备模块 ---简称EM模块,一个Unit生产缸里可能会包含一个或者多个EM模块,甚至EM模块也可以包含EM模块。EM模块又称之为工艺模块,相当于执行的是一个工艺动作。
Control Module 控制模块--- 简称CM模块,控制模块,是最基础的控制单元,如一个阀门,一个泵,一个仪表,一个称重单元都可以称之为一个控制模块。同时一个CM也可以包含其他CM控制模块。
EM设备模块再解释下啊,比如在一个Unit单元生产缸里有多个工艺动作,比如需要加水,加糖,加香精,搅拌以及QA质量检测,出料都是工艺动作,这样每种类型的工艺动作可以作为一个EM设备模块。如加一定重量的水可以作为一个设备EM模块,需要控制的控制设备有生产缸进水阀门CM,出水泵CM,称重的CM以及其他的CM等等。
这样就不是单纯某个设备了,而是根据工艺的要求在一定的步骤开对应的阀门,泵并且计算重量是否达到目标,以及加完后需要计算误差值以及误差是否在容许范围内等等。这就是一个设备模块EM。
Procedural control 程序控制模型
Procedural control程序控制模块是以设备控制模块为导向的控制模块,也就是以一个个的工艺动作模块为导向的控制方式。模型如下:
程序模块模型包含四部分内容:
Procedure 总程序 ---如做可乐就是一个总程序
Unit Procedure 单元程序---- 单元程序就是做整个产品里一些部分的程序
Operation 操作---在一个单元程序里可能有一个或多个操作
Phase 阶段---每个操作里可能需要一个或者多个的工艺动作
配方类型
配方主要分为四个大类:
General Recipe 总体配方,企业级配方,没有特定的设备信息只标识是那种产品
Site Recipe 工厂配方,针对一个特定的工厂的产品配方
Master recipe 主配方,是会标识到实际调用那个设备的配方
Control Recipe 控制配置,从主配方中拷贝配方并且实际运行的配方就是控制配置。
Master Recipe主配方
在实际的工厂应用中编辑和修改最多的就是master recipe主配方,每个主配方都包含以下几个方面:
Recipe Procedure 主配方信息---每个产品包含一个主配方
Recipe Unit Procedure 单元配方---每个主配方里可能会包含多个单元配方
Recipe Operation 操作配方---每个单元里可能包含一个或者多个操作配方
Recipe Phase 单元阶段---每个操作配方里可能包含多个阶段
下面这个图应该算是S88里毕竟精髓的一个图了,从左边的流程模块然后对应为配方模型,最终在通过物理模型进行实现。
物理模型再跟PLC系统进行通讯,完成最终的设备模型控制。所以在PLC里和批次控制模型里最基础的控制单元就是Phase以及对应物理模型里的设备模块。
03 批次控制标准
与MES标准里物理模型对比
MES是Manufacturing Execution System生产执行系统的简称,和本文主题相比楼稍微有点歪,但是也有点联系,所以就放在一起加深巩固下S88模型的知识吧。MES系统执行的标准的ANSI/ISA 95标准。他在里面也定义了很多的模型,这里仅仅展示和S88批次控制相关的物理模型进行一个说明。
由上图可见,批次控制的S88标准只是定义了一个批次控制的模型,而S95的标准定义了所有的控制类型除批次控制外,还有其他的连续控制,离散控制。
这里的第2层可以理解为是SCADA监视层,第一层为PLC控制系统层,第0层为具体的现场设备层。
ISA95标准里主要是定义第三层里生产操作&控制的模型,和本文主题不太相关就不做过多阐述。放个图感兴趣的可以自己看下研究下。
同时在最新章节里还定义了第四层ERP层与第三层MES的接口部分。
跟S88里的物理模型图和对应如下所示
S88里的企业层,Site工厂层以及Area区域层对应S95标准里的第四层模型,
S88里的区域层,车间层和单元层对应S95里的第三层过程执行和操作层;
S88里的设备模块和控制模块在S95标准里还是在第2和1层。
04 S88实际应用介绍
通过S88的标准里定义的模型可以看出Phase作为一个基础的模型,在程序控制流程,配方类型和物理设备模型里是最最重要和基础的一个模块,他们几个模型之间都是通过Phase进行串联起来的。
下面拿在批次控制领域里领先的解决方案提供商Rockwell罗克韦尔的FactoryTalk Batch软件来进行一个 火锅底料 的生产来举例。
Batch Equipment Editor 设备编辑器
在FT Batch中首先有一个Equipment Editor设备编辑器,对应S88里的物理模型,可以进行Area区域编辑,Cell车间编辑,同时车间是可以基于Class类的方式进行。如创建一个火锅底料的车间类,然后还要创建一个火锅料区1。
点击下一级箭头就可以进入Unit单元的编辑,这里创建一个guo锅的单元类,然后右边实例一口guo1,guo2。如果你有多口锅就可以多创建几个即可,非常方便。
Unit再下一级就是EM设备控制模块,也就是对应配方模型和程序流程模型的Phase。Phase也可以创建为class类,然后在不同的Unit里直接实例对应的Phase即可。
如上图在火锅底料的生产中可能涉及到的EM模块有
JIAOBAN 搅拌phase
GANLANYOU 添加橄榄油phase
NIUYOU 添加牛油Phase
SHUI 加水Phase
JIARE 加热保持温度Phase
SHOUDONG 手动添加香精Phase
QA 质量检测Phase
CHULIAO 出料Phase
QINGXI 最后清洗Phase
打开任意一个EM模块如加水1可以看到每个EM模块里会包含这个Phase的所有参数和报告属性。
如SP_WEIGHT是设定添加的重量,而ACT_WEIGHT则是添加完成后实际添加的重量,DIFF_PERCENT是添加的误差百分数等等参数。同时这些参数会自动在程序中创建。工程师需要做的只是一个同步按钮操作而已。
程序和批次设备编辑器的同步操作如下,然后选择更新程序或者更新设备编辑器即可。
批次软件与PLC的通讯除了直接与AB系列的PLC进行CIP的通讯外,也可以采用OPC的方式与其他的PLC进行通讯。
同时通过设备编辑器可以快速的进行配方编辑器界面,也就是下一个小节介绍的内容。
Batch Recipe Editor 配方编辑器
通过FactoryTalk Batch Recipe Editor批次配方编辑器可以配方,这里的配方结构与S88里配方结构是一样的,这里定义的就是Master recipe主配方,然后主配方里包含一个或者多个Unit单元配方,单元配方里包含Operation Recipe操作程序配方,最后在操作配方里会包含多个Phase块。和之前在设备编辑器里定义的类是一样的,如shui--加水的Phase,NIUYOU---添加牛油Phase等等。
在配方编辑器里不仅可以顺序执行,还可以用并行执行和条件选择执行。
主配方的header头部信息,用于定义产品名称和描述,以及其他的一些描述信息。
FactoryTalk Batch View
通过FT Batch View软件可以监视创建批次生产,控制和监视批次生产状态。
可以通过右边的+号创建批次生产,然后选择具体的配方,点击OK即可。
如下图使用biantaila的配方创建了一个biantaila_20200829的批次生产,选择用GUO1的一号锅进行生产。批次大小为100%。
可以选择具体的批次进行批次的控制和监视。可以按照SFC的进行监视,也可以按照Table表的方式进行监视。
批次的运行界面以及其他的控制界面
还可以支持Phase 手动控制以及查看状态信息。
通过这个软件除了可以看这些信息外还可以看日志信息,未确认的提示信息,签名信息,报警信息等等。
上述的FactoryTalk Batch View软件里这些功能均可以通过ActiveX控件的方式嵌入到SCADA上位机中进行显示和控制。如在Rockwell的SCADA软件中进行显示的界面如下:
FT Batch的其他服务
Batch Service Manager 批次服务管理器控制批次服务器以及数据收集服务器,电子流程Web服务器的启动停止或者暂停。
FT Batch Material Editor软件提供了对原材料的管理以及储罐的管理,方便后期原材料的追溯。
FT Batch提供的报表服务可用于批次生产的分析,批次生产统计,批次生产详情,原材料使用分析以及前向和反向的追溯等等预定义的报表服务。
BatchSystemStatus这个零费用增值软件可以将批次软件的批次信息传送到PLC中进行存储,处理和使用。
05 S88在程序里的实现
在设备编辑器里编辑完成了,同时也同步完毕了,那么在Batch的设备编辑器里所有的Equipment Phase都同步到程序里。同步后处理全部放在规划的任务里所示如下:
点击此处添加图片说明文字
通过图可见Batch软件里每个Phase都在程序里对应的有一个Phase类型的程序块,为了方便调试和维护将不同的Unit放在不同的任务里。
打开加水1的块可以看到他的属性,如Equipment ID:6也是跟batch 设备管理软件里是一一对应的。
程序里shui1的标签也是跟Batch软件里的一一对应的如下图所示:
在程序里每个Phase对应一个Equipment Module,然后每个Equipment Module设备模块根据工艺要求控制一个或者多个Control Module控制模块。控制模块控制着具体设备的打开关闭或启动停止。
06 Phase状态机模型
相信各位看官也看到了在SHUI1的Phase程序里有很多的程序段,包括Running,Aborting,Holding等等的程序,那这些也是在S88的标准里定义好的状态机模型。通过Studio/RSLogix 5000软件里直接集成了Equipment Phase Monitor的功能,可以非常直观的看到当前Phase所处的状态。并且还可以获取权限来手动的控制Phase的执行。
通过上图的Phase的状态机监视以及S88的标准可知:
一个Phase控制工艺块初始的状态为idle空闲状态。
当在idle空闲状态有 start命令 时会进行到Running的运行程序段中,这个是中间运行状态,
没有其他命令会自动执行到Complete完成状态。
Runing程序执行过程中有 Hold暂停命令 会跳转去执行Holding的程序段,这也是中间状态,Hold完成后会跳转到Held的状态
Held之后可以通过 Restart重启命令 会去执行Restarting的程序段,恢复完成后继续返回Runing程序段执行
Restarting的程序执行中还可以执行 Hold暂停命令 继续跳回执行Holding程序,最终回到Held状态
程序Runing运行或Hold过程中有 Stop结束命令 则会跳转到stopping的程序段执行停止程序,停止完成后切换到Stopped状态
程序Runing运行或Hold过程中有 Abort放弃命令 则会跳转到Aborting的程序段执行放弃程序,放弃完成后切换到Aborted状态
不管是在Complete完成状态、Stopped状态还是Aborted状态都需要通过 Rest复位命令 执行Resetting程序段,执行完成后返回IDLE的状态。
在Running运行程序段执行时还可以执行 pause 暂停命令 进行运行过程中暂停,最终为Paused的状态,然后还可以通过 Resume恢复命令 继续返回running的程序执行。
Phase的状态机模型交叉矩阵表也可以直接参考S88里的对应表,如下:
07 总结
过我们的具体分析应该对批次控制系统有个大概的了解了,如果仍然有感兴趣的点觉得我说的不清楚的,可以通过微信后台留言继续沟通交流。
IPConfig实用程序和它的等价图形用户界面——Windows 95/98中的WinIPCfg可用于显示当前的TCP/IP配置的设置值。这些信息一般用来检验人工配置的TCP/IP设置是否正确。但是,如果你的计算机和所在的局域网使用了动态主机配置协议(Dynamic Host Configuration Protocol,DHCP——Windows NT下的一种把较少的IP地址分配给较多主机使用的协议,类似于拨号上网的动态IP分配),这个程序所显示的信息也许更加实用。这时,IPConfig可以让你了解你的计算机是否成功的租用到一个IP地址,如果租用到则可以了解它目前分配到的是什么地址。了解计算机当前的IP地址、子网掩码和缺省网关实际上是进行测试和故障分析的必要项目。最常用的选项
ipconfig——当使用IPConfig时不带任何参数选项,那么它为每个已经配置了的接口显示IP地址、子网掩码和缺省网关值。
ipconfig /all——当使用all选项时,IPConfig能为DNS和WINS服务器显示它已配置且所要使用的附加信息(如IP地址等),并且显示内置于本地网卡中的物理地址(MAC)。如果IP地址是从DHCP服务器租用的,IPConfig将显示DHCP服务器的IP地址和租用地址预计失效的日期(有关DHCP服务器的相关内容请详见其他有关NT服务器的书籍或询问你的网管)。
ipconfig /release和ipconfig /renew——这是两个附加选项,只能在向DHCP服务器租用其IP地址的计算机上起作用。如果你输入ipconfig /release,那么所有接口的租用IP地址便重新交付给DHCP服务器(归还IP地址)。如果你输入ipconfig /renew,那么本地计算机便设法与DHCP服务器取得联系,并租用一个IP地址。请注意,大多数情况下网卡将被重新赋予和以前所赋予的相同的IP地址。
如果你使用的是Windows 95/98,那么你应该更习惯使用winipcfg而不是ipconfig,因为它是一个图形用户界面,而且所显示的信息与ipconfig相同,并且也提供发布和更新动态IP地址的选项。如果你购买了Windows NT Resource Kit(NT资源包),那么Windows NT也包含了一个图形替代界面,该实用程序的名字是wntipcfg,和Windows 95/98的winipcfg类似。
总的参数简介(也可以在DOS方式下输入 Ipconfig /? 进行参数查询)
Ipconfig /all:显示本机TCP/IP配置的详细信息;
Ipconfig /release:DHCP客户端手工释放IP地址;
Ipconfig /renew:DHCP客户端手工向服务器刷新请求;
Ipconfig /flushdns:清除本地DNS缓存内容;
Ipconfig /displaydns:显示本地DNS内容;
Ipconfig /registerdns:DNS客户端手工向服务器进行注册;
Ipconfig /showclassid:显示网络适配器的DHCP类别信息;
Ipconfig /setclassid:设置网络适配器的DHCP类别
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)