C#与宇电温控表自定义协议通信实例

Posted dotNet工控上位机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#与宇电温控表自定义协议通信实例相关的知识,希望对你有一定的参考价值。



写在前面


通信协议是做上位机开发经常会听到的一个词。无论是单片机开发常用的串口通信协议,还是上位机开发常用TCP/IP通信协议,以及网络通信常用的Http协议,可以这么说,通信协议无处不在。

对于通信协议,官方性解释是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。通俗地说,为了保证机器与机器之间能够正常对话,两者之间需要共同使用同一种语言,这种语言就是通信协议,就和中国人之间沟通使用普通话、本地人之间沟通使用方言、不同国家的人之间沟通使用英语是一个道理。





1 

通信协议剖析


本文主要针对的硬件是国内仪表市场占有率比较高的一个品牌——厦门宇电AI系列仪表。厦门宇电自动化科技有限公司专门为AI 系列显示控制仪表开发了一个通讯协议——AIBUS,这个AIBUS会有一系列的协议说明,对上位机开发人员来说,这就是一个自定义协议。

如果要和一个自定义协议的仪表进行通信,我们需要从以下几个环节着手去做:通信协议剖析、硬件配置及环境搭建、根据协议编写通信库、编写测试软件进行测试。

这里首先找到了该仪表的通信协议说明书,一般仪表或者PLC的通信协议可以通过供应商提供或者官网下载,宇电仪表通信协议下 载链接:

http://www.yudian.com/Download/11904/List.html

在协议说明书中,找到通信的核心报文部分:

AI 仪表采用 16 进制数据格式来表示各种指令代码及数据。AI 仪表软件通讯指令经过优化设计,标准的通讯指令只有两条,一条为读指令,一条为写指令,两条指令使得上位机软件编写容易,但能 100%完整地对仪表进行操作;标准读和写指令分别如下:


校验码:校验码采用 16 位求和校验方式,其中读指令的校验码计算方法为:

要读参数的代号×256+82+ADDR

写指令的校验码计算方法为:

要写的参数代号×256+67+要写的参数值+ADDR


返回数据:无论是读还是写,仪表都返回以下 10 个字节数据:

测量值 PV+给定值 SV+输出值MV及报警状态+所读/写参数值+校验码

其中 PVSV 及所读参数值均各占 2 个字节,代表一个 16 位二进制有符号补码整数,低位字节在前,高位字节在后,整数无法表示小数点,要求用户在上位机处理;MV 占一个字节,按 8 位有符号二进制数格式,数值范围-110~110,状态位占一个字节,校验码占 2个字节,共 10个字节。

    通过以上说明,可以发现AIBUS这个通信协议相对来说还是比较简单的,我们只需要按照规定,将组织好的报文发送给控制器,即可获取到测量值、给定值、输出值、报警状态及参数值。


2

硬件环境搭建


将整个环境搭建起来,需要涉及以下硬件:

  • Pt100铂热电阻


    C#与宇电温控表自定义协议通信实例

  • 宇电温控表

C#与宇电温控表自定义协议通信实例

  • RS485转USB

C#与宇电温控表自定义协议通信实例

  • 工控机电脑

C#与宇电温控表自定义协议通信实例

根据宇电温控表的接线图,整体硬件接线如下图所示:

C#与宇电温控表自定义协议通信实例



3

通信库开发



     通信库开发是本文的核心内容,这里需要有一定的C#编程基础,同时对通信协议有一定的认识和了解。
  • 初始化通讯:初始化通信主要是进行串口连接及断开连接方法的编写:

C#与宇电温控表自定义协议通信实例


  • 为了方便进行报文的组织,编写了一个报文拼接类ByteArray


C#与宇电温控表自定义协议通信实例

  • 校验:AIBUS协议中的校验采用校验和的方式:

读指令的校验码计算方法为:要读参数的代号×256+82+ADDR

写指令的校验码计算方法为:要写的参数代号×256+67+要写的参数值+ADDR

C#与宇电温控表自定义协议通信实例

  • 读取参数:AIBUS读取参数报文格式如下:

C#与宇电温控表自定义协议通信实例

  • 写入参数:AIBUS写入参数报文格式如下:

C#与宇电温控表自定义协议通信实例


4

通信软件开发

完成通信库开发后,再写通信软件就非常简单了,直接通过创建通信对象,调用相关的方法即可获取到相应的数据。

C#与宇电温控表自定义协议通信实例



5

写在最后


本文主要针对C#与厦门宇电温控表之间的自定义协议通信做了较为详细的描述,相信对于很多电气工程师,尤其是以西门子PLC为主的电气工程师来说,会有很大帮助。近几年随着人工智能、物联网的流程,工控行业发生了很大的变化,每一位电气工程师都应该及时作出调整,至少学习一门高级编程语言,未雨绸缪,以更好的姿态来应对即将到来的智能制造2025


点击阅读原文,学习更多上位机干货




往期文章




以上是关于C#与宇电温控表自定义协议通信实例的主要内容,如果未能解决你的问题,请参考以下文章

通过修改注册表建立Windows自定义协议

Netty——自定义协议通信

如何在 C# 中调用自定义 url 协议?

自定义用户层的灵活性串口通信协议

通信教程 | 自定义串口通信协议

自定义串口通信协议,如何实现?