PC与三菱FX系列PLC通信的实现

来源:本站
导读:目前正在解读《PC与三菱FX系列PLC通信的实现》的相关信息,《PC与三菱FX系列PLC通信的实现》是由用户自行发布的知识型内容!下面请观看由(电工学习网 - www.9pbb.com)用户发布《PC与三菱FX系列PLC通信的实现》的详细说明。

1.硬件连接

一台PC机可与一台或最多16台三菱FX系列plc通信,PCPLC之间不能直接连接。如图1ab为点对点结构的连接,图a中是通过FX-232AW单元进行RS-232C/RS-422转换与PLC编程口连接,图b中通过在PLC内部安装的通信功能扩展板FX-232-BDPC连接;如图1c所示为多点结构的连接,FX-485-BD为安装在PLC内部的通信功能扩展板,FX-485PC-IFRS-232CRS-485的转换接口。除此之外当然还可以通过其它通信模块进行连接,不再一一赘述。下面以PCPLC之间点对点通信为例。

PC与三菱FX系列PLC通信的实现

1 PCFX的硬件连接图

2.三菱FX系列PLC通信协议

PC中必须依据所连接PLC的通信规程来编写通信协议,所以我们先要熟悉FX系列PLC的通信协议。

1)数据格式

三菱 FX系列PLC采用异步格式,由1位起始位、7位数据位、1位偶校验位及1位停止位组成,比特率为9600 bps,字符为ASC码。数据格式如图2所示。

PC与三菱FX系列PLC通信的实现

2 数据格式

2)通信命令

三菱FX系列PLC4条通信命令,分别是读命令、写命令、强制通命令、强制断命令,如表1所示。

1 FX系列PLC的通信命令表

PC与三菱FX系列PLC通信的实现

3)通信控制字符

FX系列PLC采用面向字符的传输规程,用到5个通信控制字符,如表2所示。

2 FX系列PLC通信控制字符表

控制字符

ASC

功能说明

ENQ

05H

PC发出请求

ACK

06H

PLCENQ的确认回答

NAK

15H

PLCENQ的否认回答

STX

02H

信息帧开始标志

ETX

03H

信息帧结束标志

注:当PLC对计算机发来的ENQ不理解时,用NAK回答。

4)报文格式

计算机向PLC发送的报文格式如下:

STX

CMD

数据段

ETX

SUMH

SUML

其中,STX为开始标志:02HETX为结束标志:03HCMD为命令的ASC码;SUMHSUML为按字节求累加和,溢出不计。由于每字节十六进制数变为两字节的ASC码,故校验和为SUMHSUML

数据段格式与含义如下:

PC与三菱FX系列PLC通信的实现

注:写命令的数据段有数据,读命令数据段则无数据。

PLCPC发的应答报文格式如下:

PC与三菱FX系列PLC通信的实现

注:对读命令的应答报文数据段为要读取的数据,一个数据占两字节,分上位下位:

数据段:

PC与三菱FX系列PLC通信的实现

对写命令的应答报文无数据段,而用ACKNAK作应答内容。

5)传输规程

PCFX系列PLC间采用应答方式通信,传输出错,则组织重发。其传输过程

如图3所示。

PC与三菱FX系列PLC通信的实现

3 传输过程

PLC根据PC的命令,在每个循环扫描结束处的END语句后组织自动应答,无需用户在PLC一方编写程序。

3PC通信程序的编写

编写PC的通信程序可采用汇编语言编写,或采用各种高级语言编写,或采用工控组态软件,或直接采用PLC厂家的通信软件(如三菱的MELSE MEDOC等)

下面利用VB6.0以一个简单的例子来说明编写通信程序的要点。假设PC要求从PLC中读入从D123开始的4个字节的数据(D123D124),其传输应答过程及报文如图4所示。

PC与三菱FX系列PLC通信的实现

4 传输应答过程及命令报文

命令报文中10F6HD123的地址,04H表示要读入4个字节的数据。校验和SUM30H31H30H46H36H30H34H03 H174H,溢出部分不计,故SUMH=7SUAIL=4,相应的ASC码为“37H”,“34H”。应答报文中4个字节的十六进制数,其相应的ASC码为8个字节,故应答报文长度为12个字节。

根据PCFX系列PLC的传输应答过程,利用VBMSComm控件可以编写如下通信程序实现PCFX系列PLC之间的串行通信,以完成数据的读取。MSComm控件可以采用轮询或事件驱动的方法从端口获取数据。在这个例子中使用了轮询方法。

1)通信口初始化

Private Sub Initialize()

MSComm1CommPort =1

MSComm1Settings = “9600,E,7,1”

MSComm1InBufferSize = 1024

MSCommlOutBuffersize = 1024

MSComm1InputLen = 0

MSCommlInputMode = comInputText

MSComm1Handshaking = comNone

MSComm1PortOpen = True

End Sub

2)请求通信与确认

Private Function MakeHandshaking()As Boolean

Dim InPackage As String

MSCommlOutBufferCount = 0

MSCommlInBufferCount = 0

MSCommlOutPut = Chr(&H5

Do

DoEvents

Loop Until MSCommlInBufferCount = 1

InPackage = MSCommlInput

If InPackage = Chr(&H6 Then

MakeHandShaking = True

Else

MakeHandshaking = False

End If

End Function

3)发送命令报文

Private Sub SendFrame ()

Dim Outstring As String

MSCommlOutBufferCount = 0

MSCommlInBufferCount = 0

Outstrin = Chr(&H2)+on10F604Chr(&H3)+74

MSCommlOutput = Outstring

End Sub

4)读取应答报文

Private Sub ReceiveFrame()

Dim Instring As String

Do

DoEvents

Loop Until MSCommlInBufferCount = 12

InString = MSCommlInpult

End Sub

提醒:《PC与三菱FX系列PLC通信的实现》最后刷新时间 2023-07-10 04:04:24,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PC与三菱FX系列PLC通信的实现》该内容的真实性请自行鉴别。