论文(基于Modbus的上位机通讯) 下载本文

正确,若正确后即变更元件的数据,并以ACK回应计算机来表示收到。

4 NAK (Not Acknowledge,不了解) ○

当PLC接收到要求写入元件的通信时,PLC会先判定接收的否正确,若不正确,会以NAK回应计算机来表示不了解此次通信;

2)命令

表 通信格式中的命令

命令 字元件读取 字元件写入 位元件置ON 位元件置OFF 命令符号 0 1 7 8 目标设备 X,Y,M,S,T,C,D X,Y,M,S,T,C,D X,Y,M,S,T,C X,Y,M,S,T,C 命令是用来指定操作的类型,例如读、写等,用一个ASCII符号来表示。

3)首地址

422通信协议的通讯地址不像485通信协议的通讯地址那样直观,不用算,就是PLC的元件地址。其地址为4位十六进制数表示。

1位元件强制置位的地址 ○

位元件强制的地址不象字元件D的地址那样,其寻址方式比较麻烦。其地址如图4-11

图4-11

按照上面排列可计算以下地址: 0600~06FF T0-T255 0800~0BFF M0-M1023 0E00~0EFF C0-C255

0F00-0FFF M8000-M8255

20

○2位元件状态查询的地址

位元件的状态查询不是每个元件有一个地址,而是一个元件组(8个)为一个地址。具体地址如下图4-12:

图 4-12

上表用于读取当前状态,写入时,X,Y,M,S,T,C 作为触点使用的地址:如读M8~M23的值即K4M8 地址:0101 数据长度02

21

3字元件D的地址 ○

字元件D的地址比较容易计算,即是PLC内字元件D地址(4位)乘以2后再加上1000H就是422协议通信时的通讯地址。即:Address=Address*2+1000h。须要注意内部地址乘2是十进制的,而后加上的1000H是十六进制的,所以要先将十进制的转换为十六进制后方可做加法运算。例如D200的地址算法。K200*2=K400=190H,故D200的地址为190H+1000H=1190H。

4)字节数

一个字节等于8个位,字节数用两个ASCI码来表示,位元件操作时最小可设为1,字元件操作时最小可设为2,且只能为2的倍数。

5)数据符

数据字符即所需要发送的数据信息,由4个十六进制的数组成。在此须说明一点,在数据帧中,首地址和数据符都是先发送低8位后送高8位,所以通信地址算出来后依然都做处理,同样,接收回来的数据也是先接收低8位后接收高8位,接收到数据后仍然要做处理才可使用,否则,数据将不准确。

6)和校验码

校验码用来校验接收到的信息中的数据是否正确。将报文的第一个控制码与校验和代码之间所有字符的十六进制数形式的ASCII码求和,把和的最低两位十六进制数作为校验和代码,并且以ASCII码放在报文的末尾。这里值得注意的是报文的第一个控制码与校验和代码之间字符包括了一个结束符,在做和时不能把结束符转成ASCII码后再求和,结束符本身就是ASCII码,不须要再转换。

4.3 上位机的VB监控系统的设计

可编程控制器以其高可靠性,配置灵活和完善的功能,在工业控制系统中得到越来越广泛的应用。但对于操作员所需要的报表打印、趋势图形显示、工况查寻、参数在线修改等功能,PLC却不能直接方便地提供。所以通常采用计算机PC与PLC组成一个完整的监控系统。本文以三菱FX2N系列PLC为例,讨论用Visual Basic(VB)实现PLC与上位机的通讯。

4.3.1 VB介绍

VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化

22

的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。

Visual 意为可视的、可见的,指的是开发像Windows操作系统的图形用户界面(Graphic User Interface,GUI)的方法,它与其他编程软件不同的是不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。应该说,这是一次质的飞跃,是一次编程技术的革命。 Basic 实际上是一个短语的缩写,这个短语就是 Beginners' All-Purpose Symbolic Instruction Code ,其中文意思为“初学者通用符号指令代码”。 1、 VB的历史

Visual Basic从1991年诞生以来,现在已经18年了。BASIC是微软的起家产品,微软当然不忘了这位功臣。随着每一次微软技术的浪潮,Visual Basic都会随之获得新生。可以预见,将来无论微软又发明了什么技术或平台,Visual Basic一定会首先以新的姿态登上去的。如果你想紧跟微软,永远在最新的技术上最快速地开发,你就应该选择Visual Basic。

1991年,美国微软公司推出了Visual Basic 1.0(可简称VB),1992年,Microsoft公司又推出了VB 1.0的升级版VB 2.0……目前的最新版本是VB 2010 测试版。 2、VB的特点 1)面向对象

VB采用了面向对象设计思想,它基本思路是把复杂的设计问题分解为多个能够完成独立功能且相对简单的对象集合。所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等,面向对象编程就是指程序员可根据界面设计要求直接在界面上设计出窗口、菜单、按钮等类型对象并为每个对象设置属性。

2)事件驱动

在Windows环境下是以事件驱动方式运行每个对象的都能响应多个区别事件,每个事件都能驱动段代码事件过程,该代码决定了对象功能。通常称这种机制为事件驱动的编程机制。可由用户操作触发也可以由系统或应用触发例如单击

23