您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页PLC的RS-485口与计算机通信实现远程监控

PLC的RS-485口与计算机通信实现远程监控

来源:步遥情感网
PLC的RS-485口与计算机通信实现远程监控

一、概述

台达DVP系列PLC因其功能齐全、结构紧凑、组网简单、通信协议公开等特点而受到海内外客户的盛誉!

台达DVP系列PLC集RS232、RS485于一身,且在组网方面PLC端无需增加任何通信转接设备,网络连接简单,通信稳定可靠,可据用户的意念对其进行编写通信程序,使用方便。

本文介绍计算机与台达PLC之间用RS-485通信实现远程监控,计算机作为主站,可以实现对PLC从站各寄存器的读/写操作。计算机通过COM口发送指令到PLC的485口,PLC通过通信串行I/O(RS)指令,然后对指令进行译码,译码后调用相应的读/写子程序实现指令要求的操作,并通过通信串行I/O(RS)指令返回指令执行的状态信息。

文章用空调监控系统为例子,为解决在计算机中能用RS-485与PLC通信,在计算机中加插一块两口的RS232/RS485转换卡,口号为(COM3、COM4);现场用8台台达DVP20EX00R作为控制子站(J1~J8),其中J1~J4 5个子站连成一个485子网与计算机COM3口通信,J5~J8 5个子站连成一个485子网与计算机COM4口通信。计算机上运行的程序由VB6.0环境下实现(可用任一高级语言)。

1

系统功能:

A、 计算机从各PLC中读取当前的实时采样资料(温度、室

内压力、湿度、各个风阀的开度与状态、各IO及中间状态);

B、 对PLC设定温度、湿度;

C、 对PLC设定各个PID参数(每台PLC 8个PID) D、 对PLC设定开关机延时参数 E、 对PLC设定温湿控制中的快启参数

计算机在0.5秒内完成对所有PLC资料的读取、处理与显示。

二、系统方案及网络结构

1、

出于如下考虑我们选用RS-485

DVP系列PLC具有RS-485口与通信能力; 整个系统有多台PLC子系统组成; 原有RS-232已用于与其它设备通信; 各子系统相距较远(最大距离600米);

2

A、 B、 C、 D、

E、 2、

抗干扰性强,有利于精确度的控制。

系统硬件组成

A、 DVP系列(DVP20EX00R)PLC:自带RS232与RS485口,组网

方便; B、 C、

2芯带屏蔽双绞线:抗干扰性强; 工业控制计算机:稳定性好;

D、 RS232/RS485转换卡:安装后,可象计算机自带的RS232口一

样使用。

三、通信实现

DVP系列PLC的485通信方式较为灵活,通俗地说其通信方式可分为:自由方式与可定义方式两种。本文中用自由方式的通信格式(即不对起始字符与结束字符定义)。 1、

通信串行I/O指令

DVP系列PLC指令集中有一指令专用于RS485通信:RS指令,用此指令可实现DVP系列PLC与所有遵循标准RS-485通信功能的设备进行485方式的通信操作。

2、

与RS指令有关的M组件

M1120:用于保持已设定的通信协议。可在PLC RUN的瞬间(M1002)

时用 SET M1120 指令:LD M1002 SET M1120

在PLC RUN的瞬间,PLC会据D1120内的设定资料作为当前的通

3

信协议。

M1122:通信条件开关。无论用户是要用RS指令发送资料或接收数据,

在RS指令之前,都要使M1122处于ON的状态,否则RS指令不执行。当RS指令执行完成后,PLC将自动把M1122置为OFF状态,用户要在RS指令在下一次通信之前把M1122置为ON状态。

M1123:RS指令接收数据完毕标志。当RS指令接收资料完毕时,PLC

将把M1123置为ON状态,用户可把此作为处理接收资料的入口,处理完接收来的资料后,要实时把M1123置为OFF状态,以保通信程序的正确性。

M1161:通信位处理模式。OFF:16位;ON:8位 M1126:通信位处理模式。OFF:16位;ON:8位 3、

通信协议参数的定义(D1120)

D1120中存放的数据用于定义RS指令在进行通信时所用到的基本参数。 如用户要使用9600,N,8,1 的参数,则D1120中的资料需为 H81(0000 0000 1000 0001)

D1120中的设定一定要与对方的设定通信参数一致,否则通信将不能成功。

注:为使PLC中的资料在通信过程中确保不丢失,建议用8位的资料位。

4

4、 通信格式的定义

台达DVP系列PLC在通信的字符格式方面没有特别的规定,这样就

有利于用户根据需要自由定义自己的通信字符格式。

在本例系统中,因考虑到各PLC子系统离计算机较远,在各个电气柜中又有会产生干扰源的变频器,为确保资料在传送过程中的正确性,在字符格式中增加了校验字符(一个字节),以校验数据的正确性。 在本例系统中,计算机向PLC发送的信息有8种(分为读数与写

设定资料),PLC又怎么

识别计算机要PLC进行何种操作呢?据此在字符格式中增加了操作功能字符(一个字节),用于使PLC识别计算机要PLC进行何种操作。 在本例系统中,一个RS485子网中不只一台PLC,要使PLC能识别计算机是否要与自己通信,在字符格式中还需要增加PLC站号字符(一个字节),用于使PLC识别计算机是否要与自己通信。

据以上的要求,形成的通信字符格式为:

PLC站号+操作功能号+要传送的资料+校验字节

四、PLC中通信程序的实现

5

程序说明:

1、

由于篇幅所限,实际应用中的程序有3000多步,在此只能列出

简要的用于说明RS485通信的程序段; 2、

程序中PLC站号为2号,当PLC确定由计算机传来的第一个字符

为2时,此程序段程序中数据处理才被执行; 3、

0号操作功能为从PLC中读取实时数据;1号操作功能为向PLC

设定资料,PLC把已设定进去(D536)的资料反传给计算机,以便计算机验正数据设定的成功与否; 4、

六、计算机中通信程序的实现

在计算机中用MSCOMM控件实现对COM3与COM4的操作通信。 与台达DVP系列PLC通信可用字符方式与二进制方式,考虑到操作的方便性,本例子系统中用二进制ASCII方式,为解决对大于255的资料,在

6

D254为校验字节。

PLC与计算机程序中要进行分解处理。 1、

MSCOMM属性的定义

通信口定义为3,通信方式定义为二进制方式,通信参数定义为与PLC中的一致9600,N,8,1,使用通信事件捕获与软中断方式。因MSCOMM控件为在Windows下的标准控件,在此不再详细说明。

2、

在计算机中接收与发送资料程序

Global SendToPLCString_485(11) As Byte Global ReadFromPLCString_485() As Byte Global ReadFromPLCStringLen As Integer

Public Sub DoCommPort(DoType As Integer, PortNoTemp As Integer) 用于串口的打开与关闭 On Error GoTo COMMError

COMMOpenFlag(PortNoTemp) = False If DoType = 1 Then

7

If FormMain.PLCComm(PortNoTemp).PortOpen = False Then FormMain.PLCComm(PortNoTemp).PortOpen = True End If Else

If FormMain.PLCComm(PortNoTemp).PortOpen = True Then FormMain.PLCComm(PortNoTemp).PortOpen = False End If End If

On Error GoTo 0 Exit Sub COMMError:

If DoType = 1 Then

MsgBox \"打开网络连接端口\" & Trim$(Str$(PortNoTemp)) & \"错误!\" & Chr(13) & \"系统将无法实现连网监控或设定功能。\警告\" COMMOpenFlag(PortNoTemp) = True Else

MsgBox \"关闭网络连接端口错误!\警告\" End If

On Error GoTo 0 End Sub

Private Sub PLCComm_OnComm(Index As Integer) 用于接收串口的字节 if PLCComm(Index).InBufferCount >= 13 Then

8

ReadFromPLCStringLen

FormMain.PLCComm(LinkCommNo).InBufferCount 位组长度

=

ReadFromPLCString_485 = FormMain.PLCComm(LinkCommNo).Input 取字节

FormMain.PLCComm(LinkCommNo).InBufferCount = 0 清除字节 Dim ErrorFlag As Integer ErrorFlag = 0

For SampleI = 0 To 12 处理字节

SampleString(SampleI) = ReadFromPLCString_485(SampleI) If SampleI < 12 Then ErrorFlag = ErrorFlag + SampleString(SampleI) Next SampleI

ErrorFlag = ErrorFlag Mod 256 算出校验字节 If ErrorFlag <> SampleString(12) Then Exit Sub

PLCNoTemp = SampleString(0) 得出PLC站号 End If End Sub

Public Sub SendToPLC_SelectPLC_485(PLCNoTemp As Integer) 发送字节

FormMain.PLCComm(LinkCommNo).OutBufferCount = 0 SendToPLCString_485(0) = 2 PLC站号

For PublicI = 1 To 11

9

SendToPLCString_485(PublicI) = 0

Next PublicI

FormMain.PLCComm(LinkCommNo).Output = SendToPLCString_485 End Sub

10

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务