三菱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通讯协议的更多相关文章

  1. 基于ModBus-TCP/IT 台达PLC 通讯协议解析

    客户端发送:19 B2 00 00 00 06 06 03 00 27 00 02 上面是modbus客户端发出的报文内容,为modbus tcp/ip协议格式,其前面的六个字节为头字节( heade ...

  2. 欧姆龙plc通讯协议格式

    欧姆龙CPM1A型plc与上位计算机通信的顺序是上位机先发出命令信息给PLC,PLC返回响应信息给上位 机.每次通信发送/接受的一组数据称为一"帧".帧由少于131个字符的数据构成 ...

  3. Tcp通讯协议

    了解了Udp通讯协议之后,我们再认识一个常用的通讯协议:Tcp Tcp传输特点: --依赖于Socket和ServerSocket对象 --建立客户端和服务端 --建立连接后,通过Socket中的 I ...

  4. UDP通讯协议

    常见的通讯协议有udp和tcp. 先来简单了解一下这两个协议各自的特点: UDP: --将数据及源.目的封装在数据包中,不需要建立连接: --每个数据包的大小限制在64k以内: --因无连接,是不可靠 ...

  5. uart通讯协议

    本次设计的源码在http://download.csdn.net/detail/noticeable/9912383 下载 实验目的:通过uart通讯协议的编写,了解FPGA的通讯协议编写的方法. 实 ...

  6. 如何快速掌握plc或工控机与其他设备的modbus通讯协议?包括格式与实际过程 RT,本人从事工控行业多年,对于PLC与触摸屏也算比较熟悉,唯独对这个通讯协议比较难理解,请教高人指导,从什么地方开始下手,或者是说如何正确理解报文格式或正确写入

    Modbus协议是OSI模型的第七层的应用层通讯协议,定义了不同类型设备间交换信息方式,以及信息的格式. Modbus的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站的单 ...

  7. 【转】西门子PLC以太网 通讯协议 解析

    一直想把三菱和西门子这两个使用频率最高的PLC上位通讯,融合到WCS系统的框架里: 现在三菱主流使用Q系列,使用的是MC协议, 前一段时间也写过一个入门介绍: 三菱Q系列通讯方式设计说明 去年8月份, ...

  8. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  9. HslCommunication库的二次协议扩展,适配第三方通讯协议开发,基础框架支持长短连接模式

    本文将使用一个gitHub开源的项目来扩展实现二次协议的开发,该项目已经搭建好了基础层架构,并实现了三菱,西门子,欧姆龙,MODBUS-TCP的通讯示例,也可以参照这些示例开发其他的通讯协议,并Pul ...

随机推荐

  1. vue中nextTick的理解

    A. vue 中的 nextTick 是什么? 1.首先需要清楚,nextTick是一个函数:这个函数的作用,简单理解就是下一次渲染后才执行 nextTick 函数中的操作: 2.在下一次 DOM 更 ...

  2. PHP开发之--安装composer

    composer是一个很好用的工具,类似于iOS开发项目中所用的cocopods,所以就想着安装下,过程也很简单: 1.切换到如下目录(在很多博客中都是这样写的,先安装,然后mv到/usr/local ...

  3. ucoreOS_lab1 实验报告

    由于我个人不太懂 AT&T 语法,在完成实验的过程中遇到了相当大的阻碍,甚至有点怀疑人生,我是否心太大了,妄想在短时间内学懂大清的课程.ucoreOS_lab1 这个实验前前后后做到了现在才勉 ...

  4. python中property简单使用与实现

    property简单使用 class P: """ property简单使用 """ def __init__(self,name): se ...

  5. Alpha2项目的测试

    这个作业属于哪个课程 课程的链接 这个作业的要求在哪里 作业要求的链接 团队名称 西柚三剑客 这个作业的目标 -测试其他团队的作品,并进行体验总结 姓名 学号 团队名称 段小刚 20173106231 ...

  6. html 后手

    1.a (1.)超链接 <a href="new.html">点击进入到新网页</a>这里可以直接跳转到一个页面 <a href="http ...

  7. fitEllipse的外接矩形与拟合的椭圆参数关系

    根据我看的博客,fitEllipse返回的外接矩形(假设为box),对应椭圆的相应参数: box.size.width 和box.size.height对应椭圆的长轴和短轴: box.center对应 ...

  8. JS高阶---函数的prototype

    思维导图 栈堆翻译为为stack (1)原型与原型链 概念一.原型对象 验证步骤: 1.打印Data函数的原型prototype 原型属性指向原型对象 ===ES源码结构分析示意=== 2.空对象 3 ...

  9. python3中的map对象返回的是迭代器,该迭代器用list()转列表之后,再次用list()转化时会返回空

    练习代码的时候,发现python3中的map()函数返回的可迭代对象,在用list()转成列表之后,再次用list()转列表的时候,获取的是空值(如下所示),所以查了一下python3的map()对象 ...

  10. Java高级-反射

    1.如何创建Class的实例 1.1过程:源文件经过编译(javac.exe)以后,得到一个或者多个.class文件..class文件经过运行(java.exe)这步,就需要进行类的加载(通过JVM的 ...