码灵
爱码。
平时学习新的知识,看到了新的东西,记录下来。
展开
-
bacnet 对PresentValue写入和释放是什么意思
BACnet(Building Automation and Control Networks)是一种专为楼宇自动化和控制网络设计的通信协议。它允许不同的楼宇自动化设备和系统之间互相通信,以实现监控、控制和管理建筑中的各种设施,如HVAC(供暖、通风和空调系统)、照明、安全系统等。在BACnet中,是一个非常重要的属性,它表示了设备或系统当前的状态或值。这个属性可以被读取(即,从设备获取当前状态或值),也可以被写入(即,改变设备或系统的状态或值)。原创 2024-07-10 15:47:42 · 175 阅读 · 0 评论 -
CRC16详解和Java实现
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。原创 2024-02-28 14:15:02 · 3791 阅读 · 1 评论 -
Modbus测试工具ModbusPoll与Modbus Slave使用方法 小白实操记录
Modbus下面介绍modbus标准协议从站、主站仿真工具;可用于指令下发,数据采集等;是学习、现场运维的好工具。1 介绍Modbus Poll :Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持ModbusRTU、ASCII、TCP/IP。用来帮助开发人员测试Modbus从设备,或者其它Modbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。你可以从任意一个窗口读写寄存器和线圈。如果你想改原创 2020-09-13 11:44:51 · 10478 阅读 · 0 评论 -
OPCUA 标识符( Identifier)类型
这些标识符类型在 OPC UA 中有着不同的应用场景,例如数值型标识符主要用于预定义的节点类型和属性,字符串型标识符主要用于自定义节点类型和属性,GUID型标识符主要用于标识命名空间,URI型标识符主要用于标识节点和属性,而 Qualified Name型标识符和Localized Text型标识符则主要用于引用其他 Namespace 中的节点和属性,并且可以提供本地化支持。Opaque型标识符(Opaque Identifier):表示为任意字节序列,主要用于自定义的数据类型和结构体成员。原创 2023-04-17 18:21:12 · 1627 阅读 · 0 评论 -
org.eclipse.paho.client.mqttv3 源码解析(二) 接收
总体接收简单点,就是控制Qos的响应复杂点总体图在connect的时候开启了Task: public void connect(MqttConnectOptions options, MqttToken token) throws MqttException { synchronized (conLock) { MqttConnect connect = new MqttConnect(client.getClientId(),...原创 2020-09-20 14:23:55 · 905 阅读 · 0 评论 -
IEC104规约(二)协议报文解析
00 00 00(信息体地址)01(毫秒低位)02(毫秒高位)03(分钟)04(时)81(日与星期)09(月)05(年)00 00 00(信息体地址)**(毫秒低位)**(毫秒高位)**(分钟)04(时)81(日与星期)09(月)05(年)ad(毫秒低位)39(毫秒高位)1c(分钟)10(时)7a(日与星期)0b(月)05(年)2f(毫秒低位)40(毫秒高位)1c(分钟)10(时)7a(日与星期)0b(月)05(年)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)原创 2023-12-12 08:43:36 · 2791 阅读 · 0 评论 -
org.eclipse.paho.client.mqttv3 源码解析(一) 发送
这货是什么,这货能做消息推送,和其他手机端push一样有自己的协议体和算法讲究首先看下例子使用:public void testPubSub() throws Exception { String methodName = Utility.getMethodName(); LoggingUtilities.banner(log, cclass, methodName); IMqttClient client = null; try { String top...原创 2020-09-20 14:20:01 · 3316 阅读 · 0 评论 -
BCD编码Java实现
最常用的BCD编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在称之为“8421码”(日常所说的BCD码大都是指8421BCD码形式)。除此以外,对应不同需求,各人亦开发了不同的编码方法,以适应不同的需求。这些编码,大致可以分成有权码和无权码两种:有权BCD码,如:8421(最常用)、2421、5421…无权BCD码,如:余3码。8421码java实现如下。原创 2024-05-22 10:15:12 · 654 阅读 · 0 评论 -
Java Mqtt开发必需知识点(缓存、消息服务质量、主题过滤等)小白开发笔记
MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽非常昂贵。本协议运行在TCP/IP,或其它提供了有序、可靠、双向连接的网络连接上。它有以下特点:• 使用发布/订阅消息模式,提供了一对多的消息分发和应用之间的解耦。• 消息传输不需要知道负载内容。• 提供三种等级的服务质量:.原创 2020-09-20 14:15:32 · 3620 阅读 · 1 评论 -
USB转串口针线 USB四根线
总的来说,RXD+ 和 RXD- 用于数据的接收,而T/R+ 和 T/R- 则与RS-485接口的数据传输相关。其中,RXD+代表数据接收的正端,而RXD-代表数据接收的负端。绿色:代表USB数据线(正),其标识可能为Data+、USB Port +、USBD+、PD+、USBDT+等。其中,T/R+代表A+,即RS-485接口的正线;而T/R-代表B-,即RS-485接口的负线。在USB 2.0规范中,VCC线通常为红色。白色:代表USB数据线(负),其标识可能为Data-或USB Port -。原创 2024-05-31 17:07:36 · 4020 阅读 · 0 评论 -
西门子MPI PPI 区别
MPI(Multi-Point Interface)和PPI(Point-to-Point Interface)都是西门子PLC(Programmable Logic Controller)的通信接口,用于连接PLC与其他设备进行数据交换和通信。功能:MPI是一种多点通信接口,可以同时连接多个设备,如HMI(Human Machine Interface)、编程设备等。使用范围:MPI接口广泛用于中型和大型PLC系统,支持更多的设备连接和复杂的通信配置。PPI接口的传输速度较慢,适用于简单的数据传输。原创 2023-06-08 10:33:58 · 4406 阅读 · 0 评论 -
Java串口框架jSerialComm替换rxtxcomm
最开始使用的是rxtxcomm框架,部署时还要手动放驱动文件,而且后面没有进行维护,导致一些一些新系统不再支持,需要手动打包。原创 2024-06-20 11:04:23 · 559 阅读 · 0 评论 -
S7协议规范常量
本主要介绍了S7通信协议中的常量和规定。接下来,文中提到了各种消息类型,包括Job Request(工作请求)、Ack(确认)、Ack-Data(确认数据)、以及Userdata(用户数据)等。然后,文中又列举了一些错误类别和错误代码,例如Header Error Class和Header Error Codes、Parameter Error Codes等,它们用于指示消息头或参数中可能存在的错误。总的来说,这些常量都是为了使S7通信协议在工业自动化领域中更加规范化、通用化和易于理解而设计的。原创 2023-09-21 15:15:54 · 753 阅读 · 0 评论 -
S7-200 串口
上表中,3和8为RS-485信号,它们的背景颜色与PROFIBUS电缆、PROFIBUS网络插头上的颜色标记一致。通信端口可以从2和7向外供24V直流电源。S7-200 CPU通信口引脚定义。原创 2023-07-20 15:31:58 · 1999 阅读 · 0 评论 -
S7通信协议的挑高点
知道PDU之后,那么一次性读取的字节长度,就是在PDU的基础上减去18,这个18是指包头包尾会有18个字节,这样我们就知道了一般的PLC,一次性能读取222个字节(240-18=222),但是对于S7-1516这样的PLC,我们一次性是可以读取942个字节的(960-18=942),这个一次性能读取的字节越长,越能提高上位机的通信效率。西门子S7协议是非常强大的一个协议。S7协议的一次性读取长度是根据PDU计算出来的,这个PDU的值是来自于PLC本身,不同型号的CPU,它的PDU是不一样的。原创 2023-09-21 15:31:13 · 543 阅读 · 2 评论 -
西门子S7协议介绍
它是可重放的,可以强制执行。[2b]由主站生成,每次新传输递增,用于链接对其请求的响应,Little-Endian(注意:这是WinCC,Step7和其他西门子程序的行为,它可能是随机的生成后,PLC只将其复制到回复中)这里必须注意的是,S7-1200/1500系列设备使用略有不同的方法,保护级别处理稍有不同,发送的密码明显更长(实际上是密码的哈希),但它仍然是不变的,可重放。[1b]用于确定变量的类型和长度(使用常用的S7类型,如REAL,BIT,BYTE,WORD,DWORD,COUNTER等)。原创 2023-09-21 15:20:11 · 2674 阅读 · 0 评论 -
西门子 S7 协议解析
协议的地址(偏移量)是按照位来运算的,因此需要地址值乘以。(从第一个数据的前缀开始计算)(从偏移量后第一位开始计算),地址是实际地址乘以。原创 2023-09-21 15:23:29 · 933 阅读 · 0 评论 -
ProIEC104Client 恢复默认配置
找到在 “计算机”->”HKEY_CURRENT_USER”->”Software”->”弓口虫系列软件”->ProIEC104Client. 然后将 ProIEC104Client 整个条目项删除,再运行即可恢复初始状态。wind + r cmd 输入regedit。原创 2023-02-10 18:32:50 · 531 阅读 · 0 评论 -
IEC104起始地址 归一化转换
IEC104各数据类型起始地址如下:16进制表示10进制表示原创 2022-06-15 16:20:18 · 8522 阅读 · 1 评论 -
IEC104通信流程
IEC104 规约作为网络通信规约,由客户端和服务端组成,服务端口默认为2404 。它的基本流程如下:1. 由客户端向服务器建立连接,同时,发送链路启动帧。2.服务端在收到链路启动帧后,向客户端发送启动确认帧。3.客户端收到启动确认帧后,发送总召数据请求帧。4.服务端收到总召数据请求后,发送总召数据响应帧,然后继续发送总召数据。总召数据发送完成后,发送总召数据结束帧。5.客户端在收到总召数据结束帧后,发送对时请求帧。6.服务器收到对时请求帧后,发送对时响应帧。7.由服务器主动向客户端发送变化数据帧。同时,收原创 2022-06-17 15:05:00 · 3483 阅读 · 1 评论 -
IEC104规约(一)协议结构阐述
而在从站主动上传变化数据时,因为地址不连续,采用SQ=0。Tips:测试U帧一般用于子站判断主站是否还在连接子站,主站判断子站是否还在运行,保证数据传输的畅通性;Tips:一个apdu中信息体中的所有数据的类型都是一致的,并且数据类型在类型标识这个位置标识。SQ = 1 : 信息对象的地址连续 (只有第一个信息对象有地址,其他对象的地址就是累加1)SQ = 0 :信息对象的地址不连续(意思就是每个信息对象都会一个对象地址)比如:子站发送U帧测试(激活),主站收到测试U帧就会回复一个U帧(确认)原创 2023-12-11 17:25:00 · 2935 阅读 · 0 评论 -
Modbus RTU和Modbus TCP的区别 深入篇
1、发送指令:01 03 76 83 00 0C AE 6F解析:01为从机地址(地址码),03 为功能码(03表示:读),76 83 为寄存器地址[起始地址][真实的寄存器地址-1],00 0C 为读取寄存器的个数,AE 6F 为CRC校验。2、接收指令:01 03 18 00 55 00 AA FF FF FF FF 01 2D FF FF FF FF FF FF 00 55 FF FF FF FF FF FF BA 58解析:01 为从机地址(地址码),原创 2023-12-12 10:33:14 · 9117 阅读 · 1 评论 -
modbus-tcp之6字节数据写入
数据拆分放到3个寄存器中。代码实现如下long value=3000000;//计算出每个寄存器对应的数据放进去short short1 = (short) (value%(32767L));short short2 = (short) (value >> 15);short short3 = (short) (value >> 31);//数据从高往低放数...原创 2019-02-21 16:30:07 · 2030 阅读 · 0 评论 -
modbus寄存器、功能码、报文结构解析
Modbus是一种主/从通讯模式。主站在Modbus网络上没有地址,从站的地址范围为0-247,其中0为广播地址,从站的实际地址范围为1-247。原创 2023-04-18 10:16:59 · 27113 阅读 · 4 评论 -
modbus rtu通讯-T1.5以及T3.5时间间隔
串口在接收到一个字符(假设字符’a’)时便开始计时,时间记为Time1,在接收到下一个字符(假设字符‘b’)时,时间记为Time2。据我用示波器观察,在一个帧之内,字节和字节之间也就是停止位和起始位,字节和字节是紧密连接在一起的。T3.5是用来描述两个不同modbus报文帧之间的传输间隔时间(当前数据帧的结束字符与下一个数据帧的起始字符传输时间间隔)一般,为了简单起见,可以将传输45Bit(位)的时间四舍五入后的整型值作为两个数据帧之间的时间间隔,并以此来判断报文接收的完整性。在串口接收的连续字符流之中。原创 2023-12-12 10:20:00 · 4653 阅读 · 0 评论 -
org.eclipse.milo opcua库浏览所有节点,部分节点查看不到
请org.eclipse.milo opcua库浏览所有节点,部分节点查看不到,并没有报错。原创 2024-06-17 17:02:47 · 658 阅读 · 0 评论