利用VB远程控制三菱A系列可编程控制器的运行 点击:2903 | 回复:11



如火

    
  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2005-11-09 11:05:00
楼主
转贴

 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"。



9鬼

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 40回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2003年7月02日
发表于:2005-11-10 20:05:00
1楼
你这算什么“远程控制”?232最多也不过能扯远50米。就算422也只能算“中程”。
有空研究一下用调制解调器作真正的远程控制。从北京控制和诊断广东的设备。那才有意义。要做出产品,很有市场。我以前用过,但可靠性差,现在又不好买。

深蓝色的天空

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 19回
  • 年度积分:0
  • 历史总积分:46
  • 注册:2003年12月21日
发表于:2005-11-10 23:01:00
2楼
9号小生说的有一定道理,但是也不完全说作者说的就不对。上述论文所说情况在企业中的确属于远程控制。而你说的远程又是另外一会事。如果将上述论文说的情况稍加扩展,也同样可以做到在中国控制和诊断美国的产品。而你用的调制解调器是一种办法,但是就恰如你说的,并不可靠,而且你要实现对MODEM的直接读写,从整个系统的角度来说也并不是最佳且没有通用性。关于这方面,可以使用协同制造或者制造执行系统的原理方法,好像更好一点。愿意讨论的话,可来信联系: calmman@eyou.com

我是我

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 1回
  • 年度积分:0
  • 历史总积分:64
  • 注册:2002年9月15日
发表于:2005-11-12 18:35:00
3楼
我喜欢,哪里能找到通讯方面的更详细的资料呀

如火

  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-03-03 13:54:00
4楼
修改了一下图片

如火

  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-03-03 14:06:00
5楼

如火

  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-03-03 14:09:00
6楼
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

游牧人

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 119回
  • 年度积分:0
  • 历史总积分:198
  • 注册:2003年10月30日
发表于:2006-04-07 11:45:00
7楼
budong

西安苏先生

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 119回
  • 年度积分:0
  • 历史总积分:131
  • 注册:2005年6月04日
发表于:2006-04-18 20:35:00
8楼
232超过15m就没保证了。

好好学习天天向up

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 5回
  • 年度积分:0
  • 历史总积分:8
  • 注册:2004年11月21日
发表于:2006-06-01 23:10:00
9楼
用VB控制三陵PLC有现成的控件,可以很直接的控制的.我现在就在用,感觉不错.不过是试用版,半小时要重启程序一次.呵呵

cui

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 39回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2002年10月19日
发表于:2006-06-03 21:45:00
10楼
good paper

一次又一次

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 70回
  • 年度积分:0
  • 历史总积分:393
  • 注册:2004年1月05日
发表于:2006-07-07 16:10:00
11楼
 激情如火:就是一个灌水大王而已

热门招聘
相关主题

官方公众号

智造工程师