项目中往往需要运行多个SEP软件,包含采集、计算、业务流转、界面等一系列的软件集合,这时候就需要一个画面,来对这些软件进行集中的状态监控,以便在出现故障时及时掌握信息并进行快速定位和处理,确保整套系统长期稳定运行。

1、HMI模板工程下载
导出工程-SOFT-MONITOR20251219111546.project
2、版本要求
SEPHMI v5.0.068及以上版本。
3、功能介绍
3.1、使用流程图

3.2、软件注册

3.2.1、使用权限
软件注册界面需要用户登录Studio才能进行操作,否则会提示登录超时,且无法进行注册和生成操作:

3.2.2、注册内容解析
3.3、生成HMI监控画面
在完成所有软件信息注册后,点击Build Monitor HMI按钮,会弹出一个选项:
1、Append:是指在旧的监控画面上追加(或更新)刚才编辑的内容,这种情况下,旧画面的区域、图标、原有内容的位置都不会发生变化,仅对新增的软件进行追加,并对修改的参数更新到画面中;
2、Overwrite:是指根据编辑的内容完全重新创建监控画面,这种情况下,会彻底删除旧画面并重新自动生成一个新的监控画面,自动生成的画面往往最终需要人工进行一些细微的调整,比如监控服务器区域的位置调整等。

在点击Append或Overwirte之后,SEPHMI进行自动创建或更新监控画面,并在完成之后自动打开最新监控画面的组态界面,用户在这里可以对刚刚生成的画面进行微调,主要就是调整画面的位置,以及可以根据项目中实际网络情况,将各服务器的位置按照上下网络层级进行相应的调整,以便更贴合实际的网络层级,更容易理解。
3.4、运行监控
在注册界面点击“Monitor View”或者点击左侧菜单的“MONITORING”,即可进入最终的监控画面。

4、不同网络解决方案
4.1、上层SEPHMI可向下连接到被监控软件
这种情况因为可以直接进行通信,所以在SEPHMI上注册软件的时候,直接配置被监控软件的http接口地址即可。

4.2、上层SEPHMI无法向下连接到被监控软件
前提条件:下层网络可以向上连接到SEPHMI。
4.2.1、上层部署Redis
在上层网络部署Redis,各被监控软件心跳状态信息到Redis中,上层SEPHMI通过Redis来获取状态,即在SEPHMI上注册软件的时候,需要配置Redis的地址。这个时候需要注意的是各被监控软件在Redis中的位号名称不能重复。

Redis中存储位号的格式为:
4.2.2、下层部署SEPHMI客户端
下层网络部署客户端SEPHMI,用来给上层SEPHMI进行数据转发,即实现由下向上的单向传输。此时在上层SEPHMI中进行软件注册的时候,被监控软件的Address配置的地址为相对于下层SEPHMI的地址。

5、SEPHMI作为被监控端的配置方法
以下统一简称SEPHMI监控端为sephmiA,SEPHMI被监控端为sephmiB:
5.1、sephmiA与sephmiB被监控端直接建立连接
1、这种情况是在sephmiA可以直接向sephmiB请求状态的情况;
2、在sephmiA的注册界面中配置sephmiB的Address的时候,sephmiB的运行地址以http://192.168.1.6:9999为例,则Address填写的地址为:http://192.168.1.6:9999/status
3、在注册界面中配置sephmiB的StatusTagName,即sephmiB的状态位号名称,在当前直接建立连接的模式下,此处StatusTagName随便填写一个名字;
4、保存更新或者重新生成HMI监控画面即可。
5.2、SEPHMI被监控端通过Redis中转状态
5.2.1、原理
1、这种情况,一般是在sephmiA无法直接向sephmiB请求状态的情况下所采取的方式;
2、需要sephmiB定期更新自己的状态给Redis,这样sephmiA变可以通过Redis来确定sephmiB的状态;
5.2.2、sephmiB推送状态给Redis的方法
1、在产品官网中下载“SEPHMI-定时任务管理-在线状态推送配置模板”,将下载好的工程导入到sephmiB中并访问;
2、进入“STATUS TAGNAME”菜单,并添加一个状态位号,以下将以名称“HMI-STATUS”为例;

3、进入“STATUS TASK”菜单,新建一个任务,执行周期可设置为10s(可根据实际情况进行调整,为了不影响sephmiB的整体性能,建议不要设置过小),执行代码“updateMyStatusTime("redis://192.168.1.6:9379:SeptecRedis");”,其中updateMyStatusTime为系统函数,代表更新一个状态时间到一个接口地址上,括号中用双引号包起来的内容,就是目标接口地址,当前填写的就是一个Redis地址。
说明:系统所支持的函数,可在帮助中查询,即在任务编辑界面中,点击黄色问号图标,可打开系统函数的帮助说明。
4、在创建好这个任务之后,系统便会根据设置的周期“10s”进行循环执行;
5、Redis验证:可用一个Redis客户端连接到服务器redis之后,找到tag:HMI-STATUS这个key,看其值是否会根据周期时间进行变动。

5.2.3、sephmiA的注册界面中的配置
1、在注册界面中配置sephmiB的StatusTagName,即sephmiB的状态位号名称,填写在sephmiB中配置好的位号名称,即5.2.2中配置的名字:HMI-STATUS;
2、在注册界面中配置sephmiB的Address,即sephmiB的状态位号连接地址,在当前通过Redis中转的模式下,此地址则填写Redis的连接地址即可,如:redis://192.168.1.6:9379:SeptecRedis,与5.2.2中配置的任务中的redis一致;
2、保存更新或者重新生成HMI监控画面即可。
6、SEPHMI监控RDI的配置方法
6.1、关于RDI的端口配置
RDI在启动的时候便启动了状态接口的端口,但是默认是限制仅本机内可访问,外部无法访问,即如果SEPHMI(不管是监控端还是用于中转的Client端)与RDI不在同一台服务器,那么需要进行一下配置的修改:
在RDI的config目录,有个SeptecSrvConfig.ini配置文件,用记事本打开:
这里有个HttpIp=127.0.0.1,即默认限制仅本机内部可访问,如要允许外部访问,可进行如下两种方式的修改
所以0.0.0.0是全部放开访问,192.168.0.7是局部网络放开访问。
另外如果已经设置放开了范围,外部还是无法访问到,可以检查一下防火墙设置,需要将9071端口放开。
6.2、直接连接
即从网络层面监控端SEPHMI可以直接连接到被监控端的RDI。注册软件时的配置示例如下:

Address地址说明:RDI的状态接口是httpGet方式的接口,默认的http://开头的接口地址采用的是httpPost方式,为了进行区分,httpGet方式的接口以get://开头进行配置
运行效果:

6.3、中转连接
是指监控端SEPHMI(以下用SEPHMI-Monitor代替)无法直接向被监控端的RDI请求数据,这个时候需要中转数据。这种情况有两个方案:一是按上面4.2.2的CS模式来实现;二是如果实际情况不能使用CS模式(CS模式的局限性是导致server端的所有数据请求会整体都需要client端的SEPHMI来提供,可能不适用于所有场景),则可以改成上层网络部署Redis,下层SEPHMI来中转数据给Redis的方式来实现,即在RDI服务器上或相同网络环境下的其他服务器上部署一个SEPHMI(以下用SEPHMI-Client代替),让它去读取RDI的状态,然后转发给上层Redis(监控端SEPHMI-Monitor能够连接到的Redis),SEPHMI-Monitor上注册这个RDI软件的时候,Address则配置为Redis的连接地址即可。
下面以第二个方案来进行说明:

6.3.1、SEPHMI-Client配置软点
1、到《SEPHMI-定时任务管理-(状态推送、日志推送)模板》中下载导出工程-定时任务管理v3-(状态推送、日志推送)20251216111808.project工程,导入到SEPHMI-Client端并运行;
2、进入到OTHER TAGNAME菜单,添加一个新的位号,位号名可以自定义,但是最终需要与SEPHMI-Monitor端注册时的状态位号名一致;
读取地址:配置的是该位号的值来自于哪里;
回写地址:配置的是该位号的值回写到哪里。
6.3.2、SEPHMI-Client配置推送任务
进入STATUS TASK,创建一个新的任务,任务的内容是tagReWrite("RDI2-STATUS","value","");即内容是定期回写RDI2-STATUS这个位号,回写值固定写的是“value”,这个代表回写值不是一个固定的值,而是需要去动态读取,读取的数据源是在上一步中设置的读取地址;第三个参数为空,这个参数是指回写到哪里,即目标接口地址,为空代表该地址,也是在上一步中配置的回写地址,如果不为空,则以此处配置的地址为优先。
6.3.3、SEPHMI-Monitor配置注册信息

运行效果:

7、SEPHMI监控Sepsim的配置方法
7.1、直接连接
即从网络层面监控端SEPHMI可以直接连接到被监控端的Sepsim。
7.1.1、被监控端Sepsim端配置状态位号
1、右键算法图标区域,选择OnLine1

2、点击SysParam算法图标,拖入流程图组态区域,将激活设置为true,然后设置该位号名称,如:SEPSIM1-STATUS,位号名可以自定义,但最终需要与监控端SEPHMI中软件注册信息中的状态位号名称保持一致:
提示:在Sepsim中新建的位号,保存之后,需要重启一下Sepsim才能在接口中生效。
7.1.2、监控端SEPHMI配置软件注册
在Address中直接配置Sepsim的接口地址,并且StatusTagName配置为Sepsim里的状态位号名称,但是注意,这个位号是有个特定的后缀SysTimer,如上面的“SEPSIM1-STATUS”,在此配置的时候位号名为“SEPSIM1-STATUS.SysTimer”
7.1.3、运行效果

7.2、中转连接
是指监控端SEPHMI(以下用SEPHMI-Monitor代替)无法直接向被监控端的Sepsim请求数据,这个时候需要中转数据。这种情况有两个方案:一是按上面4.2.2的CS模式来实现;二是如果实际情况不能使用CS模式(CS模式的局限性是导致server端的所有数据请求会整体都需要client端的SEPHMI来提供,可能不适用于所有场景),则可以改成上层网络部署Redis,下层SEPHMI来中转数据给Redis的方式来实现,即在Sepsim服务器上或相同网络环境下的其他服务器上部署一个SEPHMI(以下用SEPHMI-Client代替),让它去读取RDI的状态,然后转发给上层Redis(监控端SEPHMI-Monitor能够连接到的Redis),SEPHMI-Monitor上注册这个Sepsim软件的时候,Address则配置为Redis的连接地址即可。
下面以第二个方案来进行说明:
7.2.1、SEPHMI-Client配置软点
1、到《SEPHMI-定时任务管理-(状态推送、日志推送)模板》中下载导出工程-定时任务管理v3-(状态推送、日志推送)20251216111808.project工程,导入到SEPHMI-Client端并运行;
2、进入到OTHER TAGNAME菜单,添加一个新的位号,位号名可以自定义,但是最终需要与SEPHMI-Monitor端注册时的状态位号名一致;
位号名:注意,这里配置的Sepsim的状态位号名有个特定的后缀SysTimer,如Sepsim里配置的位号名为“SEPSIM1-STATUS”,则在此配置的时候位号名为“SEPSIM1-STATUS.SysTimer”
读取地址:配置的是该位号的值来自于哪里;
回写地址:配置的是该位号的值回写到哪里。
7.2.2、SEPHMI-Client配置推送任务
进入STATUS TASK,创建一个新的任务,任务的内容是tagReWrite("SEPSIM1-STATUS.SysTimer","value","");即内容是定期回写SEPSIM1-STATUS.SysTimer这个位号,回写值固定写的是“value”,这个代表回写值不是一个固定的值,而是需要去动态读取,读取的数据源是在上一步中设置的读取地址;第三个参数为空,这个参数是指回写到哪里,即目标接口地址,为空代表该地址,也是在上一步中配置的回写地址,如果不为空,则以此处配置的地址为优先。

7.2.3、SEPHMI-Monitor配置注册信息

运行效果:





