【转】常用PLC通讯协议
三菱FX系列PLC通讯测试
发送帧(Hex):
起始(STX) |
02 |
命令(CMD) |
30 |
首地址(ADDRESS) |
30 30 41 30 |
字节数(BYTES) |
30 31 |
终止(ETX) |
03 |
校验和(SUM) |
36 35 |
SUM = CMD + ADDRESS + BYTES +ETX
校验和计算:30+30+30+41+30+30+31+03=165 累加和超过两位取低两位65
发→◇02 30 30 30 41 30 30 31 03 36 35 □从Y0开始读取一个BYTE Y7-Y0
收←◆02 33 46 03 37 43
接收帧(Hex):
起始(STX) |
02 |
数值(DATA) |
33 46 |
终止(ETX) |
03 |
校验和(SUM) |
37 43 |
接收帧解析:“33”查ASCII表示十六进制“3”即“0011”此时继电器Y5、Y4开
“46”查ASCII表示十六进制“F”即“1111”此时继电器Y3、Y2、Y1、Y0开,如下表所示:
Y7 |
Y6 |
Y5 |
Y4 |
Y3 |
Y2 |
Y1 |
Y0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
向D123开始的两个存储器中写入1234,ABCD
[17:18:38.339]发→◇02 31 31 30 46 36 30 34 33 34 31 32 43 44 41 42 03 34 39 □
[17:18:38.370]收←◆06
ACK (06H) 接收正确
NAK (15H) 接收错误
[17:18:38.339]发→◇02 31 31 30 46 36 30 34 33 34 31 32 43 44 41 42 03 34 39 □
[17:18:38.370]收←◆06
[17:19:32.687]发→◇02 30 31 30 46 36 30 34 33 34 03 37 34 □
[17:19:32.725]收←◆02 33 34 31 32 43 44 41 42 03 44 37 此时读取的数据即写入的数据1234,ABCD
附表:
命令 |
命令码 |
目标设备 |
读出软设备状态值 |
0 |
X,Y,M,S,T,C,D |
向PLC软设备写入值 |
1 |
X,Y,M,S,T,C,D |
置位 |
7 |
X,Y,M,S,T,C |
复位 |
8 |
X,Y,M,S,T,C |
参考链接:https://blog.csdn.net/caodunchao/article/details/51564484?locationNum=12&fps=1
欧姆龙CP1E、CP1H系列PLC通讯测试
发送帧:
目的:读取输出端当前状态
[16:13:37.509]发→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 35 30 30 30 30 30 31 30 37 2A 0D □
起始 |
40 |
@ |
PLC地址(默认为00) |
30 30 |
0 0 |
头编码 |
46 41 |
F A |
等待时间 |
30 |
0*10ms |
ICF |
30 30 |
0 0 |
DA2 |
30 30 |
0 0 |
SA2 |
30 30 |
0 0 |
SID |
30 30 |
0 0 |
命令码 |
30 31 30 31 |
0 1 0 1(读) |
功能码 |
42 30 |
B 0 |
存储器编号 |
30 30 36 35 |
0 0 6 5 |
存储器位 |
30 30 |
0 0 |
读取长度 |
30 30 30 31 |
0 0 0 1 |
FCS校验 |
30 37 |
0 7 |
结束 |
2A 0D |
* CR |
HostLink通讯协议的数据,由4部分组成。
1. 头代码
2. FINS命令
3. 异或校验
4. 结束码
以下的数据用于串口调试工具下发给PLC,所以以下由上述的1、2部分组成
头代码:红色 FINS命令:蓝色
@00FA0000000000101B00064000001
红色部分数据分析:
@后的1-2位,为PLC地址,默认PLC地址为0,可设定0--31
@后的FA为头编码,可为”FA” “RD” “WR”
@后的第5位为等待时间,默认为0*10ms
后面的数据从右到左依次是:ICF\DA2\SA2\SID各占一个字节默认为00
读取CIO100一个字
@00FA0000000000101B00064000001
FCS校验计算方法:参与计算的数据(起始(含)-读取长度(含))
示例:0101 EOR 0010 = 0111
高四位异或计算为0100 EOR 0011 EOR 0011…EOR 0011 EOR 0011 = 0000 30
低四位异或计算为0000 EOR 0000 EOR 0000…EOR 0000 EOR 0001 = 0111 37
读取:0101 写入:0102
功能码B0:指定相应寄存器类型 (详见附表1)
006400: 0064为存储器的编号(16进制的0064为10进制的100)
0064后的00为存储器的位(HEX 00)
0001:读取1个字
接收帧解析:
CIO101H 第7、4通1001 0000 读出39 30
[16:13:37.566]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 39 30 34 41 2A 0D
起始 |
40 |
@ |
PLC地址(默认为00) |
30 30 |
0 0 |
头编码 |
46 41 |
F A |
30 30 |
0 0 |
|
ICF |
34 30 |
4 0 |
DA2 |
30 30 |
0 0 |
SA2 |
30 30 |
0 0 |
SID |
30 30 |
0 0 |
命令码 |
30 31 30 31 |
0 1 0 1(读) |
FINS response code |
30 30 |
0 0 |
30 30 |
0 0 |
|
30 30 |
0 0 |
|
Data |
39 30 |
9 0 |
FCS校验 |
34 41 |
4 A |
结束 |
2A 0D |
* CR |
附表:
存储区名称 |
数据类型 |
CP系列代码(十六进制) |
CIO |
BIT |
30 |
WR |
31 |
|
HR |
32 |
|
AR |
33 |
|
CIO |
WORD |
B0 |
WR |
B1 |
|
HR |
B2 |
其他注解:
注:232端口接线问题:2、 3、 5(GND)、 6(5V)
读CIO 101CH4位
发40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 35 30 30 30 30 30 31 30 37 2A 0D
字符串格式:@00FA00000000000101B0006500000107*CR(归位键)
36 35 (0x65=101)
CIO101H 第7、4通1001 0000 读出39 30
[16:13:37.509]发→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 35 30 30 30 30 30 31 30 37 2A 0D □
[16:13:37.566]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 39 30 34 41 2A 0D
CIO100H 全断0000 0000 读出30 30
[16:12:10.591]发→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 34 30 30 30 30 30 31 30 36 2A 0D □
[16:12:10.636]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 30 30 34 33 2A 0D
CIO 103 第五位通0010 0000读出32 30
[16:20:32.089]发→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 37 30 30 30 30 30 31 30 35 2A 0D □
[16:20:32.143]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 32 30 34 31 2A 0D
CIO 000 输入1 、2、 7、 9 、10 读出36 38 36
0110 1000 0110
[16:26:06.569]发→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 30 30 30 30 30 30 30 31 30 34 2A 0D □
[16:26:06.621]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 36 38 36 34 42 2A 0D
CIO 001 输入3读出 30 38
0000 1000
[16:29:32.560]发→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 30 31 30 30 30 30 30 31 30 35 2A 0D □
[16:29:32.622]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 30 38 34 42 2A 0D
注:串口参数设置可能因用户需求不同而不固定,参数需现场实际采集
参考链接:https://blog.csdn.net/gongyejishuhulian/article/details/79718339
西门子S7通讯协议测试(基于tcp):
第一次握手报文:
03 00 00 16 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A
第一次握手返回:
03 00 00 16 11 D0 00 01 00 05 00 C0 01 0A C1 02 10 00 C2 02 03 01
第二次握手报文:
03 00 00 19 02 F0 80 32 01 00 00 CC C1 00 08 00 00 F0 00 00 01 00 01 03 C0
第二次握手返回:
03 00 00 1B 02 F0 80 32 03 00 00 CC C1 00 08 00 00 00 00 F0 00 00 01 00 01 00 F0
读取数据:
03 00 00 43 02 F0 80 32 01 00 00 00 05 00 32 00 00 04 04 12 0A 10 02 00 02 00 00 81 00 00 00 12 0A 10 02 00 01 00 00 82 00 00 00 12 0A 10 02 00 01 00 00 83 00 00 00 12 0A 10 02 00 08 00 01 84 00 00 00
03 00 00 43 02 F0 80 32 01 00 00 00 05 00 32 00 00 04 04 固定的
12 0A 10 02 固定长度,地址前缀
00 02 读取数据byte个数:2(16位)
00 00 数据块编号
81 获取PLC输入状态标识符
00 00 00数据地址偏移量
12 0A 10 02 固定长度,地址前缀
00 01 读取数据byte个数:1(8位)
00 00 数据块编号
82 获取PLC输出状态标识符
00 00 00数据地址偏移量
12 0A 10 02 00 01 00 00 83 00 00 00 12 0A 10 02 00 08 00 01 84 00 00 00
作用不详,备用
收到数据格式(举例说明):
03 00 00 33 02 F0 80 32 03 00 00 00 05 00 02 00 1E 00 00 04 04
FF 04 00 10 40 02 FF 04 00 08 00 00 FF 04 00 08 00 00 FF 04 00 40 00 00 00 00 00 00 00 00
03 00 00 33 02 F0 80 32 03 00 00 00 05 00 02 00 1E 00 00 04 04 固定的
FF 04 00 返回数据前缀
10 有效位数:16(bit)
40 04相当于二进制 0100 0000 0000 0010 意思是A的端口6和B的端口1位高电平,其余为低电平
FF 04 00 08 00 00
FF 04 00 返回数据前缀
08 有效位数:8(bit)(由于s7-200smart系列只有8个输入口)
02 相当于二进制 0000 0010 即输出口1为高电平其余为低电平
FF 04 00 08 00 00 FF 04 00 40 00 00 00 00 00 00 00 00
未知,备用
台达PLC通讯测试
端口设置9600 ,7 ,1 ,EVEN(232端口)
发送帧解析:
[15:51:58.175]发→◇3A 30 31 30 32 30 35 30 30 30 30 30 38 46 30 0D 0A □
起始码 |
3A |
: |
通讯地址 |
30 31 |
0 1 |
命令码 |
30 32 |
0 2 |
读取数据起始地址 |
30 35 30 30 |
0 5 0 0 |
读取数据长度 |
30 30 30 38 |
0 0 0 8 |
LRC校验码 |
46 30 |
F 0 |
结束码 |
0D 0A |
CR LF |
LRC校验码计算:01+02+05+08=16 (0001 0000取反:1110 1111 再加1:1111 0000)
接收帧解析:输出0 1 2 5 7 ,有效数据41,37实为A(1010)、7(0111)
[15:51:58.229]收←◆3A 30 31 30 32 30 31 41 37 35 35 0D 0A
起始码 |
3A |
: |
通讯地址 |
30 31 |
0 1 |
命令码 |
30 32 |
0 2 |
字节数 |
30 31 |
0 1 |
数据 |
41 37 |
A 7 |
LRC校验码 |
35 35 |
5 5 |
结束码 |
0D 0A |
CR LF |
读取输出端状态:(地址:0500)
读取输入端状态:(地址:0400)
示例:
[08:41:56.922]发→◇3A 30 31 30 32 30 34 30 30 30 30 30 38 46 31 0D 0A □
[08:41:56.956]收←◆3A 30 31 30 32 30 31 31 32 45 41 0D 0A(1、 4输入)
附表:
命令码 |
功能 |
作用范围 |
01 |
读线圈状态 |
S,Y,M,T,C |
02 |
读输入状态 |
S,X,Y,M,T,C |
03 |
读寄存器值 |
T,C,D |
05 |
设定单一线圈 |
S,Y,M,T,C |
06 |
预设单一寄存器 |
T,C,D |
15 |
设定多个线圈 |
S,Y,M,T,C |
16 |
预设多个寄存器 |
T,C,D |
17 |
状态、机种报告 |
None |
台达PLC装置地址
装置 |
范围 |
有效范围 |
地址 |
S |
000-255 |
000-127 |
0000-00FF |
S |
246-511 |
0100-01FF |
|
S |
512-767 |
0200-02FF |
|
S |
768-1023 |
0300-03FF |
|
X |
000-377(8进制) |
000-177(8进制) |
0400-04FF |
Y |
000-377(8进制) |
000-177(8进制) |
0500-05FF |
T |
000-255 |
000-127 |
0600-06FF |
M |
000-255 |
0000-1279 |
0800-08FF |
M |
256-511 |
0900-09FF |
|
M |
512-767 |
0A00-0AFF |
|
M |
768-1023 |
0B00-0BFF |
|
M |
1024-1279 |
0C00-0CFF |
|
C |
000-255 |
000-127 232-255 |
0E00-0EFF |
D |
000-255 |
000-599 100-1143 |
1000-10FF |
D |
256-511 |
1100-11FF |
|
D |
512-767 |
1200-12FF |
|
D |
768-1023 |
1300-13FF |
|
D |
1024-1279 |
1400-14FF |
参考链接:http://www.docin.com/p-687084617.html
原文地址:https://www.cnblogs.com/zsvc/p/9406592.html
【转】常用PLC通讯协议的更多相关文章
- 基于ModBus-TCP/IT 台达PLC 通讯协议解析
客户端发送:19 B2 00 00 00 06 06 03 00 27 00 02 上面是modbus客户端发出的报文内容,为modbus tcp/ip协议格式,其前面的六个字节为头字节( heade ...
- 欧姆龙plc通讯协议格式
欧姆龙CPM1A型plc与上位计算机通信的顺序是上位机先发出命令信息给PLC,PLC返回响应信息给上位 机.每次通信发送/接受的一组数据称为一"帧".帧由少于131个字符的数据构成 ...
- Tcp通讯协议
了解了Udp通讯协议之后,我们再认识一个常用的通讯协议:Tcp Tcp传输特点: --依赖于Socket和ServerSocket对象 --建立客户端和服务端 --建立连接后,通过Socket中的 I ...
- UDP通讯协议
常见的通讯协议有udp和tcp. 先来简单了解一下这两个协议各自的特点: UDP: --将数据及源.目的封装在数据包中,不需要建立连接: --每个数据包的大小限制在64k以内: --因无连接,是不可靠 ...
- uart通讯协议
本次设计的源码在http://download.csdn.net/detail/noticeable/9912383 下载 实验目的:通过uart通讯协议的编写,了解FPGA的通讯协议编写的方法. 实 ...
- 如何快速掌握plc或工控机与其他设备的modbus通讯协议?包括格式与实际过程 RT,本人从事工控行业多年,对于PLC与触摸屏也算比较熟悉,唯独对这个通讯协议比较难理解,请教高人指导,从什么地方开始下手,或者是说如何正确理解报文格式或正确写入
Modbus协议是OSI模型的第七层的应用层通讯协议,定义了不同类型设备间交换信息方式,以及信息的格式. Modbus的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站的单 ...
- 【转】西门子PLC以太网 通讯协议 解析
一直想把三菱和西门子这两个使用频率最高的PLC上位通讯,融合到WCS系统的框架里: 现在三菱主流使用Q系列,使用的是MC协议, 前一段时间也写过一个入门介绍: 三菱Q系列通讯方式设计说明 去年8月份, ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...
- HslCommunication库的二次协议扩展,适配第三方通讯协议开发,基础框架支持长短连接模式
本文将使用一个gitHub开源的项目来扩展实现二次协议的开发,该项目已经搭建好了基础层架构,并实现了三菱,西门子,欧姆龙,MODBUS-TCP的通讯示例,也可以参照这些示例开发其他的通讯协议,并Pul ...
随机推荐
- Windows Socket知识总结
目录 0 理解Socket 1 WinSock API 2 阻塞socket 3 非阻塞Socket 4 套接字IO模型 4.1 套接字IO模型:select(选择) 4.2 套接字IO模型:W ...
- block注意事项
1.block的声明和注意事项 #import "ZYViewController.h" @interface ZYViewController () @end /*用typede ...
- 【已解决】git的一些常用命令
git:分布式的版本管理系统,一般的开发模式: 如果是开发人员,忽略此步骤,从下面大字的开始即可: 项目开始阶段,初始化项目(init),提交本地的代码到仓库,将本地仓库的代码推送到远端库(push) ...
- 如何在unbuntu 16.04上在线安装vsftpd
本文涉及命令如下: # service vsftpd status //查询vsftp服务状态 # apt-get remove vsftpd //卸载vsftpd # apt-get install ...
- 初识.netCore以及如何vs2019创建项目和发布
一:什么是.netCore 从图上得知,.NetCore是同.NetFramework一样也是一种框架,并且都是基于.Net Standard Library,前面我们有用过.netFramwork来 ...
- Python元组与字符串操作(9)——随机数、元组、命名元组
随机数 import random #导入random模块 randint(a,b) 返回[a,b]之间的整数 random.randint(0,9) randrange([start],stop,[ ...
- Win10更新后wireshark无法获取网络接口
一不小心win10自动更新了,打开wireshark发现它无法发现本地的网络接口. 其实解决的办法很简单,就是卸载npcap,安装Win10Pcap即可解决.
- mac下命令行安装node.js及切换不同版本nodejs
摘自: http://www.cnblogs.com/ikuyka/p/5825762.html 前提是你电脑里已经装了node.js然后才能采用以下命令(以下代码最好不要同时运行) sudo n - ...
- Dmidecode命令
Dmidecode简介 DMI (Desktop Management Interface, DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行. ...
- 免费音乐播放器-airplay(网上收集,仅供学习与研究,支持正版)
AirPlay媒体播放器无需安装,并不会修改注册表,生成桌面快捷方式,加入启动菜单及快速启动. 因此,您只需要下载本软件,保存在任何地方即可使用.使用方便,界面酷炫. 自动下载和显示歌词.专辑封面.汇 ...