2019年7月30日

ThingWorx Service: InfoTable2CSV

编写了一个通用程序,能够将InfoTable转换成CSV格式,用于Dygraph展示数据。

----------------------------------------------------------------------
// InfoTable2CSV: Service to convert InfoTable to CSV, to display data into Dygraph widget
// Input: myInfoTable:InfoTable without DataShape
// Output: TEXT
// Note 1: The name of Datetime field is always 'TIME', which is 1st field for Dygraph
// Note 2: TIME values will be converted into dateFormatISO to match Dygraph requirement

var iLF;
var tmp = 'TIME';
var i = 0;
var fd = []; // array to store Fields
fd[0] = 'TIME';

// Get CSV Header
if ((myInfoTable.dataShape===null)||(myInfoTable.dataShape===undefined)) {
   iLF = myInfoTable.ToJSON().dataShape.fieldDefinitions;
 } else {
   iLF = myInfoTable.dataShape.fields;
 }
for (var key in iLF) {
if(key != 'TIME') {
        i = i + 1;        
        fd[i] = key; // Store field sequence
        tmp = tmp + ',' + key;
}
    //Logger.info("Field Name "+key+" baseType: "+iLF[key].baseType);
}
tmp = tmp + ' \n';

// Get CSV Data
var tableLength = myInfoTable.rows.length;
for (var x=0; x < tableLength; x++) {
    var row = myInfoTable.rows[x];
    tmp = tmp + dateFormatISO(row.TIME);  // Get TIME Value 

    var fd2 = []; // To output data in sequence
    for (var property in row) {
    tmp2 = property; //row property
        tmp3 = row[property]; //row value
        var j = fd.indexOf(tmp2);
        fd2[j] = tmp3;
    }
    
    for (var k=1; k
        tmp = tmp + ',' + fd2[k];
    }    
    tmp = tmp + ' \n';
}

var result = tmp;
----------------------------------------------------------------------

2019年7月26日

ThingWorx Dygraph研究


ThingWorx Manufacturing Appstrending and troubleshooting功能提供了趋势分析工具,能够将根据时间序列存储的数据予以动态展示。
此功能在Mashup中对应的WidgetDygraph Widget,是基于开源的dygraphs实现的。
下面说一下在ThingWorx中应用Dygraph的注意事项。
1.     Dygraph的数据源即JSONData
此属性有一定的误导性,说是JSONData,但其实是csv格式的长字符串。
Csv格式就是带分隔符的文本文件,通常用“,”或”;”分隔;第一行定义表头,从第二行开始定义数据。
一些注意事项:
1)     表头的字段之间用”,”分隔,以“\n”换行;
2)     第一个字段必须是时间,对应于Dygraph的横坐标;
3)     其它的字段对应DataLabel1~DataLebel6
4)     从第二行开始,即数据存储区,字段之间以“,”分隔,最后以”\n”换行。

2.     如果数据的原始格式是InfoTable,则必须先转换成csv
比如我们想从外部的实时数据库抽取数据,则必须在查询后进行转换才能使用。
通常在ThingWorx中,查询输出的格式是InfoTable,而InfoTable的实际格式是JSON
对于此类数据,则必须自己编写Service进行转换,之后才能bindDygraph使用。
在编写Service时,注意Output类型是TEXT
转换代码示例:
------------------------------------------------------
var tmp = 'TIME,OEE \n';            //表头
var tmp1 = '';                             //存储第1个字段
var tmp2 = '';                             //存储第2个字段
var tableLength = IT1.rows.length;           //IT1是输入的InfoTable
for (var x=0; x < tableLength; x++) {         //InfoTable中逐行取值
    var row = IT1.rows[x];
    tmp1 = dateFormatISO(row.TIME);    //转换时间格式,这里TIME是第1个字段名称
    tmp2 = row.OEE;                              //这里OEE是第2个字段名称
    tmp = tmp + tmp1 + ',' + tmp2 + ' \n';     //生成一行数据记录
}

var result = tmp;
------------------------------------------------------

3.     时间序列的类型必须是ISO TIME
ISO TIME包含了日期、时间、时区的信息,如2019-07-26T01:30:00.000+08:00
我们可以利用dateFormatISO函数将DateTime类型转换成String类型。

4.     关于取值范围
如果从数据库中查询,然后转换成CSV使用,则要在Service Info中配置Max Rows,即返回的查询结果记录数,对应于SQL中的TOP/LIMIT条件,默认值是500

5.     更多Dygraph信息参考
可参考ThingWorx Apps自定义指南的第21-Dygraph小组件。



2019年7月10日

ThingWorx的大数据分析工具


ThingWorx是目前较为流行的工业物联网数据集成、分析、开发平台。
在业务方面,工艺实时数据有较大的分析价值,也符合大数据的分析特点。
本文介绍一下其大数据分析工具。
1.     数据存储
要对实时数据进行大数据分析,需要在创建Thing的时候满足以下条件:
1)     Thing指定Value Stream
Value Stream是存储数据的实体,其配置的Persistence Provider对应物理数据库,可以是内置的ProgreSQL数据库,也可以是支持ODBC的其它主流数据库。
2)     对于要追踪的属性打勾Logged选项
此选项在属性的值发生变化时,自动向Value Stream插入记录。

PostgreSQL中使用以下SQL可以查询数据:
---------------------------------------------------------------------
SELECT * FROM value_stream
WHERE ENTITY_ID = 'ValueString_KBSZ_MM'             -- Value Stream Name
AND source_id = 'KBSZ_DEMO_MM21_THING'           -- Thing Name
AND PROPERTY_NAME = 'Main_Speed'              -- Property Name
AND TIME > to_timestamp(EXTRACT(EPOCH FROM NOW())- 2*24*3600)  -- 2 days earlier till now
ORDER BY time --DESC
---------------------------------------------------------------------

2.     数据分析工具之Time Series Chart
要将ThingProperty数值传递给Mashup,通常通过这2ServiceGetPropertiesQueryPropertyHistory,前者传递当前值,后者传递历史数据。
QueryPropertyHistory有以下几个输入参数:
-       startDate,起始时间
-       endDate,结束时间
-       maxItems,记录数,相当于SQL中的TOP/LIMIT
-       oldestFirst,排序方式,相当于ORDER BY TIME ASC
-       query,过滤条件,相当于追加WHERE语句
然后把输出条件中的All Data绑定到Time Series ChartDataSource,然后设定:
-       NumberOfSeries,参数个数
-       DataSourceX.DataFieldX,纵坐标,选择对应的Property
-       DataSourceX.XAxisFieldX,横坐标,选择timestamp
需要说明的是,QueryPropertyHistory返回的是符合条件的查询结果数据集,因此结果集越大,查询越慢。
此外,Time Series Chart加载了QueryPropertyHistory结果集的所有数据,因此结果集越大,显示越慢。
因此,要慎重设定查询参数,特别是startDate/endDate/maxItems


3.     数据分析工具之Dygraph Chart
PTC ThingWorx Manufacturing Apps提供了PTC.Factory.TrendManagementUtils,其GetJSONStringTrendHistory方法可以将属性的历史值转换成JSON格式。
然后配合Dygraph Chart,可以实现数据的动态加载。
具体实现方式为:
1)     Manufacturing Apptrending and troubleshooting设定追踪项,记录Trend Name
2)     Mashup中加载GetJSONStringTrendHistory方法,将displayId设为步骤1Trend Name。并设置startDate/endDate等其它参数。
3)     Mashup中将GetJSONStringTrendHistory绑定到dygraphchartwidget,将Data映射为JSONData,将TrendNameX映射为DataLabelX
我们注意到,在GetJSONStringTrendHistory方法中并没有maxItems参数,在dygraphchartwidget中也不可设置时间。
这是因为GetJSONStringTrendHistory查询得到了所有符合条件的数据集,此数据集以JSON字符串的形式予以输出。
dygraphchartwidget得到JSON数据后,根据数据的特点动态地予以展示,因此数据集的大小不会影响显示的时间。
我们从PTC的文档可以看到,Dygraph Chart采用了开源的JavaScriptdygraphs,具体使用可参考ThingWorx Apps自定义指南的第21章。



2019年7月2日

谈谈840D机床的联网


SINUMERIK 840D(SL)是西门子广受好评的CNC自动化控制系统,它和SINAMICS S120内置式变频器组合,广泛应用于高端机床和加工中心。
近几年来,随着工业互联网和工业4.0的发展,对机床联网以实现监控和数采的需求也越来越多。
本文试谈谈840D机床的联网。

一、硬件
840D(SL)的控制单元(Control Unit)包括:NCUPCUTCU
NCUNumeric Control Unit(数控单元),是控制系统的核心。
NCU又包含了Linux内核、PLC CPUPLC通信卡(840D SL)等模块。
其中Linux内核从CF卡加载,PLC CPU采用S7-300标准PLCPLC通信卡即CP343-1系列通信模块。
PCUPC Client Unit(PC客户端),采用工业PC,内置WindowsLinux操作系统。
TCUThin Client Unit(瘦客户端),通过VNC软件远程运行Linux内核程序。


二、联网
840D包含了MPIProfiBus等接口。其中ProfiBus又包括DP IntegratedDP Master接口。DP Integrated是内核与SINAMICS S120通信的专用接口,DP Master用于连接外围设备如PCUTCU、远程I/O等。MPI是编程专用接口。
除了以上接口外,840D SL还增加了ProfiNet(X150)EtherNet(X120/X127/X130)接口。
ProfiNet可连接工业交换机、远程I/O等,其默认IP地址是192.168.0.1
X120用于连接PCUTCU,其默认IP地址是192.168.214.1
X127用于连接工程师电脑,来进行PLC组态及下载,其默认IP地址是192.168.215.1
X130用于连接工厂网络(IT网络),通常接到IT交换机上,由IT交换机分配IP地址。
因此对于840D SL,我们可以直接将X130接入IT网络,以实现机床的联网。
840D NCU并没有提供以太网口,要联网可以采用以下两种方式。
方式1:增加CP343-1通信模块。
CP343-1S7-300系列PLC的以太网通信模块,在组态后,可以为PLC CPU分配一个以太网IP地址。此模块性能好非常稳定,但是需要组态及下载PLC,价格也较高,单价1万多。
方式2:增加MPI-EtherNet转换头。
德国Hilscher公司提供了NetLink商标的MPI-EtherNet转换头,能够将MPI协议转换成S7 TCP/IP协议,且无须组态,价格约4000元。NetLink提供了一个网页服务器,用于配置MPI参数和IP地址。替代产品有德国DeltalogicNetLink和国内大连德嘉的ETH-MPI(DP)



三、应用
840D(SL)的硬件我们可以看出,机床的控制分为文件控制和逻辑控制两大块,文件控制通过Windows/Linux操作系统实现,逻辑控制通过PLC实现。
因此,IT系统在与机床联网时,可以进行针对性的设计。
如果我们要向机床传加工程序,或者采集加工日志,则可以通过操作系统实现,比如文件共享、FTP、串口连接等。
如果我们要采集机床的状态、故障、工艺参数,则可以通过PLC实现,比如通过Kepware连接NCU PLC,或者通过OPC Client连接机床内置的OPC-UA服务器。




2019年3月7日

ThingWorx开发小结


最近一段时间尝试了下用ThingWorx做开发,下面是一些心得和小结。

1、ThingWorx作为IoT平台(Connectivity+Thing)
ThingWorx整合了Kepware,作为ThingWorx Connectivity部署。
Kepware的PLC驱动可以快速配置,实现和主流PlC的双向通信。
Kepare的IoT Gateway提供了Rest Server/Rest Client/MQTT Client这3种代理,实现和IT系统的通信。
ThingWorx内置了一个OPC Client,叫做Industrial Connection,可以通过Discover工具实现对OPC目录和TAG的浏览和绑定,非常方便。
由于Kepware同是PTC的产品,因此和ThingWorx的整合是相当深入的,只需要在Kepware中做一些简单的配置,就可以在ThingWorx中调用OPC,这一点比起其它SCADA产品方便得多。
最大的缺点是不支持对OPC TAG的动态名称调用。
我们知道OPC TAG是一个字符串形式的内存变量,可以通过拼接的形式得到完整的TAG名称,象GE Cimplicity和Ignition都支持对OPC TAG的动态读写,这样可以通过编写服务来重复调用、简化代码。
而ThingWorx的核心是Thing这个对象,OPC TAG是作为一个绑定的远程变量附加到某一个属性上的,因此每一个TAG都是独立管理的。
从PTC ThingWorx Manufacturing Apps的代码(Controller.UpdateProperty)我们也可以看出,ThingWorx是作为REST Client来实现动态回写OPC的(与Kepware的Rest Server通信)。

2、ThingWorx作为数据展示平台(Mashup)
展示方面,ThingWorx提供了Mashup、Gadgets、Style、State等工具。
其优点是美观、现代化,IT工程师开发起来顺手。
相比较而言,ThingWorx适用IT工程师开发,而传统SCADA适合控制工程师开发。
为什么这么说呢?
一个重要的原因是,ThingWorx是基于JAVA开发的,因此有大量的配置、继承。
比如Menu菜单、Media图片、Style样式、State数据规划,这些都是独立的对象,Mashup只能引用。
举个简单的例子,你想要把字体放大一号,你必须新建一个Style,然后在Mashup中引用。
这些对于JAVA工程师来说不以为怪,但是对于工控工程师来说就很头大了。
此外,ThingWorx自带的一些Widgets也不是很成熟,如:Label的字体最小号是9px,饼图不能显示数值和百分比,柱状图的文字长度受限等。

3、ThingWorx作为客户端(Mashup)
ThingWorx是B/S架构的,因此其客户端相当于运行一个Mashup实例。
但是Mashup本身不具备任何的逻辑处理能力,只有基本的复位数据等固定功能。
在ThingWorx中,只有Thing是真正的逻辑实体,所有业务逻辑都是通过Service传递给Mashup的。
因此,任何客户端的业务逻辑,都必须绑定远程的Thing.Service来予以实现。
举个简单的例子,客户端采集到条码后要进行有效性校验,但是客户端不能执行校验逻辑,必须调用服务端的逻辑实现,其路径是:JavaScript/Query --> Service --> Thing --> Mashup.
目前JAVA和B/S能在互联网大行其道,一个重要原因是允许客户端JavaScript的执行,甚至衍生出了前端程序员这个工种。
但是ThingWorx不支持客户端JavaScript调用,是其一个较大的局限。

4、ThingWorx作为集成开发环境(Platform)
我们可以把ThingWorx作为一个简化的集成开发环境,它对JavaScript/SQL的支持非常好,开发也非常方便。
下面谈几点短板。
我们知道,和JAVA相比,.Net是一个半C/S、半B/S的架构,因为.Net客户端可以通过.Net Framework来调用系统dll,从而得到OS操作权限及实现分布式架构。
比如,.Net客户端可以调用本地opc client直接和opc server通信,这样通信的链路就分散开来,减少了服务端专用opc client的阻塞和性能需求。
而ThingWorx基于Java开发,是典型的B/S架构。而JAVA基于安全的考虑,服务器是不具备操作系统权限的。
以文件操作为例,ThingWorx定义了一个文件存储的根目录,所有ThingWorx管理的文件必须在此目录下。因此,ThingWorx不能处理服务器上其它目录的文件,也不能处理局域网内通过文件夹共享的文件。
因此,我们必须通过MQTT、FTP等方式来处理远程文件。
ThingWorx提供了一个FTP Client扩展,但是坑爹的是只提供文件读、写功能,不能执行删除操作。
那么假设我们需要从某台设备PC采集文件数据,怎么操作比较方便呢?我们需要在ThingWorx上建立一个FTP SERVER,然后把ThingWorx文件子系统映射成FTP虚拟子目录,然后在设备PC上通过FTP CLIENT上传数据; 然后在ThingWorx文件子系统进行文件的读写。
ThingWorx还有一个缺点是对项目的管理不是很完善。比如说,我们有很多Media/Style/State,会需要在许多项目中使用,但是这些对象只能绑定到一个Project,这就不是很合理了。
此外,Service的调试是不支持中断的,要调试代码,必须自己写LOG,然后在Monitoring中查看日志。

2018年12月28日

PTC的数字化制造全家桶




大家知道PTC是著名的CAD软件公司,其拳头产品Pro/E(现命名为Creo)在模具设计、汽车发动机和零部件设计中得到了广泛应用。
但是近几年来,特别是在14年后收购了ThingWorxKepware之后,PTC越来越多地进入制造运营过程。
现在我们看看它的产品矩阵。
CAD/设计:CREO parametric(Pro/ENGINEER)
CAE/分析:CREO simulate(Pro/MECHANICA)
PLM/产品生命周期管理:Windchill
ALM/软件生命周期管理:Integrity
MOM/制造运营:ThingWorx
SLM/服务生命周期管理:Servigistics
这些产品覆盖了设计、制造、售后的完整过程。
在制造方面,ThingWorx3大产品组成:ThingWorxKepwareVuforia,这3大产品分别收购自不同公司,最后统一整合到ThingWorx平台和解决方案下面。
这其中,ThingWorx是物联网开发平台,KepwareOPC服务器和物联网网关,VuforiaAR开发平台。
PTC的发展轨迹可以看到,PTC首先是一家设计解决方案供应商,然后才是一家制造解决方案供应商,也就是说先有数字化,再有制造。
这点和达索比较类似,先有CatiaSolidworks,然后借助收购Apriso进入MES领域。

下面重点介绍一下PTCThingWorx平台。
为什么要说ThingWorx是数字化制造全家桶呢?因为PTCKepwareVuforia都纳入ThingWorxa工业物联网解决方案了。
Vuforia是在AR/VR概念最火的时候收购的,主要是用于增加现场运维的体验。
Kepware大家都很熟悉,是应用最广泛的OPC服务器,借助其IoT Gateway可以很方便地搭建物联网网关。PTC给它另起了个名字ThingWorx Industrial Connectivity,然后在KepwareThingWorx之间建立了一个高速通信协议AlwaysOn,这样ThingWorx可以方便快速地从Kepware获取远程数据。
ThingWorx本身是一个开发平台和运行环境。ThingWorx借鉴了面向对象建模的理念,支持对象(Thing)、类(Template)、属性(Property)、方法(Service)、事件(Event),此外还提供一个SCADA开发和运行环境(Mashup)
ThingWorx通过Industrial Connection实现和控制层集成,通过Integration Connection实现和应用系统集成。
ThingWorx平台本身提供一个PostgreSQL数据库,也可以通过安装ODBC扩展库的方式,实现和主流数据库的集成。
此外,PTC还官方提供了一个Manufacturing App扩展库,包括:
Asset Advisor – 设备状态和属性监控
Control Advisor – 物联网网关控制台
Production KPIs – KPI运营看板
Alert Monitoring – 报警监控和处理
Trending and Troubleshooting – 趋势监控
Custom Plant Viewer – 工厂平面看板
Custom Asset Viewer – 设备综合看板
Custom Controls Advisor – HMI输入
Configuration and Setup – 工厂建模
基本上涵盖了SCADA的典型应用场景。
利用此扩展库,可以很方便地对一个小型工厂快速建模执行监控。

下面再具体谈谈ThingWorx平台的一些特点。
特点一:对Kepware的完美支持。你可以把ThingWorx看成一个OPC Client,无需借助任何编程,就可以对OPC TAG进行远程读写处理。
但是这里有一个限制。由于ThingWorx是面向对象的,任何一个属性必须指定对应的Thing,因此在进行常规读写的时候,必须要为每一个OPC TAG绑定ThingWorx.Thing.Property。因此TAG必须是静态的,如果要进行动态读写,则必须另外编写Service,调用Kepware REST Server进行读写。

特点二:对REST API的完美支持。ThingWorx平台创建的Thing/Template/Mashup等对象都可以通过REST API直接开放给外部系统,且可以直接点击查看属性、方法等。但这里也有一个限制,外部看到的接口已经没有了继承的信息,所以一些对象的属性、方法会非常之多。

特点三:实时数据存储非常方便。ThingWorx内建的ProgreSQL数据库主要包含2类数据:对象模型和业务数据,均采用NOSQL的数据结构,通常包括以下字段:模型(Stream)、数据引用对象(如某台机床)、时间戳、数据类型、数据名称(如某工艺参数)、数据值。这种方式和关系型数据库差异非常大。比如一台机床有多个参数,通常在关系型数据库中我们用多个字段记录,数据会记录在同一行内。但是在ThingWorx,每个参数对应一行记录。这种方式非常有利于对所谓实时数据的处理,如设备温度值始终在变化,而其它参数变化很少,那么用关系型数据库记录的话就会非常浪费,而用NOSQL记录的话只记录变化的字段,有效节省了存储空间,提升了查询效率。限制是,系统只记录当前各字段(属性)的关系,而所有历史关系则丢失了。因此如果有复杂的业务逻辑,还是需要用关系型数据库进行补充。

特点四:项目的组成部分关系松散。在开发项目时,所有的组成部分如ThingStreamMashup并没有一个严格的、层级明确的结构,而是通过Model TagProject Tag进行标记,因此较为分散,缺乏项目整体感。

2018年11月21日

MES在零部件制造中的应用



汽车零部件的制造与整车制造存在较大不同。
在整车制造过程中,装配是最复杂的环节,需要与上下游的多个系统如PLMERPWMS等做集成,在生产线上则是设备、物料等围绕着工人干活。
而在零部件制造过程中,装配所占的比重较小,而机加等前端制造更为重要。
本文以机加、注塑、光学检测为例,介绍数字化制造在零部件制造中的应用。

一、机加
普通消费者一般只接触整车厂商,但其实在一台汽车中,技术含量最高的是发动机;而在发动机的制造过程中,最难的分别是铸造和机加。
机加指的是通过机床,将铸造好的毛坯加工成精度和质量符合要求的产品。
下图以数字化制造为视角,显示了MESCNC机床的关系:


我们可以看到,CNC的两大控制核心是:操作系统和PLC
由于加工的过程是以作业指令的形式执行的,而对一个产品的完整指令定义就形成了一个控制文件,这个文件包含:机台的位移,刀具的编号、位移、旋转角度,子程序,跳转逻辑,注释等。
通常控制文件是CAM系统生成的文本文件。
在一个大型的工厂,通常会有多台机床形成一个机组,使用同型号的设备,加工同型号的产品。
为了方便控制文件的管理和版本控制,我们可以将标准的控制文件存储在服务器上,然后下发给机床操作系统。
以高端机床常见的Siemens Sinumerik系统为例,该系统通常采用WindowsLinux作为操作系统,然后通过HMI程序提供界面,并调用文件系统实现和外部系统的数据交换。
对于Windows系统,可以很方便地通过共享文件夹的方式实现数据传输。
对于 Linux系统,可以通过FTP进行文件传输。
在加工过程中,关键作业信息如程序号、产品物料号、开始时间、结束时间等,也可以以文件的形式记录在操作系统上,然后上传到MES
因此,MES可以较为实时地对生产过程进行跟踪,并在此基础上,生成设备OEE数据,从而帮助改进现场生产管理。

二、注塑
汽车中会用到大量的塑料件,如仪表盘、保险杠等。
这些塑料件主要是采用注塑机加工的,就是把液体塑料原料注入安装了模具的机器中,液体冷却凝固后形成需要的零件。
注塑工艺是高度依赖设备的,一些关键工艺参数如压力、温度、速度、时间,对成品的质量有重大影响。
因此注塑机会实时监控这些工艺参数,并通过OPC等技术将数据集成到企业系统。
如海天的注塑机,提供远程维护功能,技术支持人员能够通过IT网络和OPC集成,实现对工艺参数的实时监控和历史追溯,从而为故障诊断提供了依据。


三、光学检测
汽车中还使用了大量的小型零件如传感器、雷达等。
许多小零件在加工完成后会进行光学检测,以检查间隙、划痕、斑点等。
象博世的MES就集成了光学检测系统,通过高精度摄像头得到质量分析数据,并通过算法对结果进行判断。
而大数据、深度学习在光学检测方面也有广泛的应用前景。




2018年6月13日

MES领域的新玩家

近几年,随着智能制造、工业4.0、中国制造2025的宣传,MES被越来越多的工厂管理人员和技术专家了解。因此,除了Siemens、Rockwell、GE一直深耕MES,在MES领域也出现了不少新的玩家。

第一类玩家,原先是提供其它系统服务的IT厂商。
比如达索公司,是著名的CAD/CAE厂商,其旗舰产品CATIA在飞机和汽车的造型设计中得到广泛应用,借由收购Apriso公司,借助其产品FlexNet进入MES领域。
再比如SAP,是最著名的ERP厂商,借由收购Lighthammer,进入MES领域。

第二类玩家,原先是控制系统供应商。
比如施耐德和Honeywell,都是著名的控制系统供应商,其承接项目的方式往往是软硬件一体化集成,并且形成了自己的系统。

第三类玩家,将自己的内部MES推向市场。
比如博世,是最大的汽车零部件制造商,特别是在传感器方面是业界领袖。博世的MES主要针对内部客户开发,特别是在质量追溯和光学检查方面着力很多,这两年,其MES部门也开始承接外部项目。

第四类玩家,是OEM。
OEM即Original Equipment Make原始设备制造商。
如ABB是著名的工业机器人制造商,也承接了大量的汽车焊装车间设备安装调试工作,在焊接和机器人控制方面是业界领袖,MES也有其独到之处。
再比如Comau主要承接汽车焊装、发动机装配的设备安装调试工作,也有其MES系统。

第五类玩家,是蹭政府补贴的。
我们知道,随着中国制造2025的推广,各地政府都提供了大量补贴,用于鼓励工厂进行智能制造升级。那么势必有不少的人,利用此契机,打着MES/智能制造的名头,将政商关系变现,而厂家也可通过种种合同和账务手段,捞取政府补贴,实施效果倒在其次了。



 

2018年6月12日

Rockwell FTPC平台介绍

Rockwell和Siemens、GE是MES领域的三强,在汽车行业和制药行业有大量成功的案例。
FTPC即FactoryTalk Production Center是其技术平台,功能强大。
大体来说,Rockwell FTPC主要由3部分组成:
1. SOS即Shop Operation Service,是后台服务环境,包括客户端通信、界面呈现、JDBC通信、PLC/OPC通信、MQ通信、ERP接口、PLM接口、计划任务等。SOS是一个成熟的产品,比如和SAP之间有标准接口,和AB PLC能够直接通信,和Siemens PLC也能够通过OEM版本的Kepware OPC Server进行通信。
2. 行业业务模型,如制药行业有成熟的配方管理模块,汽车行业有成熟的追溯模块。这些模型包括数据库对象、工艺流程、前台表单、报表等。此外,FTPC的主要业务表已经实现面向对象化,并且预留了大量字段,可以通过前台界面很方便地进行扩展。
3. Process Designer,是一个IDE集成开发环境。
Process Designer的优点主要有:
1. 提供图形化界面,以方便用户界面和工艺流程的设计。
2. 面向对象,以对象的方式调用业务模型。
3. 基于JAVA,可以在Eclipse中开发新的组件。
4. 支持脚本语言PNUTS。
5. 支持大量的JAVA组件,如JDBC、JMQ等。


2018年6月11日

Apriso FlexNet平台介绍

Apriso是一家美国MES厂商,于2013年被达索公司收购。
达索公司的主要产品是CATIA和SOLIDWORKS,前者是飞机和汽车造型的主流软件,后者在模具设计中得到广泛应用。
借由收购Apriso,达索的产品从CAD/CAE,扩展到制造领域。
Apriso FlexNet是一个MES产品,同时也是一个MES开发平台,包含了大量符合ISA95标准的模型,包含了与ERP/PLM系统的接口,包含了与OPC通信的标准接口。
Apriso FlexNet最著名的客户是康明斯,其MES是利用FlexNet平台,结合康明斯业务流程进行深度定制,并用同一个版本发布到全球工厂。此外,在汽车行业,其客户还有通用、法雷奥等。
与ERP相比,MES产品有两个鲜明的特点:
1. 作为一个执行系统,客户端与服务器有较多的交互,比如一个页面可能有多个校验和跳转逻辑,因此表单形式的设计不合适。
2. 作为一个车间现场管理系统,针对工厂、产线、工位、设备的特殊流程,存在较多的订制需求,因此目前主流的MES产品,都自带IDE集成开发环境,以方便客户进行开发。
大体来说,FlexNet主要由以下3部分组成:
1. 符合ISA95标准的业务对象模块,如工厂建模、工位建模、工厂日历、用户管理、行业模型等。
2. 基于.NET的底层组件,比如OPC.NET用于和OPC通信,ODBC用于数据库通信,MQ组件用于处理消息,LOG组件用于日志处理。
3. 集成开发环境Process Builder。
Process Builder是一个功能强大的IDE,其特点有:
1. 可以定义完整的业务过程,此过程在Process Builder中被称为Operation,可以定义输入输出参数、跳转条件、触发条件等。
2. 图形化的界面方便开发。
3. 可以直接输入SQL语句,或调用存储过程、函数进行数据库操作。
4. 可以直接调用标准的OPC.NET组件与OPC通信。
5. 可以直接编写JAVASCRIPT脚本进行变量处理。
6. 提供强大的调试工具,可以直接在编辑环境中对数据库操作、OPC操作进行诊断。
7. 在生产环境下,通过诊断工具,可以对业务过程进行断点、实时诊断,方便故障排查。