1 引言
WWcW_PLCJS_COM-PLC-技.术_网
随着计算机技术特别是单片机技术的发展,通信在诸多领域得到了广泛的应用,技术人员可以通过计算机的串口来获取设备的各种数据,然后利用计算机强大的运算和分析处理功能进行处理,再根据处理的结果发送数据来控制设备。通常通信的型式可以分为两种,即并行通信(Parallel Communication)和串行通信(Serial Communication)。就通信速度来看,并行通信一次的传输量为8个位(1个字节),而串行通信一次只传输1个位(也就是一个标准电位状态),很明显,并行通信的传输速度要快得多。但就传输的安全性来说,由于并行通信在传输过程中更容易产生电压衰减和信号间相互串音干扰等问题而使得传输的数据发生错误,相对而言,串行通信一次只传输处理的数据电压只有一个标准电位,因此不容易把数据丢失。WWW_PLC※JS_COM-PmLC-技.术_网
不论是采用哪种通信方式,在数据的传输过程中,数据都有可能受到干扰而使得原来的数据信号发生扭曲,此时的接收到的数据当然是错误的,为了检测数据在发送过程中发生的错误,发送与接受必须对数据进行进一步的确认工作。最简单的方式就是使用校验码(CheckSum),其次是使用CRC(Cyclic Redundancy check Code,循环冗余校验码)。——可——编——程——控-制-器-技——术——门——户
2 串行通信WWW_PLCJS@_COM%-PLC-技.术_网
2.1 通信步骤
WWW_PLC※JS_COM-PmLC-技.术_网
通常情况下,串行通信过程就是交换字符串的数据过程,而数据的交换必须有一定的格式。通信的双方才能根据一定的数据格式针对所传输的数据进行解析,以工业上最常用的PLC为例,计算机与PLC进行通信时,任何厂牌的机器均会定义通信协议,所谓的通信协议就是服务器端与客户端的通信语言及定义。每一次计算机与设备的数据交换都会有3个步骤,WWW.PLCJS.COM——可编程控制器技术门户
(1) 设备要求发送数据时,计算机会发送一组字符串过去WWcW_PLCJS_COM-PLC-技.术_网
通常该字符串的第一个字符就是前导码,设备根据前导码辨认是否应该读取该字符串、该字符属于哪一个命令集,以及用什么格式去解读该字符串等。前导码不会是一般的字符,通常是一些不可见字符(位于ASCII码的前30个)或很少被使用的符号字符,这是因为避免数据字符与前导码一样而发生错误判断。在前导码之后是后站号,通常是以两个字符代表,单纯以RS-232连接的单一设备也许不需要站号的设置,不过如果以RS-485进行网络连接,就需要用站号来辨别命令是属于哪一个设备。站号之后就是要设备解读的命令或数据。WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
(2) 当设备收到要求字符串,并经过判断确定后,便会送出计算机所要求的数据WW.W_PLC※JS_C,OM-PL,C-技.术_网
同样,数据被送出时会在数据之前加上前导码与站号,计算机也以此前导码与站号判别数据来自何处。WW.W_PLC※JS_C,OM-PL,C-技.术_网
(3) 握手P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
计算机端接收到设备发送回来的字符串即进行解读检查的操作,当检查完成后,便再送一个确定的字符串给设备,用以说明计算机端已成功收到字符串;而发送失败,计算机也在该回送的字符串中要求设备重新发送数据。WWW_P※LCJS_CO※M-PLC-技-.术_网
以上3个步骤就是计算机与设备数据的发送交换的一般情况,对于不同的设备可能会有不同的数据发送流程,应视具体情况而定。另外,在数据发送时,一般都会加上错误检查机制,最常用的方法是将字符进行计算,而在字符串的最后加上CheckSum字符。发送的双方利用CheckSum字符的检查而判断出字符串的正确性。WWW_PLC※JS_COM-PmLC-技.术_网
WWW_PLCJS_COM-PLC-技.术_网
2.2 串行通信方法
P.L.C.技.术.网——可编程控制器技术门户
就工业上最常用的串行通信来说,我们在用VB开发串行通信程序中通常用到两种方法:WW.W_PLCJS_COM-PLC-技.术_网
(1) 一是利用Windows的通信API函数;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
(2) 另一种是采用VB标准控件MSComm来实现。WW.W_PLCJS_COM-PLC-技.术_网
本文采用第二种方法,其实,MSComm控件的通信功能实现,实际上也是调用了API函数,而API函数是由Comm.drv解释并传给设备驱动程序的,对于VB程序开发者只需知道MSComm控件的属性和事件的用法就可以实现操作。在该控件的Setting属性设置中,如:MSComm.Setting=9600,N,8,1就表示所使用的通信端口是以每秒9600为的速率进行传输,不进行奇偶校验位的检查,每个数据单元是8个位,而停止位是1个位。P.L.C.技.术.网——可编程控制器技术门户