用VB远程控制三菱PLC
2018-03-13  来源:网络或本站原创

     可编程控制器(Programmable Controller,简称PC)是一种数字运算操作的电子设备。它使用了可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作指令,通过数字或模拟输入/输出组件控制各种类型的机械或生产过程。PC具有功能齐全、应用灵活、操作维修容易方便和稳定可靠等特点,因此广泛用于工业现场控制。其典型应用方案是:采用PC作为下位机实现过程的自动控制,以微机为上位机,完成工业流程和工艺参数的显示以及控制参数的修改等功能。但是在一些危险和恶劣环境下,需要用微机远程控制PC系统的运行和停止。本文结合作者所开发的危险环境下控制系统,以三菱A2A 可编程控制器为例介绍VB远程控制三菱A系列可编程控制器的运行,并给出系统实现方法与示例程序。

 

  2. 系统设置与协议

 

  为进行系统控制需进行硬件和软件设置,这部分内容是系统实现的关键。系统利用RS232通讯接口线将PC(利用AJ71UC24通讯模块,25针)与微机的串行通信口(COM19针)进行连接。

 

  2.1AJ71UC24的通信控制协议

PC的通讯模式(mode)开关设置为1。以下是Melsec-A PC 格式1通信协议的格式:

  其中:RR为控制PC启动命令,RS为控制PC停止命令。

AJ71UC24通信模块所使用的主要控制字以及含义

2.2 AJ71UC24设置:

 

  AJ71UC24的通讯参数设置均通过其DIP开关设置,本例的参数设置如下:波特率:9600,数据位:8,停止位:1,有求和效验,可以进行在线写。DIP开关设置如下表:

开关

设置

开关

设置

开关

设置

开关

设置

开关

设置

开关

设置

SW11

OFF

SW12

ON

SW13

ON

SW14

OFF

SW15

ON

SW16

ON

SW17

OFF

SW18

OFF

SW21

ON

SW22

ON

SW23

ON

SW24

OFF

2.3 PC的运行开关设置

若实现利用VB程序进行PC控制,必须将PC的运行开关设置在ON的位置。运行开关设置与对应的控制结果如下表:

  2.4 VB通信功能设计与实现

 

  VB通过MSCOMM控件控制串行口,该控件屏蔽了通讯过程中的底层操作程序,用户只需设置和监视控件的属性和事件,就可很方便地实现串行异步通讯,它有事件驱动通信和查询通信两种方式,通过检查InBufferCount属性值来判断输入缓冲区中是否接受到相应数目的字符,为实现所述通信,应在窗体中加入一个通讯控件MSComm,控件的参数设置要与上述PC通讯模块AJ71UC24的设置相同。控制命令的传输采用即时传送方法。

 

  3. 软件编程与实现

 

  监控微机主要供系统管理人员对PC进行系统运行的控制。下面主要列出微机对PC进行控制有关的程序。本例是以单个PC为例,PC站号为00HPC号为FFH。:

 

  该功能的实现必须将PC运行开关扳到RUN位置。通过在Form中加入两个option按钮实现:第一选项为启动,命令为"RR";第二选项为停止,命令为"RS"

 

Private Sub Option1_Click(Index As Integer)

 Dim An_Msg, Kzh_Cmd rd, rdf, temp, temp1 As String

 Dim i, rdd As Long

 Select Case Index

  Case 0

   Kzh_Cmd = "RR" '启动PC系统

  Case 1

   Kzh_Cmd = "RS" '关闭PC系统

 End Select

 Screen.MousePointer = 11

 If MSComm1.PortOpen = False Then

  MSComm1.PortOpen = True

 End If

 MSComm1.InputLen = 0

 rd = Chr$(5) + "00FF" + Trim(Kzh_Cmd) + "0"

 rd=rd + Xy_hj(rd) '其中Xj_hj字符串效验求和函数

 MSComm1.Output = rd

 Do

  dummy = DoEvents()

 Loop Until MSComm1.InBufferCount >= 5

 rdf = MSComm1.Input

 temp = Mid(rdf, 1, 5)

 If temp<> Chr$(6) + "00FF" Then

  MsgBox "命令运行失败!!!", 16

 End If

 Screen.MousePointer = 0

End Sub