关于VB与其它设备或PLC通过串行口通信的问题 点击:1256 | 回复:0



杜学强

    
  • 精华:13帖
  • 求助:0帖
  • 帖子:29帖 | 536回
  • 年度积分:0
  • 历史总积分:880
  • 注册:2001年6月09日
发表于:2002-10-02 17:42:00
楼主
关于VB与其它设备或PLC通过串行口通信的问题 有许多朋友来信询问采用VB与其它设备或PLC通过串行口通信的问题,特别是如何自定义通信协议。本文简介如下。 1、RS232只是一个电气接口标准,若进行数据通讯,除具有统一硬件标准(如RS232)外,还必须有统一软件标准,或简称通信协议。 2、RS232的通讯距离为15m,当距离超过时,须采用协议转换模块转化成RS485或422标准,距离可延长到1200m。串行通信有全双工和半双工两种形式,半双工即在任一时刻网络只有单向的数据流。当网络上节点数超过两个时,必须使用半双工方式。 3、VB语言通过控件MSCOMM对串口进行读写。该控件的使用方法及例子见VB帮助。 4、如果仪器是外购产品,必须向厂家索取其通信协议,若该协议为公开标准,你可到有关资料上查询。如果你的仪器是自制产品,则你必须在软件中约定通讯协议,见附例。 5、一般仪器的串行通信采用半双工方式,以便多个设备联在一个网上。你可将这些设备作为从站(各站具有唯一的地址),将你的VB程序作为主站,组成主从式网络。 6、各节点必须对串行口的参数进行约定,如波特率、校验方式等。 例: 某设备对外提供RS232和RS485两个完全光隔的通信接口,可以方便地将变频器连如RS485网络。设备与上位机之间的通信采用的命令和数据都是字符串,它具有特定的通信协议,该协议包括两大类命令,即读数据命令和写数据命令,这两类命令的格式介绍如下。 写命令 当上位机(PLC)想设定网络上某一台变频器的某一个参数时,上位机就发送下列格式的命令(图1): EOT--复位码,STX--命令开始码,ETX--命令结束码,GA--组号,UA--单元号,M1、M2--参数号,P1、P2--参数在组内的序号,D1…DN--参数的值(D1为符号位),BCC--块校验和。 为防止发生意外,写命令的格式要求很严格,设备地址、参数、数据缺一不可。如果该命令能被设备识别,则返回ACK(成功),否则NAK(不成功)。 例1 要将第1组的第2个设备的参数"1.15"写为"1",则传送的信息如图2。 读命令 当上位机(PLC)想读取网络上某一台设备的某一个参数时,上位机就发送下列格式的命令(图3)。 如果该命令能被设备识别,则将返回如下结构的信息(图4)。 上述格式中的符号ENQ为查询码,其余符号含义与写命令相同。 例2 要读取第1组第2个设备"4.02"参数,则传送的信息如下(图5)。 返回信息为(图6) 这里值得一提的是BCC校验和,为保证由设备出入的信息在传输的过程中的准确无误,数据响应以块校验和数BCC字符结尾。BCC实际上是该命令中从STX控制码之后开始的所有字符的ASCII码的异或弛,若运算结果小于32,则加上20H,最终以ASCII码对应的字符加到读写指令中,上位机可以用该值来校验前面收到的数据的准确性。


热门招聘
相关主题

官方公众号

智造工程师