好:
调研一个水泥厂的计量设备,的船运销售使用的是皮带秤,西门子的BW500,采用了modbus协议。
开始调试的时候,我们看到电脑后面连接了串口,以为和汽车衡的方式一样,结果使用原来的代码,根本就没有反应。。。
于是开始到处找人问,经高人指点,可能使用的是modbus协议(当时傻X了,实际上西门子给客户的手册上写得明明白白的。。),上网下了一个modbus4j,是modbus协议的java开发包,开源的。
写好代码,连接后,返回类似如下的数据
[12738,98,0,0,-1,.....],看得我们一头雾水。
科普一下,网上找的modbus的解释:
Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。
1.ASCII模式
当控制器设为在Modbus网络上以ASCII(美国标准信息交换代码)模式通信,在消息中的每个8Bit字节都作为一个ASCII码(两个十六进制字符)发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。
2、RTU模式
当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit字节包含两个4Bit的 十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。
回去以后上网查了不少PLC、modbus相关的资料,也看了西门子BW500的手册,有了些许眉目.
关于slave和master:
皮带秤(对我们来说就是显示的仪表)是作为slave,计算机作为master。
这种划分是因为对于同一个串口可能连接多个modbus设备,这样就需要用slaveid来区分。
而从一个java程序员的理解来看,modbus
slave(仪表)就像一个server,我们(计算机程序--master)通过串口(功能相当于网线)连接仪表(这里是西门子BW500)发送请求(request),仪表会返回一个bit数组(respose)。
这样看来,slave相当于server,master相当于client。
请求格式:
发送的请求信息中包括串口名(COM1,2,3等)slaveId(范围是1-247,仪表可以设置),开始位置,需要返回的个数。
由于仪表的保持寄存器(你可以当成内存来理解),每位是16字节,BW500仪表可以存放9999位。
比如我需要1000-1020位的数据,开始位置就是1000,需要返回的个数就是21。
返回格式:
如上所述。返回一个16位(对应java中short)数组,在java中看就是short[需要返回的个数]
拿到以后还不算完,因为每位是short类型,而大多数的数据时int甚至long型的,另外还带有小数。所以需要用返回的short数组进行运算才能得到想要的值,
皮带秤1的算法如下:
数据结构:第1016位和1017位共同表示表示仪表累积量。
用1017位的short值的二进制作为高16位。
用1016位的short值的二进制作为低16位。
组成一个新的32位int型数据,
转为10进制
除以1000。
得到一个带有3位小数的值,这就是最终的仪表上的累积量。
具体例子:
1016:-6149
二进制:1110011111111011(注意,如果不足16位,前面要补零)
1017:250 二进制:11111010
最终二进制111110101110011111111011
转为十进制16443387
以上几步在java可以这样:
public int joinBinary(short low, short high) {
int intLow = (int) low & 0xFFFF;
int intHigh = ((int) high << 16) & 0xFFFF0000;
return intHigh | intLow;
}
除1000=16443.387(仪表上显示的是16443.38
看起来是舍弃了最后一位)
当然这只是西门子BW500仪表的算法,如果是其他仪表,就要根据其技术手册上的描述进行计算。
另外想说的一点就是技术手册上的内容感觉就是针对熟悉硬件的人员的,比如BW500上关于累积量的取值就一句话:4016和4017代表累积量。
当时猜了好久,各种试,在快绝望的最后一刻给弄出来了。。。。。
上网搜基本全是卖设备的,偶尔有一个文档,兴冲冲的打开,发现和手里的一样。。。。
找到一个英文的打开---就是手里技术手册的英文原版。。。。。
关于modbus,我的理解也仅限于这些。有问题可以交流。
后记:
其实不用modbus4j也是可以的,只要能连上串口就可以了,向串口写符合modbus格式的数据,仪表就会返回数据了
<script></script>
分享到:
相关推荐
- **多样化的通讯接口**:支持多种标准通讯协议,如PROFIBUS、MODBUS等,便于与其他设备或系统的连接。 - **灵活的网络配置**:可以根据实际应用环境灵活配置网络结构,提高系统整体的灵活性和扩展性。 3. **操作...
根据给定的文件信息,我们可以提炼出关于西门子BW500中文使用说明书的关键知识点,涉及设备的安全使用、技术规格、安装指南、操作模式等多个方面。 ### 安全准则 安全是使用西门子BW500积算仪的前提。用户需严格...
拉姆齐皮带秤2001通讯协议,三种通讯方式。
德国申克皮带秤采集程序,modbus协议
- 西门子皮带秤的产品尺寸有多个规格,例如宽度从500mm到1800mm,不同规格的皮带秤适用于不同的运输带宽度。 - 根据CEMA(美国输送机制造商协会)标准,皮带秤可以有不同的尺寸设计,以适应不同的应用场合。 - ...
电子皮带秤是一种广泛应用于工业生产中的...综上所述,电子皮带秤的C语言程序设计涵盖硬件交互、数据处理、通信协议等多个方面,涉及到的知识点丰富,需要对工业控制、传感器技术、实时系统以及C语言编程有深入理解。
本文旨在通过对“西门子皮带秤应用参数”文档的详细解读,帮助用户更好地理解如何根据具体的应用场景选择合适的皮带秤配置,从而达到最佳的使用效果。 #### 二、客户信息及应用需求 **1. 客户基本信息** - **用户...
### 6001皮带秤积算器操作维护手册知识点 #### 一、设备概述与安全性 **1.1 概述** 6001皮带秤积算器是徐州赛摩电气股份有限公司推出的一款专业用于皮带输送机物料流量控制与累积计算的设备。该设备采用先进的...
### 关于电子皮带秤说明书的知识点解析 #### 第一部分:概述 电子皮带秤是一种在工业领域广泛应用的测量工具,主要用于对散装物料在皮带输送过程中进行连续且精准的重量测量。根据徐州山特电力测控设备有限公司...
应用指南针对西门子皮带秤的使用、安装、维护提供了一套全面的操作建议和安全指南,以确保称重的准确性和操作的安全性。 首先,西门子皮带秤在安装和操作之前,用户必须确保由合格人员来进行,且遵循既定的安全措施...
首先,"协议"可能是指电子皮带秤与其他系统通信的协议规范。在自动化生产环境中,电子皮带秤需要与上位机、PLC或其他监控系统进行数据交换,以实现远程监控和控制。这些协议可能包括MODBUS、OPC UA等工业通信协议,...
电子皮带秤是一种广泛应用于工业生产中的连续动态称重设备,尤其在煤炭、冶金、化工、粮食等行业中,用于实时监测和控制物料的输送量。本项目提供的“电子皮带秤仿真及程序”资料,旨在帮助用户理解其工作原理并通过...
### 数字式皮带秤知识点总结 #### 一、概述 **数字式皮带秤**是一种用于连续测量固体散料流量的计量设备,广泛应用于冶金、电力、化工、煤炭等行业中的输送线上。它通过精确测量输送带上物料的质量流量来实现自动...
电子皮带秤是一种重要的工业计量设备,用于实时、连续地测量通过皮带输送的物料重量。随着科技的进步,传统的基于51单片机和传统集成电路的电子皮带秤主机已经不能满足现代工业对精度和效率的需求。为了提升电子皮带...
#### 四、阵列式皮带秤使用指南 ##### 仪表操作说明 - **登录**: 用户需输入特定用户名和密码才能访问系统。 - **校验零点**: 通过零点校准功能确保秤处于零点状态,这是进行准确测量的前提条件。 - **标定**: ...
了解这些知识点对于相关行业的技术人员来说至关重要,他们需要根据这些规程来确保所使用的皮带秤的准确性和可靠性。这样,可以保证散状物料的计量准确无误,满足生产和贸易过程中的计量需求,同时保证公平交易和产品...
《2021年皮带秤行业市场需求分析及预测报告》深入探讨了皮带秤行业的现状、驱动力、市场规模以及未来发展趋势。以下是该报告的主要内容摘要: 一、序言 报告首先介绍了研究背景和目的,旨在对2021年中国皮带秤行业...
根据提供的文件信息“申克皮带秤仪表说明书.pdf”,我们可以推断出这是一份关于申克皮带秤仪表的操作手册。接下来将详细解读并总结该手册中的关键知识点。 ### 一、概述 #### 1.1 产品简介 申克皮带秤(INTECONT ...
皮带秤市场需求日益增加:全球皮带秤市场在2024年的估值为1.42亿美元 皮带秤是一种自动化称重设备,用于在输送带上连续称量散装物料,而无需中断输送带的运行。通过测量物料在输送带上的重量和速度,皮带秤能够实时...
在烟草行业中,电子皮带秤的使用对于保证烟丝配比质量至关重要,而零点的准确性又直接影响着电子皮带秤的计量精度。因此,烟草工业企业需要对电子皮带秤的零点进行精准的测量和调节,以确保其计量准确度,进而提高...