毕业设计(论文)基于Modbus的上位机通讯_第1页
毕业设计(论文)基于Modbus的上位机通讯_第2页
毕业设计(论文)基于Modbus的上位机通讯_第3页
毕业设计(论文)基于Modbus的上位机通讯_第4页
毕业设计(论文)基于Modbus的上位机通讯_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 绪论1第二章 基于modbus总线控制的上位机通信的总体框架2第三章 基于modbus总线控制的上位机通信的硬件设计33.1 气动回路图33.2 主控制电路图43.3 plc控制电路图53.4 上位机与plc的连接图63.5 plc与变频器的网络接线6第四章 基于modbus总线控制的上位机通信的软件设计74.1 modbus通信74.1.1 modbus通信协议介绍74.1.2 变频器的modbus rut通信84.1.2.1 modbus通信协议描述84.1.2.2 变频器的modbus rtu通信的实现124.2 三菱fx系列plc编程口通信协议174.2.1 编程口rs-422

2、接口的介绍174.2.2 基于三菱fx plc编程口的通信174.3 上位机的vb监控系统的设计224.3.1 vb介绍224.3.2 制作流254.3.3 监控系统的界面设计264.3.4 监控系统的代码设计29总结35参考文献36致谢3739第一章 绪论plc足专为工业控制而设计的专用计算机,其体积小,具有高可靠性和很强的抗干扰能力,配置灵活和完善的功能,因此在工业控制系统中得到了广泛的使用。随着工业自动化程度的提高,对plc的应用提出了更高的要求:更快的处理速度,更高的可靠性,控制与管理功能一体化,控制与管理一体化也就足将计算机信息处理技术,网络通信技术应用于plc,使用用下位分散控制,

3、用计算机提供图形显示界面,同时对下拉机进行监控。所以通常采用计算机pc与plc组成一个完整的监控系统。随着工业自动化技术的不断发展,在工业控制中,交流电机的拖动越来越多地采用变频器完成,而变频器也不仅仅作为一个单独的执行机构,而是随着其不断的智能化,可以同主机之间通过一定的通信方式结合成一个有机的整体。 虽然变频器广泛用于各行各业,但因其显示面板简单,且在对数据的处理、计算、保存等方面存在弱点,在一定程度上影响了变频器在复杂控制系统中的应用,不过通信技术与变频器相结合可以弥补这些缺点,可以利用plc与变频器之间的通讯功能实现远程控制,采用rs485通信接口,使用modbus协议实现,对交流电机

4、的拖动进行控制,这是一种低成本的联接方案,可以极大地减少线路联接的复杂性,避免现场可能的各种电磁干扰对控制设备的影响。同时增强了变频器对数据处理,故障报警等方面的功能。第二章 基于modbus总线控制的上位机通信的总体框架计算机通过三菱fx系列plc的程序下载线连接至plc,plc上 的485通信板连接到变频器的pu接头,这样,计算机与plc,plc与变频器就得以通信。 plc和变频器通过输出给外部设备进而控制外部设备的运行。如图2-1图2-1第三章 基于modbus总线控制的上位机通信的硬件设计硬件结构包括了气动回路、主控制电路、plc控制电路、上位机与plc的接线图。3.1 气动回路图气动

5、回路:为送料缸,推料缸,龙门机械手提供动力能源。如图3-1所示。图 3-13.2 主控制电路图主电路:为整流变压模块,变频器,异步电动机,plc等提供工作电源。如图3.2所示。图3-23.3 plc控制电路图 即plc的io接线,接收外部信号,并将信息经过cpu处理运算后经由输出口控制电磁换向阀,指示灯,变频器。如图3-3所示。图 3-33.4 上位机与plc的连接图 计算机与plc连接时是用计算机的9针串口,而plc编程是8针圆头的接口,这里就需要做一个转换。其接线图如3-4图:图3-43.5 plc与变频器的网络接线plc与变频器的网络通信,plc端是用485通信板,而变频器端则是pu接口

6、,接线图3.5:图 3-5第四章 基于modbus总线控制的上位机通信的软件设计4.1 modbus通信modbus应用层协议由美国modicon公司(现为施耐德电气旗下品牌)于1979年开发的,用于实现其plc产品与上位机的通信。由于其简单易用,得到了广大工业自动化仪器仪表企业的采纳与支持,实际上已成为了业界标准,我国标准化委员会已将modbus协议作为我国工业自动化的行业标准,分别制定了gb/z19582.1-2004(modbus应用层协议),gb/z19582.2-2004(串行链路上的modbus)和gb/z19582.3-2004(modbus-tcp)三个标准。modbus应用层

7、协议位于osi模型中的第七层,将它嵌入到不同的低层协议中形成了三种具体的通信方式:modbus串行链路、modbus-plus和modbus-tcp,三种通信网络上的设备可以通过网关来达到数据交换的目的。这些年来以太网的繁荣壮大使得将modbus协议嵌入到tcp/ip协议中实现modbus设备间的通信非常必要,鉴于此,1999年施奈德电气发布了modbus-tcp协议,使得以太网上的modbus设备可以通过502端口进行通信。 4.1.1 modbus通信协议介绍modbus是osi模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。modbus协议

8、是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通讯。它己经成为一通用工业标准。modbus协议是一种在工业领域被广为应用的真正开放、标准的网络通讯协议,被大部分scada(supervisor control and data acquisition数据采集与监视控制系统)hmi(human machine interface人机界面)软件支持,所以它实际上己经成为一种通用的工业标准。有了它不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通讯的。它描述了

9、一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在一modbus网络上通讯时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用modbus协议发出。在其它网络上,包含了modbus协议的消息转换为在此网络上使用的帧或包的结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。modbus有两种传输模式,一种是ascii模式,另一种是rtu模式。当控制器设为在modbus网络上以asci工(美国标准信息交换代码)模式通讯,在消息

10、中的每个s字节都作为两个asci工字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。本文以rut模式为例说明。4.1.2 变频器的modbus rut通信这里所使用的变频器是三菱公司的fr-d700系列,4.1.2.1 modbus通信协议描述1、modbus通信协议 modbus协议定义了一个与基础通信层无关的简单协议数据单元(pdu)。特定总线或网络上的modbus协议映射能够在应用数据单元(adu)上引入一些附加域。 图图4-1启动modbus事务处理的客户机创建modbus应用单元。功能码向服务指示将执行哪各操作。 modbus协议建立了客户机启动的请求格式。 用

11、一个字节编码modbus数据单元功能码域。有效的码字范围是十进制1-255(128255为异常响应保留)。当从客户机向服务器设备发送报文时,功能码域通知服务器执行哪种操作。 向一些功能码加入子功能码来定义多项操作。 从客户机向服务器设备发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作。这个域还包括离散项目和寄存器地址、处理项目数量以及域中的实际数据字节数。 在某种请求中,数据域可是不存在的(0长度),在此情况下服务器不需要任何附加信息。功能码仅说明操作。 如果在一个正确接收的modbus adu中,不出现与请求modbus功能有关的差错,那么服务器至客户机的响应数据域包括请

12、求数据。如果出现与请求modbus功能有关的差错,那么域包括一个异常码。服务器应用能够使用这个域确定下一个执行的操作。 例如。客户机能够读一组离散量输出或输入的开/关状态,或者客户机能够读/写一组寄存器的数据内容。 当服务器对客户响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)。对于一个正常响应来说,服务器仅原始功能码响应。图4-2modbus事务处理(无差错)对于异常响应,服务器返回一个与原始功能码等同的码,设置该原始功能码的最高有效位为逻辑1.图4-3 modbus事务处理(异常响应)2、modbus主站/从站协议原理 modbus串行链路协议是一个主从协议。

13、在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。modbus通信总是由主节点发起。子节点在没有收到来主节点的请求时,从不会发送数据,子节点之间从不会互相通信。主节点在同一时刻 只会发起一个modbus事务处理。主节点以两但种模式对子节点发出modbus请求: 在单播模式,主节点以特定地址访问某子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个应答)。 在这个模式,一个modbus事务处理包含2个报文:一个来自主节点的请求,一个来自子节点的应答。每个子节点必须有唯一的地址(1到247),这样才能区别于其它节点被猪瘟独立的寻址。 在广

14、播模式,主节点向所有子节点以送请求。 对于主节点广播的请求没有应答返回,广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址0是专门用于表示广播数据的。本文以单播模式为例。图4-4 单播模式图4-5广播模式3、 crc16校验 在rtu 模式包含一个对全部报文内容执行的,基于循环冗余校验 (crc - cyclical redundancychecking) 算法的错误检验域。crc 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。 crc 包含由两个8 位字节组成的一个16 位值。 crc 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。crc高

15、字节为报文发送的最后一个子节。 附加在报文后面的crc 的值由发送设备计算。接收设备在接收报文时重新计算crc 的值,并将计算结果于实际接收到的crc 值相比较。如果两个值不相等,则为错误。 crc 的计算, 开始对一个16 位寄存器预装全1。然后将报文中的连续的8 位子节对其进行后续的计算。只有字符中的8个数据位参与生成crc 的运算,起始位,停止位和校验位不参与crc计算。 crc 的生成过程中, 每个 8位字符与寄存器中的值异或。然后结果向最低有效位(lsb)方向移动(shift) 1位,而最高有效位(msb)位置充零。然后提取并检查lsb:如果lsb 为1, 则寄存器中的值与一个固定的

16、预置值异或;如果lsb 为 0, 则不进行异或操作。 这个过程将重复直到执行完8 次移位。完成最后一次(第8 次)移位及相关操作后,下一个8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8 次。当所有报文中子节都运算之后得到的寄存器忠的最终值,就是crc。 当 crc 附加在报文之后时,首先附加低字节,然后是高字节。4.1.2.2 变频器的modbus rtu通信的实现1 关于协议l 通信方法 基本的通讯方法是主设备发送query message (查询),然后从设备回复response message (应答)。正常通讯时会原样复制device address和function c

17、ode,异常通讯(功能代码、数据代码错误)时将functioncode的第7位(80 h)设置为on,data bytes设置为错误代码。图4-6信息帧由上表所示的4个信息区域构成。通过在信息数据的前后附加3.5个字符的无数据时间(t1:起始完成),从设备会识别为1个信息。2 信息格式类型l 保持寄存器的数据读取(h03或03) 查询信息(query message) 从设备地址 功能代码起始地址 读取个数 crc 检验(8bit) h03 (8bit) h(8bit) l(8bit) h(8bit) l(8bit) l(8bit) h(8bit)正常应答(response message)从

18、设备地址功能代码 读取个数*2 读取数据 crc 校验(8bit)h03(8bit)(8bit)(8bit)(8bit)(n16bit)(8bit)(8bit)l 保持寄存器的数据写入(h06或06) 查询信息(query message)从设备地址 功能代码寄存器地址写入数据 crc 检验(8bit) h03 (8bit) h(8bit) l(8bit) h(8bit) l(8bit) l(8bit) h(8bit)正常应答(response message)从设备地址 功能代码寄存器地址写入数据 crc 检验(8bit) h03 (8bit) h(8bit) l(8bit) h(8bit)

19、 l(8bit) l(8bit) h(8bit)注:由于广播通讯时即使执行了查询也不会有应答,所以在进行下一个查询时,必须在执行完前一个查询后,等待变频器进行处理所需的时间后再进行。l 地址 h03功能代码 寄存器内 容单位读取/写入40201 输出频率转速 0.01hz1读取40202输出电流 0.01a读取40203 输出电压0.1v读取h06功能代码寄存器内 容单位读取/写入40205 频率设定值转速设定值 0.01hz0.001写入40015运行频率(eeprom值)h00 停止h02 正转h04 反转写入注:请求pdu说明了起始寄存器地址和寄存器数量。从零开始寻址寄存器。因此,寻址寄

20、存器1-16 为0-15。变频器参数设置参数编号名 称设定值设定范围内 容79运行模式选择60外部pu切换模式1固定为pu运行模式2可以在外部、网络模式间切换运行3外部pu组合运行模式14外部pu组合运行模式26网络模式7外部运行模式(pu运行互锁)117pu通讯站号10广播通讯1247变频器站号指定1台控制器连接多台变频器时要设定变频器的站号。118pu通讯速率19248、96、192、348通讯速率设定值100为通讯速率。例)设定为96时通讯速率为9600bps119pu通讯停止位长10停止位数据长度1bit8bit12bit101bit7bit112bit120 pu通讯奇偶校验20无奇

21、偶校验1奇校验2偶校验121pu通讯再试次数9999010发生数据接收错误时的再试次数容许值。连续发生错误次数超过容许值时,变频器将跳闸9999即使发生通讯错误变频器也不会跳闸122u通讯校验时间间隔99990可进行rs-485通讯。但,有操作权的运行模式启动的瞬间将发生通讯错误(e.pue)0.1999.8通讯校验(断线检测)时间的间隔无通讯状态超过容许时间以上时,变频器将跳闸。(根据pr.502 的设定)。9999不进行通讯校验(断线检测)123pu通讯等待时间设定99990150ms设定向变频器发出数据后信息返回的等待时间9999用通讯数据进行设定124pu通讯有无cr/lf选择00无c

22、r、lf1有cr2有cr、lf340通讯启动模式选择00取决于pr.79 的设定1网络运行模式10网络运行模式可通过操作面板切换pu运行模式与网络运行模式343通讯错误计数0-显示modbusrtu通讯时的通讯错误次数(只读)502通讯异常时停止模式选择00发生异常时显示异常输出异常解除时自由运行停止e.pue输出停止(e.pue)1减速停止停止后e.pue停止后输出停止(e.pue)2减速停止停止后e.pue无输出再启动549协议选择10三菱变频器(计算机链接)协议1modbus-rtu协议此时plc的通信格式d8120=h0c97【9】:(1001) 通信速率=19200 pbs,【7】:

23、(0111) 停止位1位;偶校验,数据位8位)3、plc程序编写在plc程序里,顺序控制程序并不难编写,这里最难的是crc16校验码的计算,crc16校验码的计算方法比较麻烦,需要对每个位进行异或然后判断,而且每个字都要如此计算,而不像和校验那样有专门的计算指令。对此,我的编写思路是采用子程序的调用,在需要用到crc16校验代码的时候就调用crc16计算的子程序,对于crc16的plc编程如下:4.2 三菱fx系列plc编程口通信协议4.2.1 编程口rs-422接口的介绍 rs-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。实际上还有一根信号地线,共5根线。由于

24、接收器采用高输入阻抗和发送驱动器比rs232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(master),其余为从设备(salve),从设备之间不能通信,所以rs-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是104k+100(终接电阻)。rs-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(xon/xoff握手)或硬件方式(一对单独的双绞线)。rs-422的最大传输距离为4000英尺(约1219米),最大传输速率为10mb/s。其平衡双绞线的长度与传输速率成反比,

25、在 100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为 1mb/s。 rs-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。4.2.2 基于三菱fx plc编程口的通信 基于rs-422的fx系列的计算机通信用于一台计算机与一台plc的通信,由计算机以出读写plc中的数据命令报文,plc收到后返回响应报文。1、计算机与plc之间的链接数据流 计算机与plc之间的数据流有2种形式:计算机从plc中读数据;计

26、算机向plc写入数据。1)计算机读plc的数据计算机从plc读数据的过程分为两步:l 计算机向plc发送读数据命令。l plc接收到命令后,执行相应的操作,将计算机要读限的数据发送给计算机。2) 计算机向plc写入数据 计算机向plc写数据的过程分为两步:l 计算机首先向plc发送写数据命令。l plc接收到写入数据命令后,执行相应的操作,执行完成后向计算机发送确认信号,表示写入数据操作已完成。2、基于rs-422的三菱fx通信基本格式 1)数据传输的基本格式数据传输基本格式如图读plc数据:控制代码命令首地址字节数终止符和检验-cmdgroup addressbytesetxsum向plc写

27、入数据:控制代码命令首地址字节数数据符终止符和检验-cmdgroup addressbytesdataetxsum2)计算机与plc数据的数据传输格式1 当plc读取plc的数据且通信数据正确时,通信数据的形式如图4-7图 4-72 当计算机读取plc元件数据且通信数据有错误时,其通信数据的形式如图4-8图4-83 当计算机向plc写入的元件数据且通信数据正确时,其通信数据的形式如图4-9:图 4-94 当计算机向plc写入的元件数据且通信数据错误时,其通信数据的形式如图4-10:图4-103 控制协议各组成部分的说明下面将按照从左到右的顺序,逐一介绍数据传输的基本格式中各部分的详细情况。此通

28、信的命令帧和响应帧均由ascii码组成,使用ascii码的优点是控制代码(包括结束字符)不会和需要的传送的数据的ascii码混淆。如果直接传送十六进制数据,可能会将数据误认为是报文结束字符。一个字节的十六进制数对应两个ascii码(即两个字节)。因此ascii码的传送效率较低。1)控制代码即 enq、stx、nak等,这些控制码用于通信的控制且在计算机的屏幕中属于不可见的字符,各个控制码的意义如下所示。 stx (start of text,数据开始传送)当plc接收到要求读取元件的通信时,plc会先判定接收的数据塄是否正确,若正确,即传送计算机所要求的元件数据,并于传送数据的最前端加上stx

29、这个控制码。stx是以十进制的2号ascii码来表示的 etx (end of text,数据传送结束)当stx表示数据开始时,plc也会 以etx来表示数据传送的结束。etx是以3号ascii码的字符来表示的。 ack (acknowledge,了解)当plc接收到的要求写入元件通信时,plc会先判定接收的数据协议是否正确,若正确后即变更元件的数据,并以ack回应计算机来表示收到。 nak (not acknowledge,不了解)当plc接收到要求写入元件的通信时,plc会先判定接收的否正确,若不正确,会以nak回应计算机来表示不了解此次通信;2)命令表 通信格式中的命令命令命令符号目标设

30、备字元件读取0x,y,m,s,t,c,d字元件写入1x,y,m,s,t,c,d位元件置on7x,y,m,s,t,c位元件置off8x,y,m,s,t,c命令是用来指定操作的类型,例如读、写等,用一个ascii符号来表示。3)首地址422通信协议的通讯地址不像485通信协议的通讯地址那样直观,不用算,就是plc的元件地址。其地址为4位十六进制数表示。位元件强制置位的地址 位元件强制的地址不象字元件d的地址那样,其寻址方式比较麻烦。其地址如图4-11图4-11按照上面排列可计算以下地址:060006ff t0-t25508000bff m0-m10230e000eff c0-c2550f00-0f

31、ff m8000-m8255 位元件状态查询的地址位元件的状态查询不是每个元件有一个地址,而是一个元件组(8个)为一个地址。具体地址如下图4-12:图 4-12上表用于读取当前状态,写入时,x,y,m,s,t,c作为触点使用的地址:如读m8m23的值即k4m8地址:0101数据长度02字元件d的地址字元件d的地址比较容易计算,即是plc内字元件d地址(4位)乘以2后再加上1000h就是422协议通信时的通讯地址。即:address=address*2+1000h。须要注意内部地址乘2是十进制的,而后加上的1000h是十六进制的,所以要先将十进制的转换为十六进制后方可做加法运算。例如d200的地

32、址算法。k200*2=k400=190h,故d200的地址为190h+1000h=1190h。 4)字节数一个字节等于8个位,字节数用两个asci码来表示,位元件操作时最小可设为1,字元件操作时最小可设为2,且只能为2的倍数。5)数据符 数据字符即所需要发送的数据信息,由4个十六进制的数组成。在此须说明一点,在数据帧中,首地址和数据符都是先发送低8位后送高8位,所以通信地址算出来后依然都做处理,同样,接收回来的数据也是先接收低8位后接收高8位,接收到数据后仍然要做处理才可使用,否则,数据将不准确。6)和校验码 校验码用来校验接收到的信息中的数据是否正确。将报文的第一个控制码与校验和代码之间所有

33、字符的十六进制数形式的ascii码求和,把和的最低两位十六进制数作为校验和代码,并且以ascii码放在报文的末尾。这里值得注意的是报文的第一个控制码与校验和代码之间字符包括了一个结束符,在做和时不能把结束符转成ascii码后再求和,结束符本身就是ascii码,不须要再转换。4.3 上位机的vb监控系统的设计可编程控制器以其高可靠性,配置灵活和完善的功能,在工业控制系统中得到越来越广泛的应用。但对于操作员所需要的报表打印、趋势图形显示、工况查寻、参数在线修改等功能,plc却不能直接方便地提供。所以通常采用计算机pc与plc组成一个完整的监控系统。本文以三菱fx2n系列plc为例,讨论用visua

34、l basic(vb)实现plc与上位机的通讯。4.3.1 vb介绍vb是visual basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 windows 专业开发工具sdk相媲美。在visual basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用windows内部的广泛应用程序接口(api)函数,动态链接库(dll)、对象的链接与嵌入(ole)、开放式数据连接(odbc)等技术,可以高效、快速地开发windows环境下

35、功能强大、图形界面丰富的应用软件系统。 visual 意为可视的、可见的,指的是开发像windows操作系统的图形用户界面(graphic user interface,gui)的方法,它与其他编程软件不同的是不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。应该说,这是一次质的飞跃,是一次编程技术的革命。 basic 实际上是一个短语的缩写,这个短语就是 beginners all-purpose symbolic instruction code ,其中文意思为“初学者通用符号指令代码”。1、 vb的历史visual basic从1991年诞生

36、以来,现在已经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采用了面向对象设计思想,它基本思路是把复杂的

37、设计问题分解为多个能够完成独立功能且相对简单的对象集合。所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等,面向对象编程就是指程序员可根据界面设计要求直接在界面上设计出窗口、菜单、按钮等类型对象并为每个对象设置属性。 2)事件驱动在windows环境下是以事件驱动方式运行每个对象的都能响应多个区别事件,每个事件都能驱动段代码事件过程,该代码决定了对象功能。通常称这种机制为事件驱动的编程机制。可由用户操作触发也可以由系统或应用触发例如单击个命令按钮就触发了按钮click(单击)事件该事件中代码就会被执行,若用户未进行任何操作(未触发事件)则就处于等待状态整个应用就是由彼此独立事件

38、过程构成。 3)软件software集成式开发vb为编程提供了个集成开发环境在这个环境中编程者可设计界面、编写代码、调试直至把应 用编译成可在windows中运行可执行文件并为它生成安装vb集成开发环境为编程者提供了很大方便 4)结构化设计语言vb具有丰富数据类型是种符合结构化设计思想语言而且简单易学此外作为种设计语言vb还有 许多独到的处 5)强大数据库访问功能vb利用数据control控件可以访问多种数据库vb 6o提供adocontrol控件不但可以用最少代 码实现数据库操作和控制也可以取代datacontrol控件和rdocontrol控件 6)支持对象链接和嵌入技术vb核心是对对象链

39、接和嵌入(ole)技术支持它是访问所有对象种思路方法利用ole技术能够开 发集声音、图像、动画、字处理、web等对象于一体的功能强大的软件 7)网络功能vb 6.0提供了dlttml(dynamicttml)设计工具利用这种技术可以动态创建和编辑web页面使 用户在vb中开发多功能网络应用软件software 8)多个应用向导vb提供了多种向导如应用向导、安装向导、数据对象向导和数据窗体向导通过它们可以快速 地创建区别类型、区别功能应用 9)支持动态交换、动态链接技术通过动态数据交换(dde)编程技术vb开发应用能和其他windows应用的间建立数据通信通过动态 链接库技术在vb中可方便地用c

40、语言或汇编语言编写也可windows应用接口(api)4.3.2 制作流4.3.3 监控系统的界面设计本系统对plc监控设计主界面如图4-13:图4-13主界面为了方便须要,主界面里的菜单栏包括了打开串口、通信测试、i/o监视、通信地址、批量监视及计算。其中打开串口包含5个串口,可根据需要要来选择适合的通信串口,通信测试可测试当前计算机与plc的链接上否成功。其余的部分将在后来详细说明。主界面监控包括了对plc控制系统的信息进行监视、plc控制系统的操作,其中监视包括了对变频器进行当前运行频率、电流和电压的监视,产品信息的黑色金属数量、白色金属数量、白色塑料数量、合格产品数量、不合格产品数量、

41、合格率及当前plc控制系统的运行状态的监视。操作包括plc控制系统的启动、停止、急停各复位,修改变频器当前行动的频率,对字元件d的写入与读取,对读取的数据可显示十进制、十六进制和二进制,方便操作对数据的须要,也可对位元件进行强制操作,也读取位元件当前状态。 图 4-14 i/o 监视i/o的监视,在不到现场的情况下可以得知当前plc输入及输出的情况。图4-15 换算 换算,可进行二进制、十进制、十六进制之间的相互转换,只要转入某一个进制,另二个进制自动计算显示出来,在通信协议中使用到的和校验,在这也能进行计算,输入需要的计算的字符即可,同时,在modbus中使用的crc16的校验码也计算。有了

42、这些计算可节省调试的时间,也方便操作都使用。图4-16批量监视 批量监视,可以对plc内部连续15个字元件d的监视,这样不用利用三菱的编程软件进行监视,在监视的时候二进制是必须显示的,十进制与十六进制可根据需要选择显示。图4-17地址换算通信地址的换算,因为plc的内部地址与通信的地址是不一样,如果有需要的时候就得查阅通信地址的表格,通信vb做一个算法后很快就得到通信地址,只要输入你所需要的plc内部地址即可以得到通信的地址。4.3.4 监控系统的代码设计1、通信参数代码 计算机要与plc通信就得设定通信格式,通信格式是计算机与plc之间数据来往的桥梁。在vb里需要调出mscomm控件才可以进

43、行通信格式设定,调出mscomm控件后建立事件设定通信格式,代码如下:private sub mscomm1_oncomm()mscomm1.settings = 9600,e,7,2end sub2、select case 的叙述 因为地址域和数据区都是4位数的,如果不够4位的则要向高位补0以达到4位的要求,这里就利用的select case -str_len = len(address) select case str_len case 1: address = 000 + address case 2: address = 00 + address case 3: address = 0

44、 + address case 4: address = address end select -3、mid函数在前面说到地址域和数据域是先发(收)低8位再发(收)高8位的,那么如果把高8位和低8的互换过来呢?这里就利用了mid函数了,其格式为mid(string, start, length)string必要参数。字符串表达式,从中返回字符。如果 string 包含 null,将返回 null。start必要参数,为 long。string 中被取出部分的字符位置。如果 start 超过 string 的字符数,mid 返回零长度字符串 ()。length可选参数,为 variant (lo

45、ng),要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到尾端的所有字符。-address=mid(text1.text,3,2)+mid(text1.text1,1,2)-这样就可以把高8位和低8位互换过来了。4、全局变量在显示i/o显示的时候并不是在i/o显示界面做通信代码,i/o显示的数据仍然是在主界面的通信数据中,这样就涉及到两个界面的数据传输问题,这可以新建一个模块进行定义一个全局变量,那么定义的这个变量在每一个窗口中都可以使用,那么窗口间的数据传输问题也就解决了。代码如下:-public input_y20 a

46、s stringpublic input_y0 as stringpublic input_x20 as stringpublic input_x0 as string-5、使用text只能输入数字在进制转换里,因为进制转换的子程序对源操作数有要求,例如十进制的转换为十六进制的,那么源操作数就必须只能是数字,如果源操作数出现非数字就出错,那么可以通过代码来限制text只能输入数字。代码如下:-private sub text1_keypress(keyascii as integer) if keyascii vbkeyback and keyascii 57 and keyascii 13

47、then keyascii = 0 end ifend sub-6、指示灯显示在对i/o进行显示的时候需要用到shape这个控件,根据数据要求,通过代码来改变shape的颜色,在这过程为了节省程序代码而用了fornext的叙述。其中一部分代码如下:private sub timer3_timer() 对y0y16进行显示yj0 = 1 for yi0 = 0 to 15 yh0 = mid(input_y0, yj0, 1) if yh0 = 1 then form7.shape3(15 - yi0).fillcolor = qbcolor(10) else form7.shape3(15 -

48、 yi0).fillcolor = qbcolor(15) end if yj0 = yj0 + 1 next yi0end sub7、子程序在读取plc数据后,plc返回的数据区中是以4位十六进制表示,当需要二进制或者十进制数据时就需要进行进制间的转换1) 十六进制转十进制function hex_doc(hex_text as string) as longhex_doc = (&h + hex_text) * 1end function 2) 十六进制转二进制function hex_bit(hex4_text as string) as stringdim bit_num as byt

49、edim bit_text(15) as string * 1dim mod_doc as longmod_doc = hex_doc(hex4_text)for bit_num = 0 to 15bit_text(15 - bit_num) = iif(mod_doc / 2 (15 - bit_num) 1, 0, 1)mod_doc = mod_doc mod 2 (15 - bit_num)hex_bit = hex_bit + bit_text(15 - bit_num)next bit_numend function3) 二进制转十六进制-function bit16_doc(bi

50、t16_doc_txt as string) as longdim i as byte bit16_doc = 0select case len(bit16_doc_txt) case 1: bit16_doc_txt = 000000000000000 + bit16_doc_txt case 2: bit16_doc_txt = 00000000000000 + bit16_doc_txt case 3: bit16_doc_txt = 0000000000000 + bit16_doc_txt case 4: bit16_doc_txt = 000000000000 + bit16_doc_txt case 5: bit16_doc_txt = 00000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论