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消息的框架中被使用。这些字符包括:

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

数据格式

在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145154.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

大模型推理性能优化

LLM 推理的核心指标 首 Token 延迟(决定了用户体验) 延迟:从输入到输出最后一个 token 的延迟 吞吐量:每秒针对所有请求生成的 token 数(针对所有并发请求) 推理的性能卡点 1. KV-Cache 大小导致并发能力受限 LLM推理的过程是一个自回归的过程,前 i 次的token会作为…

Linux StableDiffusion下载外网插件失败, 自己下载安装

(sd) zhouyueubun:/data/sd-webui-aki-v4.9$ python webui.py 先看看使用插件时报的错 看截图就知道是SmilingWolf/wd-v1-4-vit-tagger-v2包不存在 先加载本地包&#xff0c;由于本地包没有&#xff0c;自动下载外网的包&#xff0c;需要科学上网访问外网网站哈。 https://h…

【千帆AppBuilder】零代码+组件+代码节点方式实现AI应用《法定退休年龄计算器》

欢迎来到《小5讲堂》 这是《千帆》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景创建应用基本信息角色指令引导信息 组件整体界面开始节点代码节…

tomcat服务搭建部署ujcms网站

tomcat服务搭建部署ujcms网站 关闭selinux和防火墙 setenforce 0 && systemctl stop firewalld安装java环境 #卸载原有java8环境 yum remove java*#上传java软件包&#xff0c;并解压缩 tar -xf openjdk-11.0.1_linux-x64_bin.tar.gz && mv jdk-11.0.1 jdk11…

绝缘子缺陷检测数据集

绝缘子缺陷检测数据集&#xff0c;2800张高清照片&#xff0c;已打好标签txt格式&#xff0c;可直接进行目标检测。7类标签&#xff1a;玻璃绝缘子&#xff0c;玻璃片脏污&#xff0c;玻璃片缺损&#xff0c;聚合物片脏污&#xff0c;聚合物片缺损&#xff0c;聚合物绝缘子&…

机器学习笔记(一)初识机器学习

1.定义 机器学习是一门多学科交叉专业&#xff0c;涵盖概率论知识&#xff0c;统计学知识&#xff0c;近似理论知识和复杂算法知识&#xff0c;使用计算机作为工具并致力于真实实时的模拟人类学习方式&#xff0c;并将现有内容进行知识结构划分来有效提高学习效率。 机器学习有…

JavaSE--零基础的开始笔记01:下载JDK以及Path环境变量的 配置

一.Java概述(觉得没必要的可以直接跳过)&#xff1a; Java是sun公司1995年推出&#xff0c;2009年被oracle收购又称为“甲骨文公司”。java之父&#xff1a;詹姆斯.高斯林 java是一门高级语言&#xff0c;接近人类语言程序易懂 。流行度很高&#xff0c;商业占用率高&#xf…

Java知识点小结3:内存回收

文章目录 对象引用强引用软引用&#xff08;SoftReference&#xff09;弱引用&#xff08;WeakReference&#xff09;考一考 虚引用&#xff08;PhantomReference&#xff09;总结 垃圾回收新生代老年代永生代 内存管理小技巧尽量使用直接量使用StringBuilder和StringBuffer进行…

【我的 PWN 学习手札】Tcache dup

前言 Tcache dup&#xff0c;实际上是 tcache 的 double free&#xff0c;能达到 UAF 的效果&#xff0c;实现 Tcache poisoning。 一、Tcache dup 早期 tcache 没有检查 double free&#xff0c;也没有对 counts 做检查。 对同一个大小落在 Tcachebin 的 chunk 进行 doubl…

鸿蒙媒体开发系列07——AVRecorder音频录制

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下方名片&#xff0c;关注公众号&#xff0c;公众号更新更快&#xff0c;同时也有更多学习资料和技术讨论群。 1、概述 在HarmonyOS系统中&#xff0c;多种API都提供了音频录制开发的支持&#x…

Stable Diffusion 使用详解(11)--- 场景ICON制作

目录 背景 controlNet 整体描述 Canny Lineart Depth 实际使用 AI绘制需求 绘制过程 PS打底 场景模型选择 设置提示词及绘制参数 controlnet 设置 canny 边缘 depth 深度 lineart 线稿 效果 背景 这段时间不知道为啥小伙伴似乎喜欢制作很符合自己场景的ICON。…

Codeforces Round 784 (Div. 4) Kotlin

本期封面原图 画师煮タ 大福豆 最近学了下Kotlin的基础语法 想着巩固一下就开了一把div4 最后几题没时间了还是换回了C 要不然没法AK了 Idea编译的时候最后必须加上一句main函数的调用&#xff0c;但是cf的测评机又不能加这一句&#xff0c;总是忘记注释掉所以ce了很多发&…

Leetcode Hot 100刷题记录 -Day18(反转链表)

反转链表&#xff1a; 问题描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&a…

工作中遇到的问题总结(1)

文章目录 第一题问题描述解决思路 第二题问题描述解决思路核心大表如何优化数据迁移过程是怎么样的如何将流量从旧系统迁移到新系统上 第三题问题描述解决思路 第四题问题描述解决思路方案一&#xff1a;双写机制方案二&#xff1a;基于时间戳的分流机制方案三&#xff1a;灰度…

【资料分析】刷题日记3

第一套 √ 考点&#xff1a;基期比重差很温柔的题 普通专科女生 占比 52.5% - 1.7% 50.8% 成人本专科女生 占比 57.8% - 4.6% 53.2% 相比降低了2.4% 知比重和部分量&#xff0c;求整体在花生老师的解法中体会啥叫适当约分 0.1899 / 47.8% / 87.5% 》0.19 / &#xff08;4…

MySQL高阶1890-2020年最后一次登录

目录 题目 准备数据 分析数据 题目 编写解决方案以获取在 2020 年登录过的所有用户的本年度 最后一次 登录时间。结果集 不 包含 2020 年没有登录过的用户。 返回的结果集可以按 任意顺序 排列。 准备数据 Create table If Not Exists Logins (user_id int, time_stamp …

Ansbile-变量

文章目录 一、Ansible的常量&#xff08;内置的变量&#xff09;有哪些&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1…

Java之封装

文章目录 1.封装1.1 什么是封装1.2 访问限定符1.3 包1.3.1 什么是包1.3.2 导包1.3.3 自定义包 2. static2.1 static 修饰成员变量2.2 static 修饰成员方法2.3 static成员变量初始化 3. 代码快3.1 普通代码块3.2 实例代码块3.3 静态代码块 4. 对象的打印 1.封装 1.1 什么是封装…

力扣 713.乘积小于k的子数组

文章目录 题目介绍解法 题目介绍 解法 和209.长度最小的子数组思路大致相同。 思路&#xff1a;如果从l到r这一段的乘积是小于k的&#xff0c;那么[l,r]、[l1,r]….[r,r]这些子数组都是满足乘积小于k的&#xff0c;一共有r-l1个。 class Solution {public int minSubArrayLen…

Node.js backend for OpenAI image generation giving error code 400

题意&#xff1a;用于 OpenAI 图像生成的 Node.js 后端返回错误代码 400。 问题背景&#xff1a; I am trying to build a backend for the first time using Node.js. This is what I need: Generate image based on prompt -> Get the image and upload it to supabase s…