2026-03-15 16:38:47
摘要:一、三菱PLC协议
1. 三菱PLC设备
PLC以及相关通信模块:FX、Q、R、L、A
通信模块:C24、E71
2. 三菱PLC存储区与访问规则
3. 通信协议
MC协议:
公开
支持Ascii以及二进制两种数据格式
协议体系:串口:1C、2C、3C、4C 以太网:4E、3E、1E
Modbus、MX-Component
请求流程,WireShark监控通信过程,McProtocol库测试使用:仿真环境验证
(1)建立TCP连接 Scoket Connect
(2)执行相关操作 读、写
字节序:
小端 byte[] bytes {低 高 _ _ _ _ } 报文中的字节序小端模式
123 0x00,0x7B bytes[0]=0x7B bytes[1]=0x00
4. 功能操作分类
读
成批读出:字、位 :指定一个地址 D0 指定一个数量 返回相关数据 连续请求数据
字单位的随机读出 :不连续的地址请求 D0 D100 W10 每个地址读一个长度
多块成批读出 :不连续的地址 地址带长度 位按字处理?
写
成批写入:字、位
随机写入:字、位
多块成批写入
5. 成批读出报文
// 发送批量读取请求报文:0401
// 按字从 D05 地址开始请求 3个地址的数据
// D存储区,一个地址就是一个字(两个字节)
// 3*2=6个字节的数据响应返回
// 按位从 M10 地址开始请求5个地址的数据 10 - 0A 00 00
// M存储区,按位进行地址分配(ON/OFF)
// 3个字节 M10 M11 M12 M13 M14
// 0x11 0x00 0x10
//
// *******按位从X123地址请求********
// 起始地址 123 00 01 23 - 0x23 0x01 0x00
//
// 按字从 M10 地址开始 请求20个地址的数据 M10 M11 M12 ..... M29
// 一个字存16个状态 20-》需……
阅读全文
2026-03-14 15:52:38
摘要:一、欧姆龙协议
1. 欧姆龙通信设备
PLC:系列 CS系列、CJ系列、CP系列、NJ/NX系列
微型:CPM1A、CPM2A、CP1H、CP1L
小型:CPM2C、CQM1H、CJ1M
中型:C200H、CJ1、CS1
大型:CV、CS1D
运动控制器:NJ、NX等
2. 欧姆龙PLC存储区
存储区分类
CIO:I/O继电器区、DM:数据区
WR:工作区,内部继电器
HR:保持继电器
AR:是模拟通道
C:计数器 、 T:定时器
访问规则
最小存储单位是Word 2字节
bit、Word、Dword
访问地址: 字
0.0 CIO0.1 CIO0.15 D100 W100 W100.2
支持Modbus协议/OPC
3. FINS串口通信
特点
文档支持
Commands(5-1-1)
Memory Area(5-2-2)
End Codes(5-1-3)
PLC 默认存储 大端
请求
响应
报文格式
static void FINS_Serial_Test()
{
SerialPort serialPort = new SerialPort(COM1);
serialPort.Open();
string unit_num = 23;
ushort byte_addr = 100;
byte bit_addr = 0;
ushort count = 5;
string cmd = $@{unit_num}FA000000000010182 +
${byte_addr.ToString(X4)}{bit_addr.ToString(X2)}{count.ToString(X4)};
// 计算 FCS 校验
var fcs = FCS(cmd);
cmd += fcs;
// * \r
cmd += *\r;
byte[] req = Encoding.ASCII.GetBytes(cmd);
serialPort.Write(req, 0, req.Length);
byte[] resp = new byte[serialPort.BytesToRead……
阅读全文
2026-03-08 21:13:34
摘要:一、西门子S7协议
1. 西门子PLC设备
PLC:系列 LOGO、200、200Smart、300、400、1200、1500
2. 西门子PLC存储区
存储区分类
I:输入、Q:输出、AI:模拟量输入、V/DB:变量存储区 Modbus 线圈状态Q 输入线圈I 输入寄存器AI 保持型寄存V
AQ:模拟量输出、M:位存储区、T:定时器存储区、C:计数器存储区、HC:高速计数器、AC:累加器、SM:特殊存储器、L:局部存储区、S:顺序控制继电器 S7
访问规则
类型:bit、Byte、Word、Dword 对应数组
访问地址:最小存储是字节
I0.0 Q1.3 MB10 MW10 M10.0 VW100 V100.1 DB1.DBX100.5 位地址最大:7
3. 通信协议
Modbus协议/OPC
功能有限 NModbus4
S7
私有协议,非公开
功能强大,大部分功能都能完成
通信模式:主从(客/服,单边通信)、伙伴(双边通信,PLC-PLC)
请求流程,可以使用 Wireshark 监控通信过程,S7.NET库测试使用/sharp7
建立TCP连接 Socket.Connect
发送访问请求 COTP
交换通信信息 Setup Communication
执行相关操作 ….
4. S7COMM-COTP报文
COTP报文
第一次交互
请求与响应
byte[] bytes = new byte[] {
// TPKT
0x03,
0x00,
0x00,0x16,
// COTP
0x11,
0xe0, // 表示连接请求
0x00,0x00,
0x00,0x01,
0x00,
// 0xc0
0xc0,
0x01,
0x0a,// 2的10次方 1024
// 0xc1 通信源对应的相关配置 PC
0xc1,
0x02,
0x10, // S7双边模式 也可以选择01- PG 02 OP
0x00, // 不需要设置机架和插槽
// 0xc2
0xc2,
……
阅读全文
2026-03-07 18:19:31
摘要:一、Modbus协议
**1. Modbus通信方式与分类 **
串口 RS485(一主多从),不同的报文格式:
ModbusAscii(ASCII字符方式进行发送)
ModbusRTU(Remote Terminal Unit)
以太网(TCP点对点),报文格式一样。RTU over TCP 以TCP的方式发送RTU的报文
ModbusTCP
ModbusUDP
其他连接方式:byte[] 协议
2. Modbus协议下的数据存储
数据存储中的位bit (bool)、字节byte(8个位)、字Word(2个字节,16位)、双字DWord(2个字,4个字节,32位),C#中的数据显示:数据类型、显示格式
内存分区与功能:硬盘分区、功能码
存储区
对象类型
访问类型(针对程序)
存储区标识
说明
可用功能码
线圈状态
单个bit
读写
0XXXX
通过应用程序改变这种类型数据
读01 写 05 15
输入线圈
单个bit
只读
1XXXX
I/O系统提供这种类型数据
读02
输入寄存器
16-位 字
只读
3XXXX
I/O系统提供这种类型数据
读04
保持寄存器
16-位 字 2个字节
读写
4XXXX
通过应用程序改变这种类型数据
读03 写 06 16
Modbus功能码补充说明:
功能码 16进制
名称
功能
01
读线圈状态
读位(读N个bit)---读从机线圈寄存器,位操作
02
读输入离散量
读位(读N个bit)---读离散输入寄存器,位操作
03
读多个保持型寄存器
读整型、字符型、状态字、浮点型(读N个words)---读保持寄存器,字节操作
04
读多个输入寄存器
读整型、状态字、浮点型(读N个words)---读输入寄存器,字节操作
05
写单个线圈
写位(写一个bit)---写线圈寄存器,位操作
06
写单个保持寄存器
写整型、字符型、状态字、浮点型(写一个word)---写保持寄存器,字节操作
07
读取异常状态
取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定,用户逻辑可以将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态
08
回送诊断校验
把诊断校验报文送从机,以对通信处理进行评鉴
09
编程(只用于4……
阅读全文