一、连接
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、设备通过继承物模型创建,物模型属性更改后,设备属性为什么不会同步修改?
原因:需要在物模型属性界面同步更新至指定设备中。具体操作方法详见物模型属性配置。物模型报警也有同步更新功能,具体详见物模型报警配置
2、物模型属性、报警是否支持批量删除?
答复:由于物模型属性、报警可以将绑定设备的配置信息同步删除,因此不支持批量删除,仅能单个手动删除。具体删除方式详见物模型属性配置,物模型报警配置