施耐德开放自动化平台初体验(3)

2023-11-04 07:20

本文主要是介绍施耐德开放自动化平台初体验(3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

施耐德EAE 之所以称为开放自动化,其中一个重要的特征就是它提供了软件运行时(Soft dPAC)。而且不仅提供了Windows 版本的Soft dPAC,还提供Linux版本的运行时,Linux版本运行时实现了容器化(docker),在Alpine OS 环境的容器中运行。并且分别支持X86 处理器和Arm hf 处理器。这意味着软件dPAC 既可以在X86 linux 上运行,也可以在大多数Arm 计算设备上运行,比如树莓PI,瑞芯微RK3399 或者全志H6,NXP i.mx 系列产品。这是令人兴奋的事情。为第三方自动化软硬件提供了一个入口。

另一方面,Soft dAPC 还提供了Modbus TCP和TCP/UDP 方式和其它应用程序交换数据。

       本文介绍Linux 操作系统下的Soft dPAC 的安装,使用,以及通过modbus TCP和TCP/UDP 与外部程序交换数据。

背景资料

EcoStruxure Automation Expert的三层架构

施耐德的EcoStruxure Automation Expert(简称为 EAE),是一个自动化平台,他们称之为软件为中心的工业自动化。EAE具有三层架构。从底层的PLC,变频器,传感器到边缘控制的软件dPAC ,到顶层的应用,分析和服务。

 EcoStruxure Automation Expert基本组成

软件dPAC 的特性

EcoStruxure Automation Expert软件dPAC 是先进的多平台 IEC61499 为基础的控制运行时,它包括:

  1. 基于事件,网络透明的自动化能力
  2. 原生过程告警支持
  3. modbus/TCP 客户端和服务器
  4. OPC UA 服务器
  5. Ethernet/IP (在v20.2 中支持有限平台

EcoStruxure Automation Expert软件dPAC 在一个标准PC 上使能一个开放,灵活,可扩展,高度集成IEC61499 运行时。从低成本的嵌入式系统到高性能IT 服务器。

运行时在工业边缘提供了集成和运行先进IT 工具,程序库和应用的开放平台。这是通过TCP/UDP socket 和直接链接DLL 库的方式实现的。

这个公共运行时集成硬件解决方案,比如Altivar 变频器,Modicon M251 dPAC, Modicon M580 dPAC,加上linux 系统上基于容器的虚拟软件运行时。

EcoStruxure Automation Expert的Linux软件dPAC 兼容实时Linux内核,并且支持每台机器上多个运行时同时运行,它们通过modbus/TCP 和Ethernet/IP 通信。

软件dPAC 的运行环境

 

由此可见,Linux 下的运行时有两个版本:

  1.   X86-64 版本是 Intel X86 下的版本
  2.   Arm HF 版本 是 32 位Arm 版本。arm hf arm hard float 的简写。

这就意味着Soft dPAC 不仅能够在Intel X86 计算机上运行,也可以在Arm 嵌入式平台上运行,比如树莓PI 4,RK3399 ,H6 等Arm 板上运行。

Soft dPAC 要求在docker 容器中运行。施耐德提供的是一个docker 容器的image。直接可以在docker 中安装成为容器运行。

这是一件令人兴奋的事情,我们可以在各种边缘计算机上部署Soft dPAC, 甚至可以将它们部署在云端。和其它微服务协同操作。构建一个开发性系统。

构建边缘计算架构

   有了docker 版本的Soft dPAC ,就可以将它部署到边缘服务器上面,并且与docker 容器中的其它微服务协同操作。下面是一个典型的架构图:

前面提到,Soft dPAC 提供了3种方式与外部程序交互

  1. 动态库 DLL 直接调用
  2. modbus TCP
  3. TCP/UDP 方式。

docker 容器中程序以微服务的方式运行,所有的微服务通过一个统一的消息系统实现消息交换。比如RabbitMQ ,MQTT 等。为此,我们要设计一个Soft Gateway 程序将Soft dPAC TCP 传输的数据转换成微服务消息,通过message bus 信息交换。在这里我们选择简单MQTT 作为消息总线。

测试过程

安装

解压

解压出EAE V20.2 后有一个文件,这就是Linux 版本Soft dPAC 的压缩包:

tar zxvf ./softdpac.tar

安装image

sudo python3 install.py

启动容器运行

按照文档中的提示是运行startSoftdPAC.sh

sudo sh startSoftdPAC.sh --ipbase 192.168.31.95  --itname enp1s0  --image-name softdpac:x86-v20.2-20315-1064  --nbcontainer 1

不过具体过程中发现 docker 的端口51499 没有暴露除了来, 直接使用物理端口IP 地址也不是很好。可以使用docker 的方式直接安装。我采用 portainer 基于web 的容器管理工具。

 

modbus/TCP 通信

在EAE 中,有一个 Modbus Software Gateway ,可以实现与外部modbus TCP server 的通信。这就可以连接第三方的远程IO模块,也可以连接其它的应用程序。

在EAE 中,modbus 是作为硬件功能块来实现的。需要在device List 窗口中,指定设备击右键选择 HW Configuration.

出现下面窗口,选择 Standard.IoModbus.MODBUS . 

于是在HW Configuration 中出现MODBUS 项目。

下一步,在MODBUS 端口添加 设备,在MODBUS 下击右键,出现下面窗口。选择MODBUSGENTCPS。

 添加的MODBUSGENTCPS 相当于Slave MODBUS 设备。它内部的读写寄存器在一个XML 中定义。比如modbusmap.xml。如下面所示

最后还需要添加一个Standard.IoModbus.MODBUSSLAVEND .(不要忘记,我就是忘了,一直搞不通)

<?xml version="1.0" encoding="utf-8"?><MBInterface><var name="VAL_OUT1" type="UINT" offset="0" usage="write"  comment="VAL_OUT1" /><var name="VAL_OUT2" type="UINT" offset="1" usage="write"  comment="VAL_OUT2"  /><var name="VAL_IN1" type="UINT" offset="0" usage="read"  comment="VAL_IN1" /><var name="VAL_IN2" type="UINT" offset="1" usage="read"  comment="VAL_IN2" /></MBInterface>

该文件可以存储在Project 文件夹中。下一步指向MODBUSGENTCPS1 击右键,选择Modbus Gateway。弹出一个文件选择窗口。选择 modbusmap.xml.

经过上面一系列添加之后,HW Configuration 是这样的:

我们还需要设置上面窗口中所有项目的属性(property),它们包括:

  1. MODBUS,
  2. MODBUSGENTCPS1,
  3. VAL_OUT1_MODBUSGENTCPS1 
  4. VAL_OUT2_MODBUSGENTCPS1 
  5. VAL_IN1_MODBUSGENTCPS1 
  6. VAL_IN2_MODBUSGENTCPS1

   下面是相关项目的属性窗口。

MODBUS属性

 MODBUSGENTCPS1 属性

 

VAL_OUT1_MODBUSGENTCPS1 /VAL_OUT2_MODBUSGENTCPS1 属性

 

VAL_IN1_MODBUSGENTCPS1 /VAL_IN2_MODBUSGENTCPS1的属性

要反复检查,不要遗留。要不然也搞不定。 

设置完成后,点击HW Configuration 边上的Mapping ,这时切换到RES 窗口,发现在里面添加了两个功能块MODBUSGENTCPS MBRead 和 MODBUSGENTCPS MBWrite.你可以添加连线如下图。

GO 语言编写了一个简单的modbus server

package mainimport ("log""time""github.com/tbrandon/mbserver"
)func main() {serv := mbserver.NewServer()err := serv.ListenTCP("0.0.0.0:502")if err != nil {log.Printf("%v\n", err)}defer serv.Close()// Wait foreverfor {time.Sleep(1 * time.Second)}
}

 

TCP/UDP 通信

modbusTCP 协议比较适合soft dPAC 连接远程IO模块,而TCP/UDP 更适合于软件交换数据。EAE 有一个NETIO 功能块 提供给用户建立特定的TCP,UDP 通信。这个功能块意义非凡,使用户可以实现与非EAE 程序的通信。

下面是一个简单的例子:

ENDPOINT 设置外部应用的协议类型和IP 地址,端口。 在EAE 的文档中解释有点凌乱。我设置为 TCP Client 模式,在9200 端口接收数据,在与Soft dPAC 同一台主机上向9201 发送数据。

 

'TCP:9200;127.0.0.1:9201'

 外部的测试程序采用GO 语言编写,代码如下:

package mainimport ("fmt""net""os""strings"
//	"strconv"
)const (CONN_HOST = "localhost"CONN_PORT = "9201"CONN_TYPE = "tcp"
)func main() {// Listen for incoming connections.l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT)if err != nil {fmt.Println("Error listening:", err.Error())os.Exit(1)}// Close the listener when the application closes.defer l.Close()fmt.Println("Listening on " + CONN_HOST + ":" + CONN_PORT)for {// Listen for an incoming connection.conn, err := l.Accept()if err != nil {fmt.Println("Error accepting: ", err.Error())os.Exit(1)}// Handle connections in a new goroutine.go handleRequest(conn)}
}// Handles incoming requests.
func handleRequest(conn net.Conn) {// Make a buffer to hold incoming data.buf := make([]byte, 1024)index:=0for { // Read the incoming connection into the buffer.cnt, err := conn.Read(buf)if err != nil {fmt.Println("Error reading:", err.Error())}line := strings.TrimSpace(string(buf[0:cnt]))fmt.Println(line)// Send a response back to person contacting us.index=index+1if index>128 {index=0}fmt.Printf("message recieved :%d\n",index)conn.Write([]byte(fmt.Sprintf("message recieved :%d",index)))// Close the connection when you're done with it.
}conn.Close()
}

运行的结果如下:

一个简单的软件网关(Soft Gateway)

    Soft dPAC 只是提供了一个简单的TCP,UDP和modbusTCP通信机制。为了实现Soft dPAC与容器中的其它微服务通信。需要设计一个软件网关,将TCP 数据转化成为微服务的消息总线协议。为了简单演示,我们实现了一个 TCP/MQTT 的软件网关(Soft Gateway),它采用Go 语言编写。

   MQTT 代理使用开源Eclipse Mosquitto 。

Soft Gateway 代码

(未完成,敬请期待吧!)

结束语

经过这些实验后,你大概能够体会到为什么说施耐德的EAE 是一个开放自动化系统了。如果你对容器,云平台等相关技术了解的IT 工程师。你会想象出各种应用场景。产生无限的遐想。EAE 的确是你想要的样子。

建议你再次阅读我的博文理想的开放自动化

这篇关于施耐德开放自动化平台初体验(3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/344182

相关文章

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud