粉末涂料用聚酯树脂生产装置的工艺优化和设备选型
发布日期:2024-10-16
阅读量:647
摘要:近年来,粉末涂料用聚酯树脂需求越来越大,本文介绍了聚酯生产装置的设计优化措施,能够极大的提高单条生产线的产能;

并通过选用特定的固体输送设备,解决反应釜密闭操作的问题,有效改善车间的生产环境、提高安全操作性。


1552113647853079411.jpg


前言

粉末涂料是一种100%固体成分、以粉末形态进行涂装的涂料,它最大的优势就在于不需要使用有机溶剂或者水作为分散介质。

因此其在使用过程中无溶剂挥发,安全环保,符合国际上通认的“4E” 法则:经济(Economical)、环保(Environmental)、高效(Effectiveness) 和性能卓越(Excellence),成为市场上备受欢迎的涂料品种。

而聚酯树脂是聚酯型粉末涂料里面最重要、比例最大的组成部分,近年来其市场规模快速增长,相关企业大多面临产品供不应求的境况,新建工厂、扩大产能成为必然的选择。

中国《聚酯工厂设计规范》对聚酯工厂设计的技术要求做出了规定,但该规范适用于采用对苯二甲酸和乙二醇为原料、生产对苯二甲酸乙二醇酯的工厂,对采用新戊二醇等其他单体作为原料的聚酯工厂设计仅有一定借鉴意义。

曹银波针对聚酯树脂出料的工艺和操作步骤进行了分析,但是,鲜有针对粉末涂料用聚酯树脂生产装置的工艺设计和设备选型进行介绍的论文。

本文从某聚酯生产装置的实际设计经验出发,介绍工艺优化经验和主要设备选型,供工程设计人员参考。

1 工艺流程介绍

粉末涂料用聚酯树脂的主要生产工艺是由对苯二甲酸、间苯二甲酸、新戊二醇为主要原料,经过加热酯化反应和真空脱水缩聚而制得。

聚酯树脂生产装置主要包括配料加料、加热酯化、缩聚脱水、冷却破碎和包装入库等五个工序,其工艺流程简图如图1。

图片

一般来说,聚酯树脂生产装置采用单釜流程、间歇操作,酯化和缩聚两步反应均在一个反应釜内完成,制得聚酯产品后送入双钢带机冷却破碎,最后包装入库。

反应釜的投料、酯化和缩聚反应和放料所需时间决定了生产周期,与反应釜的容积一起决定了整条生产线的年产能。

以一个30m³ 的反应釜为例,每批可生产聚酯产品约22t,每批耗时32h,按年操作8000h计,单条生产线年产能仅为5500t。

正因为如此,目前国内粉末涂料用聚酯树脂的主要生产企业产能都十分有限,除安徽神剑拥有多处工厂、产能超过100000t/a外,其余前十大企业的产能都在15000~35000t/4之间,难以满足日益增长的市场需求。

2 工艺优化

2.1 流程优化

项目业主拟扩大产能,新建80000t/a生产装置,若采用产能5500t/a的生产线,则需要安排生产线多达15条,这显然是不经济的。因此,本项目流程优化的主要任务就是扩大项目的年产能。

除设置多条生产线外,还需要从另外两条路径出发扩大产能:一是缩短单批生产时间;二是增大反应釜容积、增加单批产量。

根据分析,单批耗时32h主要由以下步骤组成:初始投料1.5h,加热及酯化反应14h,二次投料0.5h,缩聚反应12h,出料4h。

其中酯化反应、缩聚反应两个步骤占据了绝大多数时间,但这两个反应的时长由化学反应动力学控制,调整空间不大;

初始投料需要投入13袋固体对苯二甲酸原料及10m390%新戊二醇液体,固体投料过程涉及运料、起吊、就位、放料等一系列步骤,基本都由人工完成,耗时较长;

倘若采用投料斗投料,利用反应釜反应的时间将所有固体原料投至一投料斗中,则向反应釜的投料过程则很快可以完成,预计可将初始投料时间缩短至0.5h。

而出料时长受下一环节双钢带机产能控制,如果采用两条双钢带机生产线进行生产,则出料时间可以缩短至2h。

通过缩短投料及放料时间,仅可以提高产能不到10%,显然难以满足要求。

针对酯化反应和缩聚反应所需时间比较接近的情况,若能将两步反应同时进行,则能大大缩短批次时间。

因此,增加一台反应釜、将间歇流程改为半连续流程就十分必要了。

所谓半连续流程,就是将酯化反应和缩聚反应分别在两个反应釜中完成,当第一个反应釜(预聚釜)进行酯化反应的同时,第二个反应釜(终聚釜)在进行前一批次的缩聚反应,两步反应交替进行。

其中初始投料(0.5h)、酯化反应(14h)、转料(0.5h)合计占据预聚釜15h,而二次投料(0.5h)、缩聚反应(12h)、放料(2h)合计占据终聚釜14.5h,二者时间相差无几;

最终整个生产流程的瓶颈在预聚釜,单批次耗时仅为15h。

综上,通过缩短单批生产时间,采用30m³反应釜的生产线产能从5500t/a可提高至11700t/a,提高幅度达112%。

反应釜的放大是一个非常复杂的问题,反应釜的容积变化会从传热、传质、动量传递(搅拌)等方面影响反应的进行。

其中反应釜的容积主要影响动量传递,反应釜的长径比、面积体积比则主要影响传热和传质。

放大的主要方法包括:(1)工程规模的直接试验;(2)已知放大关联的放大;(3)根据放大原理的放大;(高放大比例)(4)根据经验的放大(低放大比例)。

本项目已有成功的反应釜,但尚未掌握科学的放大原理或已知放大关联,因此从稳妥起见,选用了低的放大比例,将原有30m³的反应釜放大到38m³。

在放大过程中尽量保持相似的几何形状,即保证放大后的反应釜以下参数与原反应釜一致:反应釜高度/容积、搅拌浆直径/反应釜直径和搅拌浆离釜底距离/反应釜高度。

通过放大反应釜的容积,单批产能可以提高23%,结合半连续工艺,单条生产线产能提高至14400t/a,建设6条生产线即可满足80000t/a的产能要求。

2.2 反应釜密闭设计

常规粉末涂料用聚酯树脂生产装置中,反应釜多采用开放式投料,其原因是主要原料、助剂、催化剂大多为固体,通常都是使用投料孔或者人孔进行投料。

在投料过程中,粉尘逸散比较严重,同时散发高温、有害有机蒸汽,危害操作人员的身体健康和人身安全。

为解决开盖投料问题,本项目对预聚釜和终聚釜均采用密闭设计,即在整个生产过程中,不需要打开投料孔或人孔。

液体原料采用管道输送,主要固体原料采用投料仓和管道投料,少量固体助剂和催化剂采用真空上料机密闭投料;

反应釜通过放空管道集中至放空总管,并通过尾气处理系统放空,做到全程无粉尘和高温有害蒸汽逸散,提高了操作安全性,改善了工人的工作环境。

2.3 设备选型

本项目主要设备均采用业主现有的成熟设备类型,但在部分设备选型上有一定的创新,以满足扩大产能、日益严格的安全、环保和降低工人劳动强度的要求。

管链输送机是一种输送粉状、小颗粒等散装物料的连续输送设备,在聚酯纤维行业应用较为广泛。

管链输送机由管道、管道内部的链条和刮板、驱动轮和被动轮组成,通过链条和刮板的旋转实现固体物料的水平和垂直移动。

本项目为对苯二甲酸和间苯二甲酸分别选用3条管链输送机,实现两种物料从仓库到聚酯车间的水平-垂直-水平的输送,并最终放料至投料仓中。

同时,对苯二甲酸还设置了1000m³原料仓一台、配套投料用管链输送机一套,对苯二甲酸通过槽车密闭投料至管链机并垂直输送至原料仓中。在此过程中,物料在密闭的设备中运转,最大限度的避免了粉尘逸散。

真空上料机使用真空泵或压缩空气、氮气作为动力,由覆膜滤袋过滤器、压缩空气反吹装置、气动放料门装置、真空料斗和不锈钢吸料枪、输送软管等部件组成。

真空料斗采用法兰与反应釜相连,通过负压将少量固体物料吸入真空料斗,并放料至反应釜中。整个操作过程快速、可靠,杜绝粉尘污染,实现反应釜密闭操作。

3 结语

(1)通过将单釜间歇操作改为双釜半连续操作、反应釜低比例放大的工艺优化措施,成功将粉末涂料用聚酯树脂单条生产线产能从5500t/a提高至14400t/a。

(2)选用管链输送机和真空上料机设备,可以分别实现固体物料的大批量和小批量投料,使聚酯反应釜在完全密闭状态下操作,避免了粉尘逸散和高温蒸汽挥发,改善了车间环境。



专栏:技术交流
作者: JZ
原文链接: 阅读原文
上一页:东菱杯羽毛球团体赛金宗企业荣获第四名 前国家队员梅绮丽代表出战
下一页:树脂生产设备的关键要点与优化策略
FreeMarker template error (HTML_DEBUG mode; use RETHROW in production!)

The following has evaluated to null or missing:
==> langConfig  [in template "public_include/wap/module/version_1/language.html" at line 49, column 14]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if langConfig.status?string = "false"  [in template "public_include/wap/module/version_1/language.html" at line 49, column 9]
	- Reached through: #include "/public_include/wap/module/...  [in template "tpl/2018/03/17/2613443926933696//wap/com_5.html" at line 5, column 1]
	- Reached through: #include "com_5.html"  [in template "tpl/2018/03/17/2613443926933696//wap/displaynews.html" at line 69, column 6]
----

Java stack trace (for programmers):
----
freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
	at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)
	at freemarker.core.UnexpectedTypeException.newDesciptionBuilder(UnexpectedTypeException.java:80)
	at freemarker.core.UnexpectedTypeException.<init>(UnexpectedTypeException.java:43)
	at freemarker.core.NonHashException.<init>(NonHashException.java:49)
	at freemarker.core.Dot._eval(Dot.java:48)
	at freemarker.core.Expression.eval(Expression.java:81)
	at freemarker.core.BuiltInsForMultipleTypes$stringBI._eval(BuiltInsForMultipleTypes.java:692)
	at freemarker.core.Expression.eval(Expression.java:81)
	at freemarker.core.EvalUtil.compare(EvalUtil.java:111)
	at freemarker.core.ComparisonExpression.evalToBoolean(ComparisonExpression.java:62)
	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
	at freemarker.core.Environment.visit(Environment.java:327)
	at freemarker.core.Environment.visit(Environment.java:333)
	at freemarker.core.Environment.include(Environment.java:2509)
	at freemarker.core.Include.accept(Include.java:171)
	at freemarker.core.Environment.visit(Environment.java:327)
	at freemarker.core.Environment.visit(Environment.java:333)
	at freemarker.core.Environment.include(Environment.java:2509)
	at freemarker.core.Include.accept(Include.java:171)
	at freemarker.core.Environment.visit(Environment.java:327)
	at freemarker.core.Environment.visit(Environment.java:333)
	at freemarker.core.Environment.process(Environment.java:306)
	at freemarker.ext.servlet.FreemarkerServlet.processEnvironment(FreemarkerServlet.java:946)
	at freemarker.ext.servlet.FreemarkerServlet.process(FreemarkerServlet.java:910)
	at freemarker.ext.servlet.FreemarkerServlet.doGet(FreemarkerServlet.java:769)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at com.kenfor.iyong.web.util.filter.NotAllowedToTunFilesFilter.doFilter(NotAllowedToTunFilesFilter.java:154)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at com.kenfor.iyong.web.util.filter.InvalidXSSFilter.doFilter(InvalidXSSFilter.java:40)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve.invoke(RedisSessionHandlerValve.java:26)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
	at org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:873)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)

FreeMarker template error: The following has evaluated to null or missing: ==> langConfig [in template "public_include/wap/module/version_1/language.html" at line 49, column 14] ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #if langConfig.status?string = "false" [in template "public_include/wap/module/version_1/language.html" at line 49, column 9] - Reached through: #include "/public_include/wap/module/... [in template "tpl/2018/03/17/2613443926933696//wap/com_5.html" at line 5, column 1] - Reached through: #include "com_5.html" [in template "tpl/2018/03/17/2613443926933696//wap/displaynews.html" at line 69, column 6] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.UnexpectedTypeException.newDesciptionBuilder(UnexpectedTypeException.java:80) at freemarker.core.UnexpectedTypeException.(UnexpectedTypeException.java:43) at freemarker.core.NonHashException.(NonHashException.java:49) at freemarker.core.Dot._eval(Dot.java:48) at freemarker.core.Expression.eval(Expression.java:81) at freemarker.core.BuiltInsForMultipleTypes$stringBI._eval(BuiltInsForMultipleTypes.java:692) at freemarker.core.Expression.eval(Expression.java:81) at freemarker.core.EvalUtil.compare(EvalUtil.java:111) at freemarker.core.ComparisonExpression.evalToBoolean(ComparisonExpression.java:62) at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48) at freemarker.core.Environment.visit(Environment.java:327) at freemarker.core.Environment.visit(Environment.java:333) at freemarker.core.Environment.include(Environment.java:2509) at freemarker.core.Include.accept(Include.java:171) at freemarker.core.Environment.visit(Environment.java:327) at freemarker.core.Environment.visit(Environment.java:333) at freemarker.core.Environment.include(Environment.java:2509) at freemarker.core.Include.accept(Include.java:171) at freemarker.core.Environment.visit(Environment.java:327) at freemarker.core.Environment.visit(Environment.java:333) at freemarker.core.Environment.process(Environment.java:306) at freemarker.ext.servlet.FreemarkerServlet.processEnvironment(FreemarkerServlet.java:946) at freemarker.ext.servlet.FreemarkerServlet.process(FreemarkerServlet.java:910) at freemarker.ext.servlet.FreemarkerServlet.doGet(FreemarkerServlet.java:769) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.kenfor.iyong.web.util.filter.NotAllowedToTunFilesFilter.doFilter(NotAllowedToTunFilesFilter.java:154) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.kenfor.iyong.web.util.filter.InvalidXSSFilter.doFilter(InvalidXSSFilter.java:40) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve.invoke(RedisSessionHandlerValve.java:26) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) at org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:873) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)