1、问题
当前SEPHMI默认是直接与提供服务的软件(以下将以Sepsim软件为例)进行连接并获取数据,并且是由SEPHMI主动发起请求的方式,在大多数项目实施中是满足需求的。但是有些项目,需要将SEPHMI和Sepsim软件分别部署在不同的网络层级中,或者是将SEPHMI同时部署与不同的网络层级中(分别给不同网络层级的人员使用),一级是在3.0层,即工业生产控制网,另一级是3.5层,即信息网或办公网,这两个网络层级之间通过工业防火墙或者网闸严格的限制了数据传输的方向,仅支持从3.0向上传输,不能从3.5向下传输,这个时候就面临了一个问题,SEPHMI部署在3.5层的情况下,无法向3.0层的Sepsim请求数据了。

2、解决办法
通过配置和软件部署架构来改变数据请求的方向,将3.5层向下请求的方式,改为3.0层根据3.5的需求向上提供的方式。
2.1、软件部署

2.2、数据请求逻辑

2.3、配置方法
2.3.1、前提条件
需要将SEPHMI升级到5.0.019及以上版本。
2.3.2、3.5层的SEPHMI配置
3.5层的SEPHMI由于无法主动向下发起连接,所以此SEPHMI将作为Server端,由3.0层的SEPHMI-Client端发起连接。
在application.properties中配置sephmi.server=true
增加了此配置之后,在界面运行时,SEPHMI将不会去直接向目标接口地址请求数据,而是将页面数据位号和回写操作作为一个需求放入需求队列中,由3.0的Client端来拿,拿到需求后将结果推送到3.5的Server结果池中,这样3.5的SEPHMI就拿到了数据并展示到界面上。
另外,Server端可以指定Client端的IP,即仅对来自设置的IP的Client请求可信,保障了信息安全。也可以不配置,则代表任何IP的Client都可以连接本Server。
以10.89.2.15为例,在application.properties中配置sephmi.server.alowedClientIp=10.89.2.15

2.3.3、3.0层的SEPHMI配置
3.0层SEPHMI作为Client端,一是自身和在3.0层提供界面显示用,二是向3.5层转发数据用。
在application.properties中配置两个参数:sephmi.client和sephmi.client.serverurl

sephmi.client=true代表当前的SEPHMI配置了Client端角色,运行时将会向Server端发起连接请求并根据需求转发数据;
sephmi.client.serverurl=http://10.101.15.223:9999代表Server端的地址,有了此地址,才能与Server端建立连接。
2.3.4、关于3.5与3.0部署的SEPHMI工程
3.5层和3.0层导入的工程文件完全一致,配置的数据接口地址也完全一致,无需做任何差异化的配置。