当前位置:文档之家› VB与PLC的通信

VB与PLC的通信

利用VB6.0 实现PC 与三菱PLC 的通信本文介绍的 PC 与三菱 FX 系列 PLC 通信,是通过 PLC 的编程口与 PC 机的串口进行的,采用编程电缆作为计算机与 PLC 通信的连线。

FX2系列PLC的编程接口采用RS-422标准,而计算机的串行口采用的是RS-232标准,因此作为实现PLC与计算机通信的接口模块FX-232AW,必须将RS-422标准转换成RS-232标准,同时在实现上述过程中采用光电隔离技术。

图1一、串口的相关知识1)串行通信的概念图2所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。

如图2所示。

这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢2)常见的串口通信规约:目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。

最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,且直接用RS232相连。

RS-232C: “1”=-3~-15;“0”=+3~+15速率:0~20000bps;一般传输距离:15m。

RS-422:采用平衡传输,平衡发送器、差动接收器,速率:10Mbps/15m;90Kbps/1200m抗干扰能力强。

DB9和DB25的常用信号脚说明由于FX 2-232AW 价格过贵所以我们选用选用MAXIM 公司的MAX202实现RS-232与TTL 之间的电平转换。

MAX202内部有电压倍增电路和转换电路,仅需+5V 电源就可工作,使用十分方便;选用MAX490实现RS-485与TTL 之间的转换。

每片MAX490有一对发送器/接收器,由于通信采用全双工方式,故需两片MAX490,另外只需外接4只电容即可。

PLC 的RS-422接口配接DB-25型连接器,而PC 机我们一般用DB-9型连接器。

硬件电路图如上。

二、 通信控制线的连接如图3,由于计算机的RS-232接口的4脚和5脚短接,因此,对计算机发送数据来说,PLC 总是处于数据就绪状态。

也就是说,计算机在任何时候都可以将数据送到PLC 内。

又由于RS-232的接口的20脚和6脚交叉相连接,因此,对计算机接受数据来说,就必须检测PLC 是否处于准备就绪状态。

如果6脚为1,这可以接受数据:如果6脚为0,则必须等待,直到为1时,才可以接受数据。

图3X-232AW与PLC和计算机的接线图三、FX2系列PLC与计算机之间的通信协议FX2FX2系列PLC与计算机之间的通信采用RS-232标准,数据传输格式 :FX 系列 PLC 采用异步格式,由 1 位起始位、 7 位数据位、 l 位偶校验位及 l 位停止位组成,波特率为9600bps ,字符为 ASCⅡ码。

它的传输速度固定为9600bps。

数据的格式如图4(a)所示奇偶校验。

图4(b)为字符STX(02H)的书写格式。

在图4中,七位数据必须是ASCII码,在FX2系列PLC与计算机的通信中,仅用到表1所列的那些ASCII码。

表1 FX2系列PLC与计算机通信所用的字符及其ASCII码图4 数据格式规定通信主从关系:主机的发出初始命令,PLC对其作出响应。

FX 系列 PLC 有 4 条通信命令,即读命令、写命令、强制通命令、强制断命令,分别为0、1、7、8四种命令,上位机实现对PLC的读写和强行置位。

通过ENQ、ACK和NAK,上位机协调与PLC的通信应答。

在FX2系列PLC与计算机之间进行的通信中,PLC始终处于一种“被动响应”的地位,无论是数据的读或写,都是先由计算机发出信号。

在FX2系列PLC与计算机的通信中,数据是以桢为单位发送和接受的。

其中字符ENQ、ACK和NAK作为单个控制字符,可以构成单字符桢。

其余的字符在发送或接受必须用字符STX 和ETX分别表示字符桢的起始标志和结束标志,否则将造成构桢错。

一个多字符桢由字符STX、命令码、数据、字符ETX以及和校验五部分组成,其中和校验值是将命令码到ETX 之间的所有字符的ASCII码(十六进制)相加,取所得和的最低二位数,如图5所示。

在FX2系列PLC与计算机通信所用到的命令码共有四个,如表2所示。

图5表2 FX系列PLC计算机通信所用的命令码命令码操作数功能0 X,Y,M,S,T,C,D 该位软设备的状态或字软设备内的数据1 X,Y,M,S,T,C,D 对位软设置“1”或“0”和对字软设备写数7 X,Y,M,S,T,C 对位软设备强制置“1”8 X,Y,M,S,T,C 对位软设备强制置“0”通信检测读数据在刚开始通信时,计算机首先要发送一个控制字符ENQ,去查询PLC是否作好通信的准备,同时也可以检查一下计算机与PLC的连接是否正确。

当PLC接受到该字符后,如果它处在RUN状态,则要等到本次扫描结束(即扫描到END指令)时才应答;如果它处在STOP状态,则马上应答。

若通信正常,则应答字符ACK;若通信有错,则应答字符NAK。

如果计算机发送了一个控制字符ENQ,经过5s后,什么信号也没有收到,此时计算机应再发送二次控制字符ENQ,如果还是什么信号也没有收到,则说明连接有错。

在上述情况中,当计算机接收到来自PLC的应答字符ACK后,就可以进入数据通信了。

当计算机发送数据时,其RS-232接口上的ER端(即20脚)为高电平(逻辑“1”),这样,与其相连接的FX-232AW接口模块上的DR端(即6脚)也为高电平,它表示计算机的数据就绪,PLC可以接受数据了。

此时,PLC强制处于接受状态,即使它做出应答,也不会被计算机接收,因此,当计算机发送完数据后,必须将ER 端置为低电平。

这点由计算机RS-232接口上的RS端(即4脚)和CS端(即5脚)短接来保证 5计算机发送完数据后。

ER端会自动变为低电平。

此时,任何由PLC做出的应答都可以被计算机接收,即计算机处在接收数据的状态。

当计算机读取PLC对其指令的应答信号后,复位通信线路,表示本次通信完。

四.操作方式:1.计算机对PLC的软设备进行读操作计算机对PLC软设备进行读操作的多字符桢的编制格式如图6(a)所示,前二个字符分别为桢的起始标志和读命令;接着四个字符为计算机要读取的软设备的首地址;再接下去二个字符为要读取的软设备的字节数,该字节数的取值范围为01H-40H(即1-64字节),八个位软设备为一个字节,一个字软设备为二个字节;倒数第三个字节为桢的结束标志;最后二个字节为和校验的值。

图6(b)为计算机读取PLC输出线圈Y20-Y37状态的多字符桢,查FX-232AW的用户手册,输出线圈Y20-Y27的地址为00A2H,而Y20-Y37为三个字节,和检验值SUM将命令码到ETX的各ASCII码相加后,取最低二位数,即:SUM=30H+30H+30H+41H+32H+30H+32H+03H=168H162位上的1舍去图62. 计算PLC进行写操作计算机对PLC软设备进写操作的多字符桢的编制格式如图7(a)所示,前二格外字符桢分别为桢的标志和写命令;接着四个字符计算机要进行写操作的软设备的首地址接下去二个字符为要进行写操作的软设备的字节数,该字节数的取值范围为01H-40H(即64个字节);再接下去是要写到各软设备中去的数据;倒数第三个字节为桢的结束标志;最后二个字节为和校验的值。

图7(b)为计算机对PLC的数据寄存器D0-D1进行写操作的多字符桢,查FX-232AW的用户手册就,数据寄存器D0低八位的地址为1000H,高八位地址为1001H,因此,软设备的首地址为1000H;D0和D1共占四个字节;将K1234写入D0中,将K5678写入D1内;和校验值SUM将命令码到ETX的各ASCII码相加后,取最低二位数,即:SUM=31H+31H+30H+30H+30H+30H+34H+33H+34H+31H+32H+37H+38H+35H+36H+03H=2FDH 162位上的2舍去图7图83. 计算机对PLC的位软设备执行强制ON的操作计算机只能对PLC的位软设备X,Y,M,S以及计时器T和计数器C的逻辑线圈执行强制ON操作,该操作的多字符桢的格式如图2-11(a)所示。

在图9(a)中,前二个字符分别为桢的起始标志和写命令;接着四个字符为计算机要执行强制ON操作的位软设备的地址;倒数第三个字节为桢的结束标志;最后二个字节为和校验的值。

图9(b)为计算机对PLC的计时器T80的逻辑线圈执行强制ON的多字符桢,查FX-232AW的用户手册,计时器T80的地址伪650H,和校验值SUM将命令码到EXT的各ASCII码相加后,取最低二位数,即:SUM=37H+35H+30H+30H+36H+03H=105H (162位上的1舍去)图94.计算机对PLC的位软设备执行强制OFF的操作。

计算机对PLC的位软设备执行强制OFF的操作的情况与执行强制ON的相似,只要将命令码7改为8即可,这里不再详细介绍。

四、PC 通信程序的编写1 .通信口初始化MSComm 控件简介: VB 带有专门管理串行通讯的 MSComm 控件。

只需设置几个主要参数就可以实现 PLC 与 PC 间的串行通讯。

要完成通信必须设置 MSComm 的相关属性值,即通信口初始化,其步骤如下:(1)CommPort :设置或传回通信连接端口代号。

(2)Settings :设置初始化参数。

以字 - 符串的形式设置或传回连接速度、奇偶校验、数据位、停止位等 4 个参数。

(3)PortOpen :设置或传回通信连接端口的状态。

(4)Input :从输入寄存器传回并移除字符。

(5)Output :将一个字符串写入输出寄存器。

(6)InputLen :指定由串行端口读入的字符串长度。

(7)InBufferCount :传回在接收寄存器中的字符数。

用VB6.0编写程序如下:Private Sub Form_Load()With MSComm1.CommPort = 2.Settings = "9600,e,7,1".InputLen = 0.InputMode = comInputModeText.InBufferSize = 1024.OutBufferSize = 1024.Handshaking = comNoneIf .PortOpen = False Then '判断通信口是否打开.PortOpen = True '打开通信If Err Then '错误处理MsgBox "串口被占用"Command1.Enabled = FalseExit SubEnd IfCommand1.Enabled = TrueEnd IfEnd WithIf MSComm1.PortOpen = True ThenLabel1.Caption = "串口打开"End IfEnd Sub2 .通讯程序举例首先,在窗体开始设计之前,添加MSComm 控件和按钮、文本框、标签等。

相关主题