国内智能制造发展如火如荼,智能制造过程、系统必然离不开生产现场、生产过程的实时数据。
德明福自动化为国内高端SUV厂家定制了一款制造数据获取工具模块,模块是使用python开发的一款采集PLC内数据的程序,拥有高性能、海量数据量和高实时的数据获取能力。
数据采集模块整体架构如下:
数据采集程序使用python编写,可以获得比较高的开发效率, 节省开发和调试的时间。
数据采集程序使用封装后的OPCUA协议与OPC Server进行通信,屏蔽了底层S7协议的一些细节处理,不需要直接和PLC进行交互,从而省略了建立连接和断开连接的时间,不需要处理复杂的连接问题,大大节省了调试和开发时间。
数据采集程序通过订阅机制来实时获取数据点的值,提高了数据点的响应速度,基本上可以做到实时更新,抛弃传统的轮询机制,降低了无用的网络通讯量,提高了网络通讯的质量。
借助于OPC Server的自动降级机制可以实现对离线PLC的自动降级,定时重试,避免出现屡次重新连接PLC导致的数据点更新延迟问题,解决PLC离线时影响其他设备数据采集的问题。
通过多线程编程的方式来采集不同类型设备的数据,并发度高,每个设备之间互不影响,防止程序出错导致整个数据采集流程终止,容错率高。
数据采集程序通过OPCUA协议与OPC Server进行通讯,OPCUA的底层是TCP协议,故可以通过远程连接的方式连接OPC Server。
相比于DA协议只能通过dll通信的优点在于:
• 可以远程连接、采集和调试,数据采集程序和OPCUA服务器可以放置在两台不同的服务器上。
• 可移植性好,可以跨平台使用,数据采集程序可以部署在任意的平台上, 只需要支持TCP协议即可使用。
• 可以使用多机热备份策略,单个或多个数据采集程序可以对应单个或多个OPCUA服务器,不存在单点故障。
• 多编程语言支持,可以很方便的在各个编程语言之间进行切换。
由于OPCUA协议是通用协议,可以支持多种设备的数据采集,不局限于PLC,只需要设备拥有OPCUA服务器即可,基本不需要修改即可支持不同设备的数据采集。
通过使用消息队列的方式来存储OPCUA消息,依次排队进行处理,在高数据量的场景下拥有不错的性能,不会丢失数据。
数据获取模块的应用,可以在大数据量和多设备的情况下高效的完成数据采集的任务,目前已经实现50+ 台设备,3W IO点 并发数据采集,10W + 数据的正确获取,为制造企业数字化转型提供有力的数据支撑。