为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

台达PLC通讯调试方法

2019-04-15 13页 doc 56KB 147阅读

用户头像

is_601191

暂无简介

举报
台达PLC通讯调试方法台达PLC通讯调试方法。 台达PLC出厂通讯格式为,ASCII,9600,7,E,1,支持功能码03H,06H,10H,如用串口调试程序向PLC(站号为1)的D0写H1770,ASCII字符为: “: d0a”应在串口调试程序中写入的16进制代码为: 3A 30 31 30 36 31 30 30 30 31 37 37 30 36 32 0D 0A 注意阿ASCII模式下 字符0对应16进制30H,1对应16进制31H ,依次类推...... 你的串口协议是对的,与PLC的默认协议完全相符,PLC不用再作协议设定。 你发...
台达PLC通讯调试方法
台达PLC通讯调试方法。 台达PLC出厂通讯格式为,ASCII,9600,7,E,1,支持功能码03H,06H,10H,如用串口调试程序向PLC(站号为1)的D0写H1770,ASCII字符为: “: d0a”应在串口调试程序中写入的16进制代码为: 3A 30 31 30 36 31 30 30 30 31 37 37 30 36 32 0D 0A 注意阿ASCII模式下 字符0对应16进制30H,1对应16进制31H ,依次类推...... 你的串口是对的,与PLC的默认协议完全相符,PLC不用再作协议设定。 你发送的数据中有几个错误: 1、尾码不是0A0D,而应是0D0A。 2、16进制数据与ASCII码混在了一起,"010*********"是ASCII码,应全部转换为16进制。 正确的字符串数据是=":"+"010*******"+LRC码("EA")+CR(0D)+LF(0A) 转换为16进制="3A3045410D0A",你把引号内的内容复制到你的串口调试软件中,按16进制发送试试。 我已经试过了,返回数据是=":01810777"   (3A 30 31 38 31 30 37 37 37 0D 0A) 我是一个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他们对应的地址如下:  S S0 ~S1028 0000H~03FFH Bit   X X0~X377(Octal) 0400H~04FFH Bit   Y Y0~Y377(Octal) 0500H~05FFH Bit   T T0~T255 0600F~06FFH Bit/Word   M M0~M4095 0800H~B9FFH Bit   D D0~D9999 1000H~A70FH Word   C C0~C199 0E00H~0EC7H Bit/Word   C C199~C255 0EC8H~0EFFH Bit/Dword 台达的地址都是开放的,除了d1000-d1999/m1000-m1999中间有些地址是唯读的,大家不能修改外,其余应该都没问题,如果控制不了,可能是是地址错了。 2)功能码 4.2 VB与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算法校验的实现 Public Function LRC(str As String) As String c = 0 l = Len(str) For c = c + 1 To l c_data = Mid$(str, c, 2) d_lrc = d_lrc + Val("&H" + c_data) c = c + 1 Next c If d_lrc > &HFF Then d_lrc = d_lrc Mod &H100 End If h_lrc = Hex(&HFF - d_lrc + 1) If Len(h_lrc) > 2 Then h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2) End If LRC = h_lrc End Function (2) 运行的开始就判断PLC的状态并设置标志位 Rem 初次运行打开串口,并显示PLC运行状态 Private Sub Form_Load() Dim s1 As String Dim s2 As String Dim s22 As String Dim s3 As String Dim s4 As String 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) If s4 = "0C30FF00" Then plc = 1 Rem PLC为运行标志 Else plc = 0 Rem PLC为停止标志 End If End Sub (3) 下面一段为用指示灯表示PLC的运行状态 Private Sub Timer5_Timer() Dim s1 As String Dim s2 As String Dim s22 Dim s3 As String Dim s4 As String s2 = "01010C300001" s22 = LRC(s2) s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10) MSComm1.Output = s1 s3 = MSComm1.Input s4 = Mid$(s3, 8, 2) If s4 = "31" Then plc = 1 Rem PLC为运行标志 Else: If s4 = "30" Then plc = 0 Rem PLC为停止标志 End If If plc = 1 Then Label2.Caption = "PLC正在运行......" Shape1.FillColor = RGB(0, 255, 0) Rem green Else Label2.Caption = "PLC已经停止" Shape1.FillColor = RGB(255, 0, 0) Rem red End If End Sub (4) PLC的起动与停止 Rem 起动PLC Private Sub start_Click() Dim strout As String Timer5.Enabled = False str = "00050C30FF00" Rem M1072 为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 End Sub Rem 停止PLC Private Sub stop_Click() Dim strout As String Timer5.Enabled = False str = "00050C300000" LRCC = LRC(str) strout = ":" + str + LRCC + Chr$(13) + Chr$(10) MSComm1.Output = strout Timer5.Enabled = True End Sub Y0、Y1的ON/OFF与PLC起动/停止的控制方式相同,指示灯的表示方式也相同。D256,D512数据写入的操作类似,限于篇幅其它代码就不再列出了。 5 结束语 VB语言易于编程使用,为与串行设备的通信提供了很大的方便。台达PLC采用标准的目前广为流行的MODBUS协议,为实现PLC与监控计算机的通信提供了简化的平台。由于台达所有的机电产品都支持MODBUS协议,所以,掌握了VB与PLC通信过程,也就等于掌握了PC与台达所有机电产品的通信 3A 30 31 30 35 30 35 30 30 46 46 30 30 46 36 0D 0A 十六进制::01 05 00 FF 00+(LRC)+(结束) 3A 30 31 30 35 30 38 30 30 46 46 30 30 46 33 0D 0A  --将M0置为ON 3A 30 31 30 35 30 38 30 30 30 30 30 30 46 32 0D 0A  --将M0置为OF 3A 30 31 30 31 30 35 30 30  46 39 0D 0A    3A 30 31 30 31 30 35 30 30 30 30 30 31 46 38 0D 0A 3A 30 31 30 31 30 38 30 30 30 30 30 33 46 33 0D 0A---查询多个位的状态(查M0、M1、M2的状态,返回值:3A 30 31 30 31 30 31 30 35 46 38 D A(十六进制::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字节     2 x N 寄存器的值           N x 2字节 (N为寄存器的数量) 出错     出错码              1字节      0x83 例外码             1字节      01或02或03或04 4  Modbus TCP 请求报文举例,见表3。 表3 描述 大小(字节) 示例 备注 MBAP 传输标志Hi 1 0x15 传输标志用于和应答配合使用 传输标志Lo 1 0x01 每对传输使用唯一的标志 协议标志 2 0x0000 该域可用作寻址Modbus/Modbus+子网络的路由,这时,此值含有目的设备的地址 长度 2 0x0006 单元标志 2 0xFF Modbus请求 功能代码 1 0x03 读寄存器 起始地址 2 0x0005 寄存器数 2 0x0001           5  Modbus TCP客户端的实现 用Connect( )命令建立对目标设备TCP502端口的连接。 数据通讯的过程如下: (1)  准备Modbus报文,包括7个字节的MBAP在内的请求; (2)  使用Send( )命令发送; (3)  在同一连接等待应答; (4)  用recv( )读报文,完成一次数据交换过程。 当通讯任务结束时,关闭TCP连接,使服务器可以为其它设备服务。 6  Modbus TCP的样板程序 用户可以通过网络www.transparentfactory.com下载。 (1)  基于WIN32系统下,C的应用程序。 (2)  基于UNIX系统下,C的应用程序。 (3)  JAVA的应用程序。 7  Modbus TCP协议 协议文本的英文版可从www.modbus.org下载。 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台。可编程控制器可按工艺要求,可对变频器的速度进行调节。
/
本文档为【台达PLC通讯调试方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索