码灵
爱码。
平时学习新的知识,看到了新的东西,记录下来。
展开
-
Java串口框架jSerialComm替换rxtxcomm
最开始使用的是rxtxcomm框架,部署时还要手动放驱动文件,而且后面没有进行维护,导致一些一些新系统不再支持,需要手动打包。原创 2024-06-20 11:04:23 · 156 阅读 · 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 · 503 阅读 · 0 评论 -
S7-200 串口
上表中,3和8为RS-485信号,它们的背景颜色与PROFIBUS电缆、PROFIBUS网络插头上的颜色标记一致。通信端口可以从2和7向外供24V直流电源。S7-200 CPU通信口引脚定义。原创 2023-07-20 15:31:58 · 1481 阅读 · 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 · 380 阅读 · 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 · 2034 阅读 · 0 评论 -
西门子 S7 协议解析
协议的地址(偏移量)是按照位来运算的,因此需要地址值乘以。(从第一个数据的前缀开始计算)(从偏移量后第一位开始计算),地址是实际地址乘以。原创 2023-09-21 15:23:29 · 725 阅读 · 0 评论 -
ProIEC104Client 恢复默认配置
找到在 “计算机”->”HKEY_CURRENT_USER”->”Software”->”弓口虫系列软件”->ProIEC104Client. 然后将 ProIEC104Client 整个条目项删除,再运行即可恢复初始状态。wind + r cmd 输入regedit。原创 2023-02-10 18:32:50 · 400 阅读 · 0 评论 -
IEC104起始地址 归一化转换
IEC104各数据类型起始地址如下:16进制表示10进制表示原创 2022-06-15 16:20:18 · 6820 阅读 · 1 评论 -
IEC104通信流程
IEC104 规约作为网络通信规约,由客户端和服务端组成,服务端口默认为2404 。它的基本流程如下:1. 由客户端向服务器建立连接,同时,发送链路启动帧。2.服务端在收到链路启动帧后,向客户端发送启动确认帧。3.客户端收到启动确认帧后,发送总召数据请求帧。4.服务端收到总召数据请求后,发送总召数据响应帧,然后继续发送总召数据。总召数据发送完成后,发送总召数据结束帧。5.客户端在收到总召数据结束帧后,发送对时请求帧。6.服务器收到对时请求帧后,发送对时响应帧。7.由服务器主动向客户端发送变化数据帧。同时,收原创 2022-06-17 15:05:00 · 2846 阅读 · 1 评论 -
IEC104规约(一)协议结构阐述
而在从站主动上传变化数据时,因为地址不连续,采用SQ=0。Tips:测试U帧一般用于子站判断主站是否还在连接子站,主站判断子站是否还在运行,保证数据传输的畅通性;Tips:一个apdu中信息体中的所有数据的类型都是一致的,并且数据类型在类型标识这个位置标识。SQ = 1 : 信息对象的地址连续 (只有第一个信息对象有地址,其他对象的地址就是累加1)SQ = 0 :信息对象的地址不连续(意思就是每个信息对象都会一个对象地址)比如:子站发送U帧测试(激活),主站收到测试U帧就会回复一个U帧(确认)原创 2023-12-11 17:25:00 · 2152 阅读 · 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 · 6110 阅读 · 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 · 1945 阅读 · 0 评论 -
modbus寄存器、功能码、报文结构解析
Modbus是一种主/从通讯模式。主站在Modbus网络上没有地址,从站的地址范围为0-247,其中0为广播地址,从站的实际地址范围为1-247。原创 2023-04-18 10:16:59 · 24186 阅读 · 4 评论 -
modbus rtu通讯-T1.5以及T3.5时间间隔
串口在接收到一个字符(假设字符’a’)时便开始计时,时间记为Time1,在接收到下一个字符(假设字符‘b’)时,时间记为Time2。据我用示波器观察,在一个帧之内,字节和字节之间也就是停止位和起始位,字节和字节是紧密连接在一起的。T3.5是用来描述两个不同modbus报文帧之间的传输间隔时间(当前数据帧的结束字符与下一个数据帧的起始字符传输时间间隔)一般,为了简单起见,可以将传输45Bit(位)的时间四舍五入后的整型值作为两个数据帧之间的时间间隔,并以此来判断报文接收的完整性。在串口接收的连续字符流之中。原创 2023-12-12 10:20:00 · 3189 阅读 · 0 评论 -
org.eclipse.milo opcua库浏览所有节点,部分节点查看不到
请org.eclipse.milo opcua库浏览所有节点,部分节点查看不到,并没有报错。原创 2024-06-17 17:02:47 · 323 阅读 · 0 评论