U-con(User Configuraable)
一般来说,我们在日常的项目中碰到的底层设备,使用的都是标准的协议。所谓的标准协议就是通信双方约定俗成的一组规则,是通信双方必须共同遵从的一组约定。比如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,设备之间才能相互通信交流。它的三要素是:
语法:即数据与控制信息的结构或格式;
语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
时序:事件实现顺序的详细说明。
然而并不是所有设备都遵循标准的协议,在实际项目中,我们会碰到很多非标准协议的通讯设备,这时 KEPServer 上的标准的驱动程序就无法适应这些设备的通信。但是 KEPServer 的相关开发人员已经考虑到这种情况,使用者可以通过 u-con driver 配置出合适的通信报文。下面我们针对这种场景的实际使用做出详细说明:
1.1 U-con 配置
1)新建一个 channel,选择 U-con driver;
2) 配置串口属性,之后就一直是“下一步”即可;
3) 新建一个 device,一直“下一步”即可;
4) 配置通信报文,双击device,在弹出的对话框中选中“Transaction Editor”;
5) 在弹出的对话框中,新建一个 tag;
6) 当成功创建后,就要编辑 tag 的读写命令,这个要根据设备供应商提供 的资料文档而定。比如有些设备读取数据的方式是一问一答,这就要上 位机程序发送读命令告诉设备要读取的数据。有些设备是不管有没有上位机程序连接,一直往外发送数据,这时上位程序只需要解析数据包即可。这里为了介绍方便,设备是采用一问一答的方式,同时读命令为 “>00VD0284”,响应报文“<00VD028400001234”,写命令“>00WD0284+ 数据”,响应报文“<00VD0284+数据”;
7) 构造写命令
8) 保存编辑
9) 新建标记点
到此,u-con 的基本配置就结束了,当然 u-con 还有很多强大的功能并没有使用上,相关的功能只能等待以后用到才能一一了解。
1.2 u-con 的细节应用
1)Communication diagnostic 当编辑好设备的通信报文,可以通过连接设备检验编辑的正确性。但是如果身边没有设备可用或者发送的命令,设备却没有响应,这时可以通过查看通信报文来检查。KEPServer 提供一个 Communication diagnostic 给使用者查看发送 和接收的报文。
A. 启 用 Communication diagnostic , 双 击 channel ,点击 General-Enablediagnostic;
B. 打 开 Communication diagnostic ,点击工具栏 view-Communication diagnostic;
1.3 KEPServer 使用延伸
项目中使用 KEPServer,碰到一些使用上的问题,通过查找资料、KEPServer 技术人员指导和自我的测试验证,总算得到解决,以下是问题和解决方法:
1) Q:(mobdus 协议)按照设备资料提供的地址,添加点,发现不能如期采集到设备数据?
A:在资料提供的地址基础上加 1,极个别设备有可能要加 2(就是一些寄存器起始地址为 0,而又用双字存储数据的设备),因为对于 mobdus 协 议来说,0 这个地址是作为广播地址,因此不能用作寄存器地址,所以无 论哪种模式下的 mobdus 协议的起始地址都为 1。
2) Q:在地址正确的提前下,发现读取的数据有误?
A:针对不同协议或者设备,在保证地址正确的前提下,还应该检查数据类 型,比如西门子 s7-200 的 m 开头的地址就可以有几种类型选择,所以在 选择地址的数据类型时最好看一下帮助文档,同时还应该根据设备的寄 存器或者数据来选择对应的数据类型,比如实际数据有正负之分,就应 该选取 short 等有符号类型,又或者数据实际范围只有 0~128,就选择 byte 等。
3) Q: 在地址和数据类型都正确的前提下,读取的数据仍然有误?(数据是双 字,即 float、Dword 等 32位的数据类型)。
A:这时可以考虑是不是设备的数据高低位和 KEPServer 数据的高低位不一致,可以通过 device 的属性——setting-Data encoding,表示数据编码。
4) Q:在不添加数据处理程序时,对数据进行初步的处理?
A: 可以对每个 tag 的属性scaling 进行设置,比如选择线性变化时,可以 通过设置 Raw Value Range 的 High 和 Low 来对原始数据进行放大缩小。
Linear 公式:
(((ScaledHigh – ScaledLow)/(RawHigh – RawLow))*(RawValue – RawLow)) + ScaledLow;
Square root 公式:
(Square root ((RawValue – RawLow)/(RawHigh – RawLow))*(ScaledHigh – ScaledLow)) + ScaledLow。
5) Q:因为某一设备通讯中断,导致同一 channel 下面的其他设备通讯阻塞?
A: 在同一信道下的 device,KEPServer 是采取轮询的方式通讯的,但是对于每个信道,却是并行的,因此最好的办法是采取每个信道对应一个device。但是根据 KEPServer 技术人员所说,可以通过设置 device 属性Auto-Demotion(自动降级),让该设备不阻塞同一信道下的其他 device。
6) Q:在 Datalogger 中,把所有信道的 device 放在同一个 Logger,发现某些设备数据不记录而某些设备却能记录?
A: 跟信道下设备阻塞一样的道理,因为在同一个 Logger 下,所有的 tag 都是以轮询的方式进行,当某一个 tag 的通信质量为 bad 时,就会阻塞下 面的 tag,为了避免这种情况最好的方法是每个 device 对应一个 Logger。
7) KEPServer 的设置或者配置,有些是可以在运行过程中修改的,有些是不可以,当碰到不可以的情况时,如果修改只保存没有重新启动,KEPServer 只以没修改前的设置进行运作。
如若转载,请注明出处:https://www.hanjifoods.com/18709.html