您的位置:控制工程论坛网论坛 » PLC与PAC » 利用VB远程控制三菱A系列可编程控制器的运行

马军成

马军成   |   当前状态:在线

总积分:13914  2024年可用积分:0

注册时间: 2006-12-01

最后登录时间: 2022-06-28

空间 发短消息加为好友

利用VB远程控制三菱A系列可编程控制器的运行

马军成  发表于 2007/1/2 15:59:52      980 查看 0 回复  [上一主题]  [下一主题]

手机阅读

  转贴

 1. 引言

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

  2. 系统设置与协议

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

  2.1AJ71UC24的通信控制协议

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



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

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


2.2 AJ71UC24设置:

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



2.3 PC的运行开关设置

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



  2.4 VB通信功能设计与实现

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

  3. 软件编程与实现

  监控微机主要供系统管理人员对PC进行系统运行的控制。下面主要列出微机对PC进行控制有关的程序。本例是以单个PC为例,PC站号为00H,PC号为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

1楼 0 0 回复