View
5
Download
0
Category
Preview:
Citation preview
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
三菱 FX 系列 PLC 的自由通讯
要做好三菱 FX1N/2N 与控制仪表,变频器,数据采集模块等的通讯,对一个新手来说,
是不太容易的。(如果有一点 FX 的编程经验,再做通讯控制,相对而言要顺利的多了)。在
此,我就我做通讯的经验,把自己的心得写出来,与大家共勉。
设备间的通讯,就如人群交流一样:主人问 1#:你那边情况如何?1#回答:我很好;主
人问 2#:你那边情况如何?2#回答:我这边还不很好;主人命令 3#:去把门打开,3#回答:
是(并执行开门命令)。这里的主人就是设备通讯的主站,1#--3#就是 3个从设备。
通讯就是交流的过程:问--答。当实行主从通讯时,首先是主站发送信息,从站都可以
听到(485,多从方式),但只有身份相符的从站才可以回答,不然就乱套了(也有广播方式:
从站只听不答)。
还有就是命令的有效性,比如主站发出的命令有错误,从站是不能认可的,只有有效的
命令,才是正确的命令。同样,从站有效的回应才是正确的。如何识别通讯数据是否有效,
现在的普遍做法是在数据串后边加校验码(有时候也可以不加校验)。当通讯对方接受后,
要按照协议计算校验码,如果码正确,就认为是有效的通讯,从而进行判断回复。无效的话,
根据协议决定是返回一个错误码还是不予理会。
关于通讯协议,大家不要认为协议是个复杂的东西。但也不要把通讯协议简单理解为波
特率,奇偶位,停止位,长度等东西。通讯协议就是设备交流数据的规则(我个人的定义)。
比如人类的交流,可以采用汉语,英语……也可以采用手势,书信,手机短信……交流的方
式很多,但都要有个规则,主从双方都要知道所传输的信息是做什么用的。在 PLC 做主站的
自由通讯方式中,需要遵从从设备的协议来进行通讯,从设备的协议要由设备制造商提供,
可能是厂家自己的协议,也可能是一些通用的协议。(我常用的是日本导电 SHIMADEN 仪表的
厂家协议)
在 PLC 与其他设备之间进行通讯,道理就是上边所讲的。在具体应用中,可能要涉及到
多方面的东西,所以,首先要对 PLC 的指令熟练运用。再就是要完全清楚从设备的通讯协议,
只有对协议有了深刻的理解,才能在 PLC 上发送数据,接受结果。从而实现 PLC 与其他设备
的通讯。
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
在这里,我将一步一步的教大家如何通过 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:通讯传输指令(后续将重点讲解该指令)
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
第二步,几个与通讯相关的 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
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
当要开始一个通讯的时候,需要先把发送的数据串准备好;数据串准备好之后,就可
以 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
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
把接收的数据放在 D200 开始的寄存器里边,接受长度为 K7
RS 指令就可以这么写了:
RS D100 K9 D200 K7
当需要通讯的时候,该指令要确保被执行,就如上边的 X3 要闭和。
ASCI 指令:是把 16 进制数转换为 ASC 码的指令,如果你的通讯采用 ASC 方式,这条指令的
应用要熟练。
当 X7 闭和,ASCI 指令被执行,即把 D8,D9 里边的 16 进制数据转换为 ASC 码,存放到 D20
开始的区域,转化数量为 6 个。结果如下(这是在 M8161=OFF 时):
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
如果 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 码,在采用其他方式把数
据组合起来。
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
D8120 寄存器是用来配置通讯接口的,一般情况下(如 PLC 做主,从设备为变频,仪表等),
b15-b8=H0C 即可。波特率,停止位,校验位,长度等,根据协议来配置以下就可以了。
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
第五步:通讯协议的解读:
现在以日本岛电 SR90 系列温控仪的通讯协议为例,给大家讲一下怎样理解通讯协议(详细
通讯协议请参见讲义包内相关资料)
在 PLC 与温控仪通讯时,首先是 PLC 发送数据,温控仪接受后,要返回相关参数给 PLC,无
论读还是写,都是一样的结构。读写的不同在于通讯指令和数据的不同,即 PLC 发送出来的
数据的不同。
向温控仪表发送数据格式:
该款温度控制器的通讯有三种格式,可通过仪表面板选择一种。
上图中的为 STX_ETX_CR 格式,
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
例如:要读 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 的数
值。可根据返回错误代码来判断返回数据的有效性(错误数据丢弃,正常数据作为结果保存)
通讯协议的理解比较困难,请熟读之后再编写程序实验,从简单到复杂,循序渐进的把通讯
做好。
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
第六步:校验码的计算:
通讯协议中,一般都要采用校验码方式来判定通讯数据桢是否完整有效,比如刚才的 BCC
校验码就是一个。当然,也有的通讯可以采用无校验方式。
在日本岛电温度控制器中,有 4 种校验方式供选择:
我常采用 ADD(和)校验方式,就是把指定的区域的数据求和,把结果处理一下(取后 2 位
的 ASC 码)作为 BCC 数据。
也有其他方式,比如 XOR(异或)等。
在 MODBUS 协议中,如果采用 ASC 通讯,要用 LRC 校验,如果采用 RTU 通讯,要用 CRC 校验。
有兴趣的朋友可以写个小程序来计算一下 CRC。(如果你的 PLC 支持 MODBUS 协议,你的 CRC
就不需要编程计算了)
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
第七步:通讯过程的建立与操作:
通过介绍 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 编程如下:
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
注释:
14 步开始,把要发送的数据(发送祯)准备好
55 步开始,定时启动通讯(M8122 启动)
76 步开始,仪表返回数据,PLC 开始处理数据,并复位通讯状态。
后把读取 WP 当前值 PV 放在 D300 里边。
三菱 FX 系列 PLC 自由通讯
作者:流浪汉(自由职业人,主要做机械设备电气控制设计,在青岛) QQ:24292469。E_mail:byp75120@sina.com。MSN:byp75120@hotmail.com
在这里,采用定时触发通讯方式来读取 WP 的数值。
在某些数据更新要求不太高的场合下,可采用定时方式。如果希望能随时得到 新的数
据更新,则不能采用定时触发方式了:定时太小,可能影响通讯,造成通讯故障;定时太大,
可能更新速度跟不上。因此,需要另外一种控制结构。请大家自行考虑并交流(我以前做的
控制:PLC 和仪表有几十个数据需要读写,采用多组定时与空闲判定方式,使通讯不间歇地
进行,多个 PV 值在人机上的显示几乎与仪表显示同步,看不出滞后)。
第八步:多数据/从站通讯结构的设计:
(讲解一种简单的,应对多数据/多从站的通讯控制结构,有兴趣的朋友可以通过了解该方
法,结合自己的实际,设计一个合适的框架结构,有效利用 PLC 的资源,完成多数据通讯)
第九步:通讯故障的检测与应对:
介绍一种简单有效的方法,来判断通讯故障,可进行故障报警或提示;或根据客户要求,进
行相应处理。
第十步:结束语
春节快到了,祝大家新春快乐,万事如意
流浪汉,2005-11-22
Recommended