工业控制系统(Industrial Control Systems,ICS,简称工控系统),是由各种自动化控制组件以及对实时数据进行采集、监测的过程控制组件共同构成的确保工业基础设施自动化运行、过程控制与监控的业务流程管控系统。其核心组件包括数据采集与监控系统(Supervisory Control and Data Acquisition,SCADA)、分布式控制系统(Distributed Control Systems,DCS)、可编程控制器(Programmable Logic Controller,PLC)、远程终端(Remote Terminal Unit,RTU)、人机交互界面设备(Human Machine Interface,HMI),以及确保各组件通信的接口技术。
一个SCADA控制中心是长期对现场进行集中监控的通信网络,包括监控报警和处理状态数据。可以将自动化或操作者驱动的监控命令推送到远程站控制设备,远程站设备通常被称为现场设备。现场设备控制本地诸如打开和关闭阀门和断路器的操作,从传感器系统收集数据,以及监控当地环境的报警条件等。
DCS集成为一个控制架构,包含监督多个集成子系统的监督级别的控制它们负责控制本地化流程的细节。DCS用于控制工业过程,如发电,油气炼油,水和废水处理,以及化学,食品和汽车生产。
PLC是基于计算机的固态设备,用于控制工业设备和工艺。而PLC是整个SCADA和DCS系统中使用的控制系统组件,它们通常是较小的控制系统配置中的主要组件用于提供监管控制汽车装配线和发电厂吹灰器控制等离散工艺。 PLC是广泛应用于几乎所有的工业过程。
HMI 也就是操作人员面前的显示屏,HMI和plc进行组态之后,可以通过HMI对PLC通信控制以达到控制终端设备的目的。
在众多公开或私有协议中可分为如下几类:
标准协议:国际标准或公认的标准协议,如Modbus、DNP3、IEC104等
私有公开:只有厂商自己设备支持并提供官方协议文档,如Omron FINS协议、三菱Melsec协议等
私有不公开:只有厂商自己设备支持且官方不提供协议文档,如S7、西门子PPI协议、GE SRTP等
序号 协议类型 源码下载 简介
1 Siemens S7 https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-s7comm.c 西门子PLC支持的通讯协议
2 MMS(IEC61850) https://github.com/wireshark/wireshark/tree/master/asn1/mms 输配电通讯协议
3 GOOSE(IEC61850) https://github.com/wireshark/wireshark/tree/master/asn1/goose 输配电通讯协议
4 SV(IEC61850) https://github.com/wireshark/wireshark/tree/master/asn1/sv 输配电通讯协议
5 Modbus https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-mbtcp.c 工控标准协议
6 OPC DA https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-dcom.c 工控标准协议
7 FF HSE https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-ff.c 基金会现场总线以太网通信协定
8 IEC 104 https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-iec104.c 输配电通讯协议
9 Ethernet POWERLINK https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-epl.c 开放式实时以太网通信
10 OPC UA https://github.com/wireshark/wireshark/tree/master/plugins/opcua/opcua.c OPC新一代标准
11 HART-IP https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-hartip.c 高速可寻址远程传感器协议
12 CoAP https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-coap.c 轻量应用层协议
13 Omron FINS https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-omron-fins.c 欧姆龙PLC支持的通讯协定
14 openSAFETY https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-opensafety.c 开源安全应用协议
15 EGD(Ethernet Global Data) https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-egd.c GE Fanuc为PLC开发的通讯协定
16 DNP3 https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-dnp.c 分布式网络协议,主要用于电力行业
17 Sinec H1 https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-h1.c 西门子PLC支持的通讯协议
18 Profinet https://github.com/wireshark/wireshark/tree/master/plugins/profinet/ 开放式的工业以太网通讯协定
19 EtherCAT https://github.com/wireshark/wireshark/tree/master/plugins/ethercat/ 德国Beckhoff公司推动的开放式实时以太网通讯协定
20 SERCOS III https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-sercosiii.c 实时以太网通讯协定
21 RTPS https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-rtps.c 实时流传输协议
22 TTEthernet https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-tte.c 实时以太网通讯协定
23 CDT https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-cdt.c 远动规约
24 EtherNet/IP https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-etherip.c 工业通讯协定(Industrial Protocol),是一种CIP的实现方式,由罗克韦尔自动化公司所设计
25 CIP https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-cip.c 通用工业协定
26 CIP Safety https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-cipsafety.c 安全通用工业协定
27 DeviceNet https://github.com/wireshark/wireshark/tree/master/epan/dissectors/ packet-devicenet.c 一种CIP的实现方式,由Allen-Bradley公司所设计
28 BACnet https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-bacnet.c 楼宇自动控制网络数据通讯协议
29 KNXnet/IP https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-knxnetip.c 住宅和楼宇控制标准
30 Lontalk https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-lon.c 埃施朗公司的LonWorks技术所使用的通讯协议
31 CANopen https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-canopen.c 控制局域网通讯协定
32 SAE J1939 https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-j1939.c 一种CAN的变种,适用在农业车辆及商用车辆
33 USITT DMX512-A https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-dmx.c 灯光控制数据传输协议
34 BSSAP/BSAP https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-bssap.c 由Bristol Babcock Inc发展的通讯协定
35 Gryphon https://github.com/wireshark/wireshark/tree/master/plugins/gryphon 车用通讯协定
36 ZigBee https://github.com/wireshark/wireshark/tree/master/epan/dissectors/packet-zbee.h 开放式的无线通讯协定
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。协议详解
一种用于工厂自动化车间级监控和现场设备层数据通信与控制的现场总线技术,可实现现场设备层到车间级监控的分散式数字控制和现场通信网络
为了便于自动化行业不同厂家的设备和应用程序能相互交换数据,定义了一个统一的接口函数,就是OPC协议规范。OPC服务器的功能就是与下位机进行数据的交换,其中包含了大量的通讯程序和数据存贮程序。有了OPC就可以使用统一的方式去访问不同设备厂商的产品数据。其他的软件商只需开发面对服务器的程序即可,不用对不同的硬件设备开发不同的硬件驱动程序。减小了工作量,也方便了使用。
OPC基金会前前后后规定了不同的接口定义,如下:
• OPC DA (Data Access, exchange of real-time values)
• OPC A&E (Alarms & Events, exchange of alarms and events)
• OPC HDA (Historical Data Access, exchange of historical values)
• OPC XML DA (XML-based exchange of real-time values)
以上所有的接口定义,我们现在都统称为OPC。OPC是基于WINDOWS COM/DCOM接口技术来规定的。
为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA。OPC UA接口协议包含了之前的 A&E, DA,OPC XML DA or HDA,只使用一个地址空间就能访问之前所有的对象,而且不受WINDOWS平台限制,因为它是从传输层Scoket以上来定义的,导致了灵活性和安全性比之前的OPC都提升了。
OPC UA的优势:
1.一个通用接口集成了之前所有OPC的特性和信息,A&E, DA,OPC XML DA or HDA
2.更加开放,平台无关性,WINDOWS,LINUX都能兼容
3.扩展了对象类型,支持更复杂的数据类型比如变量,方法和事件
4.在协议和应用层集成了安全功能,更加安全
5.易于配置和使用
核心的区别是因为OPC和OPC UA协议使用的TCP层不一样,如下:
OPC是基于DOM/COM上,应用层最顶层;OPC UA是基于TCP IP scoket 传输层.
其他一些区别:
OPC虽然通过配置COM/DOM来提供数据加密和签名功能,配置防火墙,用户权限来让数据访问变得更加安全,但是会增加额外的工作量,尤其是对非IT的工程师来说;对于OPC UA,数据加密和签名,防火墙等都是默认的功能。比如基于DOM的OPC使用的动态端口分配,端口不固定,让防火墙难以确定,而OPC UA的端口都是唯一的,比如SINUMERIK 840D是PORT 4840,SIMATIC S7是PORT 4845。DOM/COM也可以生成不同级别的事件日志,但日志内容不够详细,只会提供“谁连接上服务器”这种,而对于OPC UA来说都是默认的功能,生成的日志内容更全面。e