13
三菱 FX 系列 PLC 自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ24292469E_mail[email protected]MSN[email protected] 三菱 FX 系列 PLC 的自由通讯 要做好三菱 FX1N/2N 与控制仪表,变频器,数据采集模块等的通讯,对一个新手来说, 是不太容易的。(如果有一点FX的编程经验,再做通讯控制,相对而言要顺利的多了)。在 此,我就我做通讯的经验,把自己的心得写出来,与大家共勉。 设备间的通讯,就如人群交流一样:主人问 1#:你那边情况如何?1#回答:我很好;主 人问 2#:你那边情况如何?2#回答:我这边还不很好;主人命令 3#:去把门打开,3#回答: 是(并执行开门命令)。这里的主人就是设备通讯的主站,1#--3#就是3个从设备。 通讯就是交流的过程:问--答。当实行主从通讯时,首先是主站发送信息,从站都可以 听到(485,多从方式),但只有身份相符的从站才可以回答,不然就乱套了(也有广播方式: 从站只听不答)。 还有就是命令的有效性,比如主站发出的命令有错误,从站是不能认可的,只有有效的 命令,才是正确的命令。同样,从站有效的回应才是正确的。如何识别通讯数据是否有效, 现在的普遍做法是在数据串后边加校验码(有时候也可以不加校验)。当通讯对方接受后, 要按照协议计算校验码,如果码正确,就认为是有效的通讯,从而进行判断回复。无效的话, 根据协议决定是返回一个错误码还是不予理会。 关于通讯协议,大家不要认为协议是个复杂的东西。但也不要把通讯协议简单理解为波 特率,奇偶位,停止位,长度等东西。通讯协议就是设备交流数据的规则(我个人的定义)。 比如人类的交流,可以采用汉语,英语……也可以采用手势,书信,手机短信……交流的方 式很多,但都要有个规则,主从双方都要知道所传输的信息是做什么用的。在 PLC 做主站的 自由通讯方式中,需要遵从从设备的协议来进行通讯,从设备的协议要由设备制造商提供, 可能是厂家自己的协议,也可能是一些通用的协议。(我常用的是日本导电SHIMADEN仪表的 厂家协议) 在 PLC 与其他设备之间进行通讯,道理就是上边所讲的。在具体应用中,可能要涉及到 多方面的东西,所以,首先要对 PLC的指令熟练运用。再就是要完全清楚从设备的通讯协议, 只有对协议有了深刻的理解,才能在 PLC 上发送数据,接受结果。从而实现 PLC与其他设备 的通讯。

三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

三菱 FX 系列 PLC 的自由通讯

要做好三菱 FX1N/2N 与控制仪表,变频器,数据采集模块等的通讯,对一个新手来说,

是不太容易的。(如果有一点 FX 的编程经验,再做通讯控制,相对而言要顺利的多了)。在

此,我就我做通讯的经验,把自己的心得写出来,与大家共勉。

设备间的通讯,就如人群交流一样:主人问 1#:你那边情况如何?1#回答:我很好;主

人问 2#:你那边情况如何?2#回答:我这边还不很好;主人命令 3#:去把门打开,3#回答:

是(并执行开门命令)。这里的主人就是设备通讯的主站,1#--3#就是 3个从设备。

通讯就是交流的过程:问--答。当实行主从通讯时,首先是主站发送信息,从站都可以

听到(485,多从方式),但只有身份相符的从站才可以回答,不然就乱套了(也有广播方式:

从站只听不答)。

还有就是命令的有效性,比如主站发出的命令有错误,从站是不能认可的,只有有效的

命令,才是正确的命令。同样,从站有效的回应才是正确的。如何识别通讯数据是否有效,

现在的普遍做法是在数据串后边加校验码(有时候也可以不加校验)。当通讯对方接受后,

要按照协议计算校验码,如果码正确,就认为是有效的通讯,从而进行判断回复。无效的话,

根据协议决定是返回一个错误码还是不予理会。

关于通讯协议,大家不要认为协议是个复杂的东西。但也不要把通讯协议简单理解为波

特率,奇偶位,停止位,长度等东西。通讯协议就是设备交流数据的规则(我个人的定义)。

比如人类的交流,可以采用汉语,英语……也可以采用手势,书信,手机短信……交流的方

式很多,但都要有个规则,主从双方都要知道所传输的信息是做什么用的。在 PLC 做主站的

自由通讯方式中,需要遵从从设备的协议来进行通讯,从设备的协议要由设备制造商提供,

可能是厂家自己的协议,也可能是一些通用的协议。(我常用的是日本导电 SHIMADEN 仪表的

厂家协议)

在 PLC 与其他设备之间进行通讯,道理就是上边所讲的。在具体应用中,可能要涉及到

多方面的东西,所以,首先要对 PLC 的指令熟练运用。再就是要完全清楚从设备的通讯协议,

只有对协议有了深刻的理解,才能在 PLC 上发送数据,接受结果。从而实现 PLC 与其他设备

的通讯。

Page 2: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

在这里,我将一步一步的教大家如何通过 PLC 编程,进行 FX 与其他设备的通讯。

第一步,需要大家熟练应用的几个 FX 指令(对 FX 指令熟悉的朋友可以跳过):

MOV:数据传输指令,将一个寄存器的数据传到另外一个寄存器,原来寄存器数据不

例:MOV D10 D20

BMOV:数据块传输指令,将一组寄存器的数据传到另外一组寄存器,原来寄存器数

据不变

例:BMOV D10 D100 K20(将 D10—D29 的数据传到 D100-D119)

SET:置位,将一个 BIT 位置为 ON

RST:复位,将一个 BIT 位复为 OFF

ADD:数据相加指令,把 2 个寄存器或常数加在一起,结果放在指定的寄存器

例:ADD D10 D20 D30(D10+D20-->D30),ADD D100 K1 D200(D100+1 D200)

SUB:数据相减指令,把 2 个寄存器或常数相减,结果放在指定的寄存器

例:SUB D10 D20 D30(D10-D20-->D30),SUB D100 K1 D200(D100-1 D200)

MUL:数据相乘指令,把 2 个寄存器或常数相乘,结果(双字)放在指定的寄存器

例:MUL D10 D20 D30(D10+D20-->D30,D31)

DIV:数据相除指令,把 2 个寄存器或常数相除,结果放在指定的寄存器

例:DIV D10 D20 D30(D10/D20-->D30 商,D31 余数)

INC:寄存器加 1 指令

DEC:寄存器减 1 指令

CALL:子程序调用指令

ASC:把 16 进制数据转为 ASC 字符的指令(后续将重点讲解该指令)

HEX:把 ASC 字符转为 16 进制数的指令(后续将重点讲解该指令)

RS:通讯传输指令(后续将重点讲解该指令)

Page 3: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

第二步,几个与通讯相关的 BIT 和寄存器:

M8122:当 M8122=ON 时,启动发送数据,发送完成后,自动复位

M8123:当数据接受完毕时,M8123 自动 ON,程序检查到 M8123=ON,进行返回数据

的处理,处理完毕后,要 RST M8123

M8161:M8161=ON 时,通讯中只使用寄存器的低 8 位(如果 D100=1234,则只有 34

被参与通讯,发送,接受数据区的 D 有效,与其他控制无关)

D8120:通讯设置寄存器,用来设定波特率,校验位,长度,停止位等。通讯之前,

该寄存器的数值一定要正确,否则将导致不能通讯。

第三步:通讯的原理

数据发送

数据接收

发送前的准备 返回数据处理

M8122

M8123

SET AUTORST

AUTOSET RST

Page 4: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

当要开始一个通讯的时候,需要先把发送的数据串准备好;数据串准备好之后,就可

以 SET M8122,启动发送了;发送完成,PLC 自动 RST M8122;从设备接收到信息后,要返

回一个结果,从设备的发送就是 PLC 的接收,当 PLC 接收完毕,自动 SET M8123;当我们的

程序检测到 M8123=ON 时,就需要把返回的数据处理一下(计算,保存结果),处理完毕,要

通过程序 RST M8123;之后,就可以等待下一个通讯周期了。通讯周期与扫描周期是不同的

概念。通讯周期指一个完整的通讯过程,包括准备,发送,接收,处理等。当需要读/写从

设备多个数据或要与多个从设备进行通讯时,就需要有多个通讯周期轮流交替进行。

第四步:通讯中几个关键点的详细讲解(RS 指令详解,ASCI,HEX 指令详解,D8120 的设

置):

RS:串行数据传输指令。在 FX 与其他设备通讯时要用到。

通讯时,该指令要被执行,

[S]为要发送的数据串的首地址(起始地址)

[m]为要发送的数据串的长度

[D]为接收的数据串的首地址(起始地址)

[n]为要接受的数据串的长度

例:PLC 要发送数据串 02 30 31 52 30 30 30 31 03

从设备收到该数据后正常返回的数据为 02 30 31 52 30 30 03

我们可以把发送数据放在 D100 开始的寄存器里边,接受长度为 K9,即:

D100=H02

D101=H30

D102=H31

D103=H52

D104=H30

D105=H30

D106=H30

D107=H31

D108=H03

Page 5: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

把接收的数据放在 D200 开始的寄存器里边,接受长度为 K7

RS 指令就可以这么写了:

RS D100 K9 D200 K7

当需要通讯的时候,该指令要确保被执行,就如上边的 X3 要闭和。

ASCI 指令:是把 16 进制数转换为 ASC 码的指令,如果你的通讯采用 ASC 方式,这条指令的

应用要熟练。

当 X7 闭和,ASCI 指令被执行,即把 D8,D9 里边的 16 进制数据转换为 ASC 码,存放到 D20

开始的区域,转化数量为 6 个。结果如下(这是在 M8161=OFF 时):

Page 6: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

如果 M8161=ON,则结果为:

D20=‘C’

D21=‘D’

D22=‘E’

D23=‘F’

D24=‘2’

D25=‘6’

HEX 指令:是把 ASC 码转换为 16 进制数的指令,当从设备返回 ASC 数据结果时,需要用这

条指令来转换为 16 进制数。

我常采用 M8161=ON,并且 HEX Dm Dn K1,就是每次只转换 1 个 ASC 码,在采用其他方式把数

据组合起来。

Page 7: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

D8120 寄存器是用来配置通讯接口的,一般情况下(如 PLC 做主,从设备为变频,仪表等),

b15-b8=H0C 即可。波特率,停止位,校验位,长度等,根据协议来配置以下就可以了。

Page 8: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

第五步:通讯协议的解读:

现在以日本岛电 SR90 系列温控仪的通讯协议为例,给大家讲一下怎样理解通讯协议(详细

通讯协议请参见讲义包内相关资料)

在 PLC 与温控仪通讯时,首先是 PLC 发送数据,温控仪接受后,要返回相关参数给 PLC,无

论读还是写,都是一样的结构。读写的不同在于通讯指令和数据的不同,即 PLC 发送出来的

数据的不同。

向温控仪表发送数据格式:

该款温度控制器的通讯有三种格式,可通过仪表面板选择一种。

上图中的为 STX_ETX_CR 格式,

Page 9: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

例如:要读 2#仪表的 0200 地址开始的 10 个参数,就要这样写:

STX 0 2 1 R 0 2 0 0 9 ETX BCC BCC CR

其中 BCC 为校验码,需要计算后再填写进去

上述均为 ASC 码

例如:要把 1234 写到 5#控制器的 SV 里去(SV 地址为 0300)

STX 0 5 1 W 0 3 0 0 0 , 1 2 3 4 ETX BCC BCC CR

其中 BCC 为校验码,需要计算后再填写进去

上述均为 ASC 码

温控仪表返回数据的格式:

如果是读温控仪表的数据,

读回的数据在 g 区,以 ASC 码方式返回

例:STX 0 1 1 R 0 0 , 1 2 3 4 ETX BCC BCC CR

如果是写温控仪表的数据,返回为 STX 0 1 1 W 0 0 EXT BCC BCC CR

这里 R/W 后边紧跟着的 0 0 是错误代码,正常为 0 0,如果有错,就会是一个不为 0 的数

值。可根据返回错误代码来判断返回数据的有效性(错误数据丢弃,正常数据作为结果保存)

通讯协议的理解比较困难,请熟读之后再编写程序实验,从简单到复杂,循序渐进的把通讯

做好。

Page 10: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

第六步:校验码的计算:

通讯协议中,一般都要采用校验码方式来判定通讯数据桢是否完整有效,比如刚才的 BCC

校验码就是一个。当然,也有的通讯可以采用无校验方式。

在日本岛电温度控制器中,有 4 种校验方式供选择:

我常采用 ADD(和)校验方式,就是把指定的区域的数据求和,把结果处理一下(取后 2 位

的 ASC 码)作为 BCC 数据。

也有其他方式,比如 XOR(异或)等。

在 MODBUS 协议中,如果采用 ASC 通讯,要用 LRC 校验,如果采用 RTU 通讯,要用 CRC 校验。

有兴趣的朋友可以写个小程序来计算一下 CRC。(如果你的 PLC 支持 MODBUS 协议,你的 CRC

就不需要编程计算了)

Page 11: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

第七步:通讯过程的建立与操作:

通过介绍 RS 指令的应用,讲解通讯的简单结构(本例采用 FX 系列 PLC 与香港上润仪表 WP

举例说明,《WP 仪表通讯协议》参见讲义包内相关资料)

WP 仪表拨特率,校验位,数据长度等设置为:9600,一位起始位,八位数据位,一

位停止位,无校验。对应 PLC 的 D8120 设置为 H0C81。

读仪表动态数据(实时测量值)帧

PLC 发送命令帧

@ DE RD CRC CR WP 仪表正确返回:

@ DE RD 帧数据 CRC CRWP 仪表错误返回:

@ DE * * CRC CR

错误返回码“**”:如 PC 机向仪表传输出的命令或 CRC 校验错误,则仪表命令

回送时返回一个 错误返回码“**”— 2AH 2AH (ASCII 码)。

PLC 要读取 WP 仪表动态数据(实时测量值 PV),PLC 按上述格式发送“@ 0 1 R D

CRC CR”(40 30 31 52 44 31 37 0D),仪表接收后,返回参数。

PLC 编程如下:

Page 12: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

注释:

14 步开始,把要发送的数据(发送祯)准备好

55 步开始,定时启动通讯(M8122 启动)

76 步开始,仪表返回数据,PLC 开始处理数据,并复位通讯状态。

后把读取 WP 当前值 PV 放在 D300 里边。

Page 13: 三菱FX系列PLC的自由通讯 - read.pudn.comread.pudn.com/downloads135/ebook/575413/三菱FX系列PLC自由通讯学习.pdf · 三菱FX系列PLC自由通讯 作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛)

三菱 FX 系列 PLC 自由通讯

作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:[email protected]。MSN:[email protected]

在这里,采用定时触发通讯方式来读取 WP 的数值。

在某些数据更新要求不太高的场合下,可采用定时方式。如果希望能随时得到 新的数

据更新,则不能采用定时触发方式了:定时太小,可能影响通讯,造成通讯故障;定时太大,

可能更新速度跟不上。因此,需要另外一种控制结构。请大家自行考虑并交流(我以前做的

控制:PLC 和仪表有几十个数据需要读写,采用多组定时与空闲判定方式,使通讯不间歇地

进行,多个 PV 值在人机上的显示几乎与仪表显示同步,看不出滞后)。

第八步:多数据/从站通讯结构的设计:

(讲解一种简单的,应对多数据/多从站的通讯控制结构,有兴趣的朋友可以通过了解该方

法,结合自己的实际,设计一个合适的框架结构,有效利用 PLC 的资源,完成多数据通讯)

第九步:通讯故障的检测与应对:

介绍一种简单有效的方法,来判断通讯故障,可进行故障报警或提示;或根据客户要求,进

行相应处理。

第十步:结束语

春节快到了,祝大家新春快乐,万事如意

流浪汉,2005-11-22