台达PLC通讯调试方法.docx

上传人:b****5 文档编号:29405798 上传时间:2023-07-23 格式:DOCX 页数:12 大小:61.27KB
下载 相关 举报
台达PLC通讯调试方法.docx_第1页
第1页 / 共12页
台达PLC通讯调试方法.docx_第2页
第2页 / 共12页
台达PLC通讯调试方法.docx_第3页
第3页 / 共12页
台达PLC通讯调试方法.docx_第4页
第4页 / 共12页
台达PLC通讯调试方法.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

台达PLC通讯调试方法.docx

《台达PLC通讯调试方法.docx》由会员分享,可在线阅读,更多相关《台达PLC通讯调试方法.docx(12页珍藏版)》请在冰豆网上搜索。

台达PLC通讯调试方法.docx

台达PLC通讯调试方法

台达PLC通讯调试方法。

 

你的串口协议是对的,与PLC的默认协议完全相符,PLC不用再作协议设定。

你发送的数据中有几个错误:

1、尾码不是0A0D,而应是0D0A。

正确的字符串数据是=":

"+"0101040010"+LRC码("EA")+CR(0D)+LF(0A)

我已经试过了,返回数据是=":

01810777"  (3A30313831303737370D0A)

我是一个PLC初学者,在Micro Programmable Logic Controller FC4A使用手册中,遇到一个问题:

在17-2中电缆线连接器脚位表格下,有一个  “ 注:

准备连接埠1的电缆显示,请不要插入第6和7针。

如果第6和7针连接在一起,便无法使用使用者通讯。

但是现在所配制的电缆就是第6和7针之间的电阻值接近于0。

在WindLDR中,简单输入输出和定时、计数器可以编程并下载到PLC中正常运行,在使用TXD和RXD指令时按照手册中所述进行梯形图编程时,无法运行,接收状态码显示15,无法进行串行通讯。

我用1:

1进行PC对PLC通讯.

用pc控制plc原理上是一样的,你只要先将pc得端口初始化为和plc一样的通讯协议,然后往plc相对应的地址写数就好了。

不过,这时候plc地址就不是dxxx/mxxx他们对应的地址如下:

 SS0~S10280000H~03FFHBit  XX0~X377(Octal)0400H~04FFHBit  YY0~Y377(Octal)0500H~05FFHBit  TT0~T2550600F~06FFHBit/Word  MM0~M40950800H~B9FFHBit  DD0~D99991000H~A70FHWord  CC0~C1990E00H~0EC7HBit/Word  CC199~C2550EC8H~0EFFHBit/Dword台达的地址都是开放的,除了d1000-d1999/m1000-m1999中间有些地址是唯读的,大家不能修改外,其余应该都没问题,如果控制不了,可能是是地址错了。

2)功能码

  4.2VB与PLC通信的实现

  以下举例说明现场设备与PLC通信的实现。

  1)控制要求:

控制PLC的起动、停止,并显示运行状态(绿色为运行,红色为停止);能够用交替型按钮控制Y0,Y1,并用指示灯显示Y0,Y1状态(绿色为运行,红色为停止);能够对D256,D512两个寄存器进行数值写入的操作。

  2)实现思路:

PLC起动停止的标志位为M1072,查DVP协议,知道地址为H0C30,按功能码01操作;同样Y0,Y1的地址分别为H0500,H0501。

写入FF00为ON,0000为OFF,按功能码05操作;D256,D512地址分别为H1100,H1200,按功能码06操作即可。

  3)VB接口的设计如图10所示。

图10监控程序界面

  用按钮控制PLC的起动停止,Y0、Y1的ON/OFF及D256、D512写完数据的发送;用Shape组件做指示灯,表示PLC的运行状态和Y的状态;用timer组件不停的读取M1072的状态,以判断PLC的运行情况;用MScomm控件实现PC与PLC的通信。

4)编程实现的代码构成

  

(1)LRC算法校验的实现

   PublicFunctionLRC(strAsString)AsString

      c=0

      l=Len(str)

      Forc=c+1Tol

      c_data=Mid$(str,c,2)

      d_lrc=d_lrc+Val("&H"+c_data)

      c=c+1

      Nextc

      Ifd_lrc>&HFFThen

      d_lrc=d_lrcMod&H100

      EndIf

      h_lrc=Hex(&HFF-d_lrc+1)

      IfLen(h_lrc)>2Then

       h_lrc=Mid(h_lrc,Len(h_lrc)-1,2)

      EndIf

      LRC=h_lrc

      EndFunction

  

(2)运行的开始就判断PLC的状态并设置标志位

      Rem初次运行打开串口,并显示PLC运行状态

      PrivateSubForm_Load()

      Dims1AsString

      Dims2AsString

      Dims22AsString

      Dims3AsString

      Dims4AsString

      MSComm1.PortOpen=True

      s2="01010C300001"

      s22=LRC(s2)

      s1=":

"+s2+s22+Chr$(13)+Chr$(10)

      MSComm1.Output=s1

      s3=MSComm1.Input

      s4=Mid$(s,6,8)

      Ifs4="0C30FF00"Then

        plc=1RemPLC为运行标志

      Else

        plc=0RemPLC为停止标志

      EndIf

      EndSub

  (3)下面一段为用指示灯表示PLC的运行状态

      PrivateSubTimer5_Timer()

      Dims1AsString

      Dims2AsString

      Dims22

      Dims3AsString

      Dims4AsString

      s2="01010C300001"

      s22=LRC(s2)

      s1=":

"+s2+s22+Chr$(13)+Chr$(10)

      MSComm1.Output=s1

      s3=MSComm1.Input

      s4=Mid$(s3,8,2)

      Ifs4="31"Then

        plc=1RemPLC为运行标志

      Else:

Ifs4="30"Thenplc=0RemPLC为停止标志

      EndIf

      Ifplc=1Then

        Label2.Caption="PLC正在运行......"

        Shape1.FillColor=RGB(0,255,0)Remgreen

      Else

      Label2.Caption="PLC已经停止"

        Shape1.FillColor=RGB(255,0,0)Remred

      EndIf

      EndSub

(4)PLC的起动与停止

      Rem起动PLC

      PrivateSubstart_Click()

      DimstroutAsString

      Timer5.Enabled=False

      str="00050C30FF00"

      RemM1072为PLC起动停止标志位。

查地址表,M1072为OC30.FF00为置ON,0000为置OFF。

      Rem以上都是固定格式,要牢记。

      LRCC=LRC(str)Rem计算str的lrc校验码。

      strout=":

"+str+LRCC+Chr$(13)+Chr$(10)Rem欲传送之数据。

13为D,10为A

      MSComm1.Output=strout

      Timer5.Enabled=True

      EndSub

      Rem停止PLC

      PrivateSubstop_Click()

      DimstroutAsString

      Timer5.Enabled=False

      str="00050C300000"

      LRCC=LRC(str)

      strout=":

"+str+LRCC+Chr$(13)+Chr$(10)

      MSComm1.Output=strout

      Timer5.Enabled=True

      EndSub

  Y0、Y1的ON/OFF与PLC起动/停止的控制方式相同,指示灯的表示方式也相同。

D256,D512数据写入的操作类似,限于篇幅其它代码就不再列出了。

  5结束语

  VB语言易于编程使用,为与串行设备的通信提供了很大的方便。

台达PLC采用标准的目前广为流行的MODBUS协议,为实现PLC与监控计算机的通信提供了简化的平台。

由于台达所有的机电产品都支持MODBUS协议,所以,掌握了VB与PLC通信过程,也就等于掌握了PC与台达所有机电产品的通信

3A30313035303530304646303046360D0A

十六进制:

010500FF00+(LRC)+(结束)

3A30313035303830304646303046330D0A--将M0置为ON

3A30313035303830303030303046320D0A--将M0置为OF

3A303130313035303046390D0A

3A30313031303530303030303146380D0A

3A30313031303830303030303346330D0A---查询多个位的状态(查M0、M1、M2的状态,返回值:

3A30313031303130354638DA(十六进制:

:

01010105F8)结果是05,也就是M0、M2=ON,M1=OF(二进制)

2 Modbus功能代码

  共有三种类型分别为:

  · 公共功能代码 已定义好的功能码,保证其唯一性,由Modbus.org认可。

  · 用户自定义功能代码 有两组,分别为65~72和100~110,不需要认可,但不保证代码使用的唯一性,如想变为公共代码,需要RFC认可。

  · 保留的功能代码 由某些公司使用在某些传统设备的代码,不可作为公共用途。

  常用公共功能代码见表2。

常用公共功能代码

 功能码

 

 十进码   

 子码

 十六进制

 开关量输入

 读输入点

 02

 

 02

 内部位或开关量输出

 读线圈

 01

 

 01

 写单个线圈

 05

 

 05

 写多个线圈

 15

 

 0F

16

 模拟量输入

 读输入寄存器

 04

 

 04

 内部寄存器或输出寄存器(模拟量输出)

 读多个寄存器

 03

 

 03

 写单个寄存器

 06

 

 06

 写多个寄存器

 16

 

 10

 读/写多个寄存器

 23

 

 17

 屏蔽写寄存器

 22

 

 16

 文件记录

 读文件记录

 20

 6

 14

 封装接口

 写文件记录

 21

 6

 15

 读设备标识

 43

 14

 2B

  表2 常用公共功能代码

  功能代码划按应用深浅分,可分为三个类别:

  

(1) 类别0,对于客户机/服务器最小的可用子集。

  · 读多个保持寄存器(fc.3);

  · 写多个保持寄存器(fc.16)。

  

(2) 类别1,可实现基本互易操作的常用代码。

  · 读线圈(fc.1);

  · 读开关量输入(fc.2);

  · 读输入寄存器(fc.4);

  · 写线圈(fc.5);

  · 写单一寄存器(fc.6)。

  (3) 类别2,用于人机界面、监控系统的例行操作和数据传送功能。

  · 强制多个线圈(fc.15);

  · 读通用寄存器(fc.20);

  · 写通用寄存器(fc.21);

  · 屏蔽写寄存器(fc.22);

  · 读写寄存器(fc.23)。

  3 Modbus应用举例:

读寄存器

  请求   功能码               1字节    0x03

  起始地址          2字节    0x0000到0xFFFF

  寄存器数          2字节    1到125(0x7D)

  应答   功能码              1字节     0x03

  字节数              1字节    2xN

  寄存器的值          Nx2字节

  (N为寄存器的数量)

  出错    出错码             1字节     0x83

  例外码            1字节     01或02或03或04

  4 ModbusTCP请求报文举例,见表3。

  表3

 描述

 

 大小(字节)

示例 

备注 

 MBAP

传输标志Hi

0x15

传输标志用于和应答配合使用

传输标志Lo

1

0x01

每对传输使用唯一的标志

协议标志

2

0x0000

该域可用作寻址Modbus/

Modbus+子网络的路由,这

时,此值含有目的设备的地址

长度

2

0x0006

单元标志

2

0xFF

Modbus

请求

功能代码

1

0x03

读寄存器

起始地址

2

0x0005

 

寄存器数

2

0x0001

  5 ModbusTCP客户端的实现

  用Connect()命令建立对目标设备TCP502端口的连接。

  数据通讯的过程如下:

  

(1) 准备Modbus报文,包括7个字节的MBAP在内的请求;

  

(2) 使用Send()命令发送;

  (3) 在同一连接等待应答;

  (4) 用recv()读报文,完成一次数据交换过程。

  当通讯任务结束时,关闭TCP连接,使服务器可以为其它设备服务。

  6 ModbusTCP的样板程序

  用户可以通过网络下载。

  

(1) 基于WIN32系统下,C的应用程序。

  

(2) 基于UNIX系统下,C的应用程序。

  (3) JAVA的应用程序。

  7 ModbusTCP协议

  协议文本的英文版可从下载。

  8 Modbus的应用

  Modbus是一种通讯协议,于1979年由Modicon公司发明,并将其公开,推向市场,是基于主站从站/客户机服务器方式连接智能设备,实现设备间的数据交换。

  Modbus的通讯几乎可以通过任何物理介质实现,如:

电线、光纤、红外、射频、扩频、微波、卫星等。

Modbus还可以通过不同的网络进行互连,如:

以太网、ADSL、ISDN、PSTN、ATM、FR等。

所以它具有很强的扩展能力,可以说:

连接的距离已不是问题,它可以通过互联网,连接到世界的任何地方。

  Modbus具有很高的速度性能:

响应时间小于10毫秒,目前可以满足工业控制中90%应用的需求,它的下一个实现目标是:

响应时间小于1毫秒。

  由于Modbus是制造业、基础设施环境下,真正的开放协议,故得到了工业界的广泛支持,是事实上的工业标准。

还由于它的协议简单、容易实施和高性价比,所以全球有超过400个厂家支持,使用的设备节点超过700万个。

  9 典型应用介绍

  人机界面+可编程控制器+变频调速器应用(HMI+PLC+VSD)

  这是一种设备制造商(OEM)和传统设备改造时,经常使用的方案,典型配置如图1所示。

  图1 设备制造商或设备改造项目典型应用

  图中人机界面可以是图形的,也可以是文字的,一般文字型HMI比图形的HMI要价格低廉。

图中的变频器只画了一台,实际上使用RS485的多站总线,最多可以连接31台。

可编程控制器可按工艺要求,可对变频器的速度进行调节。

  完成上述方案的关键是用知道变频器内部的命令字和各参数的寄存器号,下面就施耐德公司的ATV58变频器来说明PLC是如何操作变频器的。

  命令字CMD(变频器地址W400)

  位15:

1,简单控制方式;

  位1:

=0串行连接无效

  =1串行连接有效;

  位7:

=0

  =1故障复位;

  位8:

=0激活半行连接控制

  =1取消串行连接控制;

  位11:

=0正转

  =1反转;

  位12:

=0运行

  =1停止(减速停车);

  位13:

=0

  =1直流注入停车;

  位14:

=0

  =1快速停车。

  可以通过可编程控制器的Modbus写命令,把代码发送到W400寄存器中,实现对变频器的控制。

  举例:

  正转运行CMD="H"'002'

  频率给定W401LFR

  转速给定W603LFRD

  反转运行CMD="H"'802'

  频率给定W401LFR

  转速给定W603LFRD

  减速停车CMD="H"'002'

  直流注入停车CMD=H'A002'

  快速停车CMD="H"'C002'

  自由停车CMD="H"'000'

  因为设备制造商对价格比较敏感,所以也有把上述标准的配置进行简化的版本,如图2所示。

  图2 设备制造商或设备改造项目典型应用简化版

  (a)省略人机界面HMI(b)省略PLC

  控制和操作的原理基本上是相同的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1