Troubleshooting

一、连接

1、IOT连接plc失败,kepware可以正常连接plc

  • (1)现场PLC工程师确认连接地址是否能通,端口是否能通
  • (2)服务器能否ping通PLC
若上述已确认无误,继续核查:
  • (1)确认Kepware是否跟IOT连接用的相同类型协议
  • (2)确认kepware连接plc时填写的地址与端口是什么
  • (3)kepware与IOT是否在同一服务器同个网络环境下,若kepware与IOT不在同个服务器,网络环境不一致,则kepware能正常连接plc无参考意义
建议先将kepware在服务器上用核查正确的地址,端口连接,看是否能连接成功;若能连接成功,则将kepware断开,用同样的协议、同样的地址和端口在同个服务器上将PLC与IOT连接,若仍无法连接成功,请联系售后工程师。

2、IOT连接PLC失败,部署在其他环境的IOT能成功连接同个PLC

  • 查一下PLC是否有外部访问限制,建议不要将同一个PLC同时连接多个环境的IOT
  • 确认连接失败环境的服务器能否ping通PLC

3、IOT无法连接PLC/ 启用连接,连接状态显示“未启用”,设备状态异常

答复:确认连接地址、端口是否能通;核查IOT所在服务器能否Ping通PLC地址

4、创建OPC UA协议的连接失败怎么办?

  • (1)若通过OPC UA连接硬件,由于不同PLC之间性能有较大差距,建议开启订阅模式,批量订阅可节省性能;若通过OPC UA连接软件,如kepserver,是否启用订阅模式均可
  • (2)连接硬件OPC UA设备时,批量订阅第一次响应会比较慢,建议把连接超时延长,比如30秒,系统默认10秒
  • (3)建议开自动降级和独立线程

5、IOT连接西门子 s7-1500失败

答复:核查连接地址、连接端口是否能通;检查服务器能否PING通PLC;检查“连接”页面是否正确配置【机架号】、【CPU槽号】

6、kepware与IOT连接失败

原因:可能存在个别设备采集间隔配置有误,采集间隔过短占用大量线程,连接耗时过长导致超时连接失败;为避免此类问题系统默认在所有创建的连接中打开自动降级、独立线程。

7、什么情况需要打开自动降级、独立线程?

答复点位采集不成功(比如属性有实时值无历史值)、采集不稳定、写入慢、采集有延时的情况,可打开自动降级和独立线程,减少PLC硬件性能引起的读写失败问题。
路径:【边缘连接服务】-【边缘连接管理】-【连接管理】-【新增/修改连接】
  • 自动降级作用:如果某个属性设置50ms采集间隔但未采集成功,会自动调大采集间隔去采集,降低用户误操作将采集间隔配置过小产生线程占用的影响。
  • 独立线程作用:所有与该连接绑定的设备,采集点位将采用独立线程,优先保证该PLC采集不受线程和性能限制

二、设备属性

2.1 属性读实时值问题

1、IOT无法采集到实时值,连接正常,plc有值

原因:(1)确认点位地址是否正确;核对数据类型是否一致(可查看edge-connection日志确认错误问题)
(2)INT16/32/64等数据类型,“是否正数”字段需要选否。
(3)若设备是通过opc ua协议连接IOT的,需检查连接是否开启订阅模式,连接超时尝试调大到30秒,尝试开启独立线程和自动降级。调整完后重新开闭启用一下连接。
(4)若mq有问题导致数据丢失,则无法通过mq同步到connection,同步失败属性列表页面不显示实时值。

2、实时值读值有延时,隔一段时间才会读到,返回值较慢

解决方法:调大设备对应连接的“连接超时

3、属性实时值显示“地址错误”,设备连接正常

原因:代表属性地址有误,需核查属性地址的正确性

4、属性实时值显示“服务错误”,设备连接正常

原因:“服务错误”表示地址格式是合法的,查数据地址plc是否完成初始化

5、属性实时值显示“订阅异常”

原因:西门子PLC一部分型号通过OPC UA连接IOT需要用订阅模式,PLC有订阅数量上限,超过上限IOT将无法正常接收值

6、属性实时值显示“没有值返回”

原因:若通过OPC UA连接IOT并开启订阅模式,意味着订阅失败未向IOT推送值

7、属性实时值显示“地址未定义”,在两个不同环境的IOT同时连接同一个PLC,一个环境的IOT能正常采集点位,另一个环境IOT无法正常采集

答复:查一下PLC是否有连接上限,一般该情形下PLC只允许一个socket通讯,建议不要在两个环境的IOT同时连接一个PLC进行测试

2.2 属性历史值问题

1、周期采集的属性突然无历史值,设备连接正常,之前该设备采集值一切正常

答复(1)查日志,connection服务是否有停掉,若connection服务有掉线情况可进一步排查服务掉线原因
(2)查RabbitMQ是否有消息堆积
(3)查data-storage服务是否掉线

2、IOT无历史值,有实时值,连接正常,IOT通过kepserver采集值

答复:通过OPC UA或kepserver连接设备,建议属性用周期采集,属性采集频率调大到1-2分钟左右,连接打开自动降级和独立线程(个别老版本有此类问题,新版本产品已修复)

3、历史值漏值,值改变采集的属性

解决方法:可能该属性值变化较快,建议缩短扫描间隔再观察

4、IOT记录历史值时间间隔与设置的周期采集频率不一致(IOT通过连接kepserver读取设备数据,使用非订阅模式)

原因:需要用测试工具从kepserver读设备数据,核查是否存在响应过慢的点。若从kepserver读取数据响应太慢,可能会导致IOT无法按照设定的周期成功采集上来数据。
解决方法:利用测试工具验证出读取kepserver数据响应时间比较长,调大“连接超时”时间

5、属性历史值偶尔为空,设备连接一切正常

原因:页面显示的为实时值,若plc值为空,则页面值显示空(字符串有可能出现空值其他类型数据类型为空可能有问题

2.3 写入值

1、通过IOT页面“手动写入值”写入失败,报“INVALID_DATATYPE: null”

解决方案:核查数据类型是否正确;数据类型为Int8/16/32/64等类似类型,“是否正数”选“否”

2、封装方式“writeValuesByCode”接口写入值,写入响应时间过长

解决方案:可能是PLC负载过大造成,建议将设备对应的连接自动降级、独立线程打开

2.4 设备/属性配置

1、modbus数据采集配置注意事项:

(1)地址域不能错误,否则会导致一个连接下所有点位读取出现异常(包括地址配置正确的)!
(2)地址偏移问题:大部分设备地址从0开始编号,个别设备地址从1开始编号,在IOT系统填写属性地址时需要在被提供的原始地址上+1。(如客户提供原始地址40000,IOT系统属性地址写40001)
(3)字符串类型的属性,一定要配置字符串长度,否则属性采集会报错

2、值改变与周期采集的区别是什么?

值改变的扫描间隔含义:若设置1000毫秒,则每1000毫秒扫描一次点位,若值发生改变则存储到数据库。
建议值改变的属性扫描间隔批量设置成相同的,可降低plc负载提高效率比如变化较快的属性点可以统一设置成500毫秒,200毫秒等,变化不快的属性点可统一设置成1000毫秒或更长。尽量避免某个属性扫描间隔与其他属性不同的情况,会占用较多线程。
无论是周期采集还是值改变,时间间隔不能随便配!建议统一时间间隔!

3、“是否正数”含义是什么?

答复:opc ua协议类型的设备,若数据类型为UInt8/16/32/64等类似类型,为无符号数,“是否正数”字段需选“是”;若数据类型为Int8/16/32/64等类似类型,“是否正数”选“否”。

4、已创建的设备添加连接,设备状态显示“尚未分配连接”,数据无法采集,连接状态正常

原因:建议按照官方推荐的操作顺序,提前配置好连接,第一次创建设备时尽量选择连接,否则会出现问题中的情形
解决方案:重启edge-connection服务

5、西门子I Q M V几类数据地址是否支持?

答复:已支持

6、在mysql库中直接修改设备名称、设备编码等字段,修改完成后需要重启服务吗?

答复:需要重启服务edge-connection、edge-management、data-query、data-storage

2.5 批量导入

1、导入属性报“导入属性失败”

原因:查nginx文件上传附件大小限制;建议多次分批导入,不要一次性大量导入属性,导致等待时间过长

2、导入设备报“网关超时,导入设备失败”,过一会后设备成功导入

原因:查nginx api 超时时间配置;导入设备时建议拆多个文件导入;目前api超时时间已经调整为5分钟,一般不会出现网关超时报错

三、页面报错/服务掉线

1、登录IOT系统提示“登录错误”

答复:查auth权限服务是否正常启动,配置正确的情况重启服务即可正常登入

2、登入系统,打开二级菜单页报错“服务器发生错误,请检查服务器”

答复:查IOT“系统监控”菜单中的【服务监控】、【中间件监控】是否有服务显示离线(如何解决服务离线请查看【问题3】),正常情况下所有服务应全部在线。
服务掉线可执行重启命令
docker restart gateway-license
docker restart edge-management
docker restart data-storage-service

3、服务离线原因是什么?

原因:重启掉线的服务,若重启后服务恢复正常,可能是服务内存溢出造成,建议重新调整服务内存。可在【系统监控】-【服务监控】,修改对应服务最大内存。提交后即自动重启该服务。

4、如何减少内存溢出造成服务掉线影响?

答复:可以为各个微服务内存配置阈值报警,若内存达到报警值则指定用户将收到报警邮件。具体操作步骤详见 如何配置服务内存溢出报警

5、收到服务离线报警邮件,但查询服务日志后发现服务未发生掉线,原因是什么?

答复:由于网络波动可能导致监控服务请求其他服务健康信息失败,监控认为服务离线,因此发送邮件

6、服务器关闭重启后,设备连接能否自动重连?

答复:服务器重启,edge-connection可自动重启,IOT连接将自动重连。

7、打开页面报错“服务错误,socket closed”

答复:表明对应服务挂了,可尝试查询服务日志并重启服务

8、IOT提示“授权即将到期”,如何查看授权日期

  • (1)CAS点击IOT应用的“授权管理”,弹出应用授权详情页面。
  • (2)通过接口查看授权有效期 
license-1.6及以上版本:http://LICENSE_LOCAL_IP:8081/api/license/list
license-1.6以下或者兼容1.5模式部署的license版本:http://LICENSE_LOCAL_IP:8081/api/license-registration/activation-status

四、数据发布/订阅

1、平台内置MQTT版本是多少?

2、RabbitMQ订阅设备报警,IOT页面显示属性已触发报警,MQ订阅不到消息

答复:检查queue是否绑定到hiot(周期采集属性)、hiot.subscribe(值改变属性)交换机

3、connection服务异常掉线之后,mq订阅断掉,IOT是否会将消息放入mq导致消息堆积?

答复:connection服务停掉,不会有多余消息出来。因为是connection服务负责采集之后向mq放消息

4、RabbitMQ队列注意要有消费者,避免消息堆积太多

注意:RabbitMQ中可以查看队列中具体的消费者情况

5、一部分属性数据发布变更到mq新的交换机,原有交换机绑定的队列均未解绑,新交换机缺失绑定队列,导致无法订阅属性数据

答复:若用nacos做配置中心,nacos交换机名称未修改,只在本地修改交换机名称无法生效。

6、下图两种接口订阅方式的区别

答复:第一个接口只有点位变化才会读取,第二个接口一个设备下某个点位发生变化,这个设备下的所有点位都会读取

五、接口

1、历史数据接口:根据传入的equipmentID,fieldName查询单一属性历史值

①参数是否可以不传开始时间?

答复:可以

②limit设置为2,为何返回4条数据?

:后面两条为插入的属性采集状态,属性历史值查询数量只有2条

六、监控与权限

1、如何查看各服务版本号

答复:可在【系统监控】-【服务监控】中查看各服务版本号。服务版本号的第二位为产品版本编号,第三位为服务版本编号

2、如何查iot新建用户的默认密码是多少?

答复:密码有hash值限制无法查到,必须自己记住;
如果需要查看默认密码,可以通过查看h-visions.auth.password项配置值;如果密码仍然存在问题,可以使用swagger界面(如果开启的话)或者控制台调用/user/resetPassword/{userId}命令重置密码

3、如何为用户只配置设备的查看权限,无设备编辑权限?

答复:【权限管理】-【用户管理】用户列表中,选中某个用户,右侧tab页切换“数据权限”,选中某个设备,右侧选择读写权限。全部配置完成后,点击底部“提交”按钮

4、如何延长IOT数据存储时长?

答复:左侧导航栏【系统管理】->【系统设置】->【通用设置】,可以设置系统监控数据设备采集数据存储时长。
系统监控数据指的是服务器、各个微服务的CPU、内存、磁盘历史数据;设备采集数据指的是设备采集的历史数据。

七、物模型

1、设备通过继承物模型创建,物模型属性更改后,设备属性为什么不会同步修改?

原因:需要在物模型属性界面同步更新至指定设备中。具体操作方法详见物模型属性管理 | HiperM³ 产品帮助中心 (h-visions.com)。物模型报警也有同步更新功能,具体详见物模型报警管理 | HiperM³ 产品帮助中心 (h-visions.com)

2、物模型属性、报警是否支持批量删除?

答复:由于物模型属性、报警可以将绑定设备的配置信息同步删除,因此不支持批量删除,仅能单个手动删除。具体删除方式详见物模型属性管理 | HiperM³ 产品帮助中心 (h-visions.com)物模型报警管理 | HiperM³ 产品帮助中心 (h-visions.com)

八、数据引擎

1、数据引擎存储到数据库需注意的问题

(1)数据库表不能有特殊字符
(2)数据库表会自动初始化name、id、timestamp字段,
(3)实现自增的方式:int数据类型,勾选主键即可实现自增

2、数据存储类组件(如mysql服务)配置页,是否自动修改数据表结构作用?

答复:若上层的设备数据字段跟表的字段不一致,将变更表结构。若表结构字段已经提前维护好,与设备数据字段保持一致,则无需勾选。

3、设备输出组件,提示“输出的固定值不能为空”

原因:需先点击“√”再点击“提交
2024-10-17
0