EI-BISYNCH协议,欧陆2000系列设备读取数据

EI-Bisynch是一种基于ANSI X3.28-2.5 A4标准的专有协议,用于消息框架。尽管其名称中包含"Bisynch",但它实际上是一种基于ASCII的异步协议。数据通过7位数据位、偶校验和1个停止位进行传输。

4.1 术语解释

4.1.1 地址

每个仪器都有一个可配置的地址,由两位数字组成:第一位是"组"编号(0到9),第二位是"单元"编号(0到9)。原则上,这允许使用100个不同的地址(00到99)。然而,在2000系列仪器中,地址00保留用于配置模式,实际可用的地址为01到99。

地址可以通过用户界面设置,具体使用指定的参数。可能需要通过用户界面查看和修改该参数;有关详细说明,请参阅仪器手册。

4.1.2 助记符

EI-Bisynch通过"助记符"识别仪器内的参数。这些通常是特定参数的两位字母缩写。例如:

  • PV:过程变量

  • OP:输出

  • SP:设定点

I-Bisynch消息中使用的ASCII控制字符

控制字符

几个ASCII控制字符在EI-Bisynch消息的框架中被使用。这些字符包括:

十六进制值 名称 用途
02 STX 消息中的数据开始
03 ETX 消息结束
04 EOT 传输序列结束
05 ENQ 请求值
06 ACK 正确认可
15 NAK 负确认可

数据格式

在Bisynch消息中,数据以一系列ASCII可打印字符的形式发送。Series 2000仪器使用两种主要的数据格式:自由格式和十六进制格式。

4.2.1 自由数据格式

从仪器返回的参数值以"自由格式"呈现,长度可变。仪器将值以其前面板上显示的形式返回,不带前导或尾随空格,例如:

  • -99.9

  • 123.4

  • 123(整数值)

注意,尾随的小数点字符会被抑制。任何"符号"必须位于数字本身之前。写入仪器的值可以包含前导和尾随空格、前导或尾随零或符号指示。

这种格式用于几乎所有可通过EI-Bisync获取的2000系列参数,除了少数状态字和主要设置参数,它们使用"十六进制格式"。

注意:由于返回的值长度可变,因此需要使用终止的ETX字符来分隔数据值。除非您在非常有限的数字范围内操作(例如10.0到99.9),否则通常无法对表示值所使用的字符数量做出假设,在这种情况下,所有可能的值将传输4个字符。

4.2.2 十六进制数据格式

这种格式用于少数状态字和主要设置参数。值前面有一个'>'(十六进制3E)字符,通常由4个十六进制字符组成,尽管在写入参数时可以抑制前导零。这些字符表示16位无符号整数的十六进制(基数16)表示。'A'到'F'的大小写表示都是可以接受的,尽管仪器将始终返回大写。例如:

  • 2040 相当于8256十进制

  • ABCD 相当于43981十进制

此格式还与通道9指示符结合使用,以设置仪器的滚动列表。

4.3 从2000系列设备读取数据

要读取数据,需要向仪器发出一个"轮询"消息。该消息的格式如下:

EOTEOT(GID)(GID)(UID)(UID)(CHAN)(C1)(C2)ENQENQ

上述格式中的每一项都表示一个ASCII字符。用粗体显示的方括号中的项是控制字符,用于"框定"消息的起始和结束,它们的值可以参考第4.2节中的表格。括号中的普通字符项具有以下含义:

  • GID:组ID,即仪器地址的第一位数字。例如,地址为12的设备,GID为'1'(16进制为31);地址为1的设备,GID为'0'(16进制为30),地址01与地址1相同。GID被发送两次,作为验证机制。

  • UID:单元ID,即仪器地址的第二位数字。例如,地址为12的设备,UID为'2'(16进制为32);地址为1的设备,UID为'1'(16进制为31)。UID也被发送两次,作为验证机制。

  • CHAN:通道号,可选项。如果使用,发送'1'值表示2000系列的单回路控制器。

  • C1:助记符的第一个字符,用于访问的参数,例如'P'代表过程变量(Process Variable)。

  • C2:助记符的第二个字符,用于访问的参数,例如'V'代表过程变量(Process Variable)。

如果设备正确接收了消息并且助记符有效,它将以以下格式回复:

STXSTX(CHAN)(C1)(C2)<DATA>ETXETX(BCC)

  • CHAN:来自轮询消息的通道号回显,如果使用该字段,则返回该值;否则不返回。

  • C1, C2:来自轮询消息的助记符回显。

  • DATA:参数的值,格式可能是例如 99.9、1.2、-999、>1234 等的显示格式。

  • BCC:这是一个用于数据验证的块校验和。它通过对STX之后、ETX之前的所有字符进行异或(XOR)计算生成。请注意,它的值可能是'EOT',因此在编写协议驱动程序时需要小心,不要将其视为"传输结束"序列。

如果请求的是不存在的助记符,或者该助记符代表未配置的参数,设备将回复单个'EOT'字符。如果没有任何回复,则可能出现以下错误之一:

  • 接线不正确或硬件故障(电缆、PC、RS422/485适配器、设备通信模块)。

  • 设备地址设置错误(PC或设备)。

  • 线路设置错误,应为7个数据位、偶校验、1个停止位(PC)。

  • 波特率设置错误(PC或设备)。

  • 设备检测到奇偶校验错误(可能由线路噪声引起)。

  • 消息格式不正确(PC)。

为确定通信问题的原因,请系统地排查这些可能的原因。

参数读取示例

例如,当从地址为1的设备读取过程变量(PV)时,主设备发送和接收的字符序列如下:

主设备发送:EOTEOT0011PVENQENQ

设备回复:STXSTXPV16.4ETXETX{BCC}

注意,BCC是一个单字符值,在该例子中,其值为16进制的18。

以16进制显示的传输如下:

主设备:04 30 30 31 31 50 56 05

设备:02 50 56 31 36 2E 34 03 18

相关推荐
LabVIEW开发13 小时前
LabVIEW软件维护的内容是什么呢?
labview
LabVIEW开发2 天前
LabVIEW机动车动态制动性能校准系统
labview
LabVIEW开发3 天前
LabVIEW 可以同时支持脚本编程和图形编程
labview
街 三 仔3 天前
【LabVIEW学习篇 - 25】:JKI状态机
学习·labview
LabVIEW开发3 天前
LabVIEW减速机加载控制系统
labview·减速机
LabVIEW开发5 天前
LabVIEW中AVI帧转图像数据
labview·avi
劉小帅5 天前
labview串口大数据量报错的一种解决思路(通过tcp进行写入和读取串口数据)
tcp/ip·labview
LabVIEW开发6 天前
LabVIEW多语言支持优化
labview·多语言
LabVIEW开发6 天前
学LabVIEW编程,看编程书有些看不懂怎么办?
labview