冻干机的数据云端化改造

来源: 制药装备杂志/CPM-JDXX

应亦丰

上海世卓科技有限公司

上海 201323


摘  要以舒博拉尼冻干机为例,从项目体系架构、系统开发需要的硬件准备工作、运行环境搭建、开发环境搭建、PLC通信协议、数据准备、编写代码等方面,介绍了冻干机数据云端化改造的具体解决方案,为其他制药装备的信息化、数据云端化改造提供参考。

关键词:冻干机;PLC数据采集;Host Link通信;ARM开发板;Java编程

 

0  引言

近年来,“互联网+”“物联网”“智能控制”“工业互联网”等概念层出不穷。同时,党的十九大报告指出:“加快建设制造强国,加快发展先进制造业,推动互联网、大数据、人工智能和实体经济深度融合”。一时间,各大企业纷纷加强了自身在信息化、智能化建设方面的投入。为满足制药企业信息化、智能化改造的需求,笔者经过潜心钻研,以较低的成本初步完成了舒博拉尼冻干机的信息化、数据云端化改造。

本文以舒博拉尼冻干机的信息化、数据云端化改造为例,具体阐述其详细的开发过程,为制药装备数据云端化改造提供参考。

 

1  项目体系架构

冻干机的数据云端化改造系统架构如图1所示。由于篇幅原因,本文只举例最简单、最必要的体系架构,从下至上只需要4个环节,即可实现制药装备数据在移动端的显示和查询功能。


在该项目中,使用了ARM开发板取代传统的PC机,与传统的PC系统架构相比,ARM开发板具有如下优势:

(1)体积小。ARM开发板只有一本小号笔记本的大小,某些型号的开发板甚至只有一张名片的大小。

(2)功耗低,发热量小。ARM开发板的供电一般都是DC 5 V、2A,发热量极小,主芯片上往往都不用加装散热片,很少发生因为发热造成系统死机的情况。

(3)操作系统稳定。ARM开发板的操作系统基本是经过调整的Linux系统,而Linux操作系统往往被国际软件开发商定制开发成服务器操作系统,如美国的RedHatLinux Server系列产品甚至可与微软的Windows SERVER在服务器领域分庭抗礼。因此,ARM开发板的操作系统具备长时间不间断运行的特性。

(4)安装方便。由于ARM开发板体积小,可将其安装在设备控制柜内部,通信线直接连接到附近的PLC上,程序调试稳定后,不用连接显示器、键盘和鼠标,开机程序自动运行。

市场上ARM开发板的品牌、型号琳琅满目,本文推荐使用通用型的、可安装Linux操作系统且自带RS232/485串口的ARM开发板。

 

2  系统开发需要的硬件准备工作

2.1  系统开发所需硬件

系统开发所需硬件如表1所示。

2.2  各硬件连接方式

各硬件连接方式如图2所示。

连接PLC上RS232串口线和USB转接线的串口线需要自己动手制作,购买RS232接头公、母头各一个,按图3方式连接就可以。 


3  运行环境搭建

首先,要确定开发语言,ARM开发板的官方推荐开发语言是Python,基于特殊原因,最终决定采用Java来完成这个开发工作。

Java是一门历史比较悠久、成熟、跨平台、面向对象的开发语言,其第三方插件和开源库不计其数,几乎可以满足任何开发要求(该项目要使用到RXTXcomm开源库,以达到和PLC串口通信的目的)。其跨平台的特性,可以实现先在Windows系统上开发,完成后再部署到Linux系统上运行。

运行环境的搭建具体流程:

(1)登陆开发板官方网站下载页,下载Linux镜像文件,本文使用较新的版本:2017-07-05-jessie.img。

(2)下载win32_disk_imager烧录软件,将镜像文件烧录到TF卡。

(3)将所有硬件连接到位,包括显示器、USB键盘和鼠标,最后将TF卡插入开发板,打开电源,可以在屏幕上看到系统启动画面和启动信息。

(4)进入桌面环境,点击“打开终端”按钮,打开系统终端。这是个类似于微软DOS界面的终端,以后的所有工作基本上都是在这个终端界面里面完成。

(5)一般情况下,Linux发行版里面都会自带Java,可通过以下方式进行确认:在终端里面输入命令“java–version”并回车,可以看到如图4所示的提示信息,表明系统已经自带了1.8版本的Java运行库。

(6)接下来,安装第三方RXTXcomm开源库,没有它的支持,开发板无法访问串口。但是,RXTXcomm开源库最后的更新时间大致是在2006年左右,因为除了工业领域,商业市场上几乎99%的硬件都已经抛弃了串口这种连接方式,所以RXTX主页上压缩包里面的文件只支持Linux IA32/IA64的架构,并不支持ARM架构,需要通过编译源代码来完成RXTXcomm在开发板上的安装。


4  开发环境搭建

Linux系统虽然强大,但比较适合做服务器方面的应用。对于开发环境而言,还是在Windows系统上搭建比较便利。

4.1  下载适合操作系统的JDK开发包

下载适合操作系统的JDK开发包并安装(32位或64位),开发版本可以使用1.6、1.7或1.8。随后,根据提示安装,基本上是一路点击“下一步”和“确定”按钮。

4.2  系统环境配置

(1)添加Java的系统变量Path属性,如图5所示。打开Windows的“系统属性”对话框,点击“高级”标签页,再点击“环境变量”按钮。在“系统变量”中找到名为“Path”的系统变量,双击进入编辑模式。在“变量值”一栏的最后输入“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”。

 

(2)新增Java的JAVA_HOME系统变量属性,如图6所示。点击“环境变量”对话框的“新建”按钮,变量名一栏输入“JAVA_HOME”,变量值一栏输入Java程序的安装路径“C:\Program Files\Java\jdk1.8.0_40”。

 

(3)新增Java的CLASSPATH系统变量属性,如图7所示。再次点击“环境变量”对话框的“新建”按钮,变量名一栏输入“CLASSPATH”,变量值一栏输入Java程序的安装路径“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”。

 

(4)下载Eclipse IDE开发软件,将其解压至一个文件夹,双击目录下“eclipse.exe”,打开IDE开发界面即可进行编程工作,至此开发环境搭建完成。

 

5  PLC通信协议

在动手写代码前,要先搞清楚冻干机的PLC通信协议。简单来说,就是开发板和PLC“交流”的一种规范,通常采用“一问一答”形式。开发板会首先发起一个请求代码,传送到PLC;PLC再根据请求码的内容,提取出合适的数据,再以相同的规范发回给开发板,这样就可以采集到PLC内存区中的实时数据并加以分析利用了。

舒博拉尼冻干机采用的是欧姆龙CJ2M-CPU13-V2.0的CPU单元,这种PLC遵循欧姆龙公司的Host Link协议,现在就具体分析一下这种协议的编码方式。

5.1  请求码

Host Link请求码规范如图8所示。

(1)请求码开头始终用@开始,回复码也是一样。

(2)单元号,指的是PLC编程时设定的序号,默认为0,可以在电脑上用欧姆龙CX-Programmer程序打开查看,如图9所示。


(3)头部代码:始终为FA,回复码也一样。

(4)响应时间:设置范围为0~F,单位为10 ms。例如,设置为1,则响应等待时间为10 ms。

(5)ICF、DA2、SA2、SID:通常固定设置为00。

(6)读/写命令:读命令(0101)、写命令(0102)。

(7)操作内容:包含3个请求内容,即请求PLC哪个区域的数据?从哪个地址开始操作?连续操作几个数据?区域代码查询如表2所示。

(8)校验码:算法比较复杂,这里不具体展开,可下载一个名为“Host Link校验码计算器”的软件进行计算,如图10所示,计算时需要输入请求码的前面所有字符,包括“@”。

(9)终止符:请求码和回复码都一样,始终是“*回车”。

5.2  回复码

Host Link回复码规范如图11所示。

回复码的前半部分定义和请求码相同,这里就不再重复解释。PLC返回的数据基本是包含在回复码的后半段。如图11所示:从校验码前面开始推算,最靠近校验码的是请求的最后一个数据,再往前推算是N-1个、N-2个,以此类推。


6  数据准备

舒博拉尼冻干机的过程数据都存放在PLC的DM区中,各参数对应地址如表3所示。

通过观察可以发现,参数地址基本上都在一个比较集中的区域,可以采取一种连续读取的方法,将D100~D152的数据一下子读取出来,再进行内部分析,对应到每个参数上。

 

7  编写代码

代码编写工程分为四个类,采用尽可能简单的架构。因为本文主要是为了阐述一个数据采集的过程,所以不引入Java的各种设计模式,力求让代码的逻辑过程简单易读。

7.1  获取开发板的串口表达字符串

串口一般在Windows系统上表达为“COM1、COM2”之类的。但是,在Linux系统下就完全不一样了。先要运行一个自己编写的小程序,列出开发板上可用的串口列表和在Linux系统下串口的表达字符串。这个字符串在接下来的数据采集代码中是要用到的。

小程序会收集所有串口列表并显示出来,将程序编译后的.class文件复制到开发板上,运行结果如图12所示。

从图12可以看到,串口的字符串是“/dev/ttyUSB0”,和Windows系统下的完全不一样,开发者一定要注意,不然串口通信是连接不上的。

7.2  冻干机数据采集程序

该套数据采集程序很简单,只有四个类,其调用关系如图13所示。

以上程序使用到了Java的线程机制,由于后期还将把这个程序功能扩展为将采集数据上传到SQL数据库、移动端手机显示数据等,加上网络原因等,一次读写操作耗时3~4 s是很常见的事情。有移动开发经验的工程师知道,在Andoird开发中,如果有涉及网络的操作都必须在子线程中完成,不得写入UI线程。因此,如果将数据采集和数据库读写操作都放在一个线程中,难免会导致线程阻塞。此处程序通过采用每隔30 s就从后台开辟一个新线程去读取PLC数据的方法,避免线程阻塞。

将所有程序编译后,所有.class文件复制到开发板中,运行程序最终结果如图14所示。

 

至此,冻干机的数据都被采集显示出来了,由于图14所显示的设备正处于二次干燥阶段,所以,干箱压力和冷凝器压力这两个压力传感器获取的是PLC默认值,并不反映现场实际的生产情况。

随后即可将采集的数据上传至位于云端的MySQL数据库中,再结合手机前端的编程即可在任意时间、任意地点远程监控车间中运行的冻干机实时参数了,如图15所示。

 

8  结语

通过本次对舒博拉尼冻干机的信息化、数据云端化改造,为其他各种类型的制药装备信息化改造提供了参考,更为重要的是,数据采集的过程已经将所有的制药装备运行数据存放于位于云端的SQL数据库中,对将来各种大数据的统计以及药品质量的追溯来说,具有重大的意义。

 

[参考文献]

[1] OMRON.CJ2m_CJ2H_编程手册[Z].

[2] OMRON.PLC_HostLink通信手册[Z].

[3] 李兴华.JAVA开发实战经典[M].北京:清华大学出版社,2009. 


作者简介:

应亦丰(1976—),男,浙江宁波人,助理工程师

研究方向:

制药装备智能化、网络化改造