1
PLC编程实用指南
1.11.5 7.5  PLC通信程序可靠性
7.5 PLC通信程序可靠性

关键词:通信可靠、数据校验、重复通信、FCS、校验和、通信安全

随着通信技术的进步,PLC与PLC,PLC与计算机,PLC与可编程终端及PLC与智能装置可靠通信是有硬件保证的。但由于通信分布广,易受到各种干扰。通信错误或出错也是难免的。故通信程序也应能检测到错误或错误,以确保通信可靠。

通过网络读写PLC数据与状态,还必须有权限要求,以确保PLC工作及数据安全。

1.通信可靠

为保证通信可靠,可用数据校验或重复通信。

(1)数据校验。为确保传送的数据传送准确无误,常在传送过程中进行相应的校验,以便及时发现问题,避免不正确数据被误用。常用的校验有位校验与帧校验。

检测可分为横向与纵向两种:横向,对一个字符的ASCII代码做检测,也就是奇偶校验;纵向,对一串字符做检测,也就是冗余检测。

1)奇偶校验。通信时所用的数据位为8位,可编成255(2的8次方减1)个码。而实际上ASCII码没有这么多,仅127(2的7次方减1)个就够了。故常用它加最高位调整这8位中为1的个数。如保持为1的个数为偶数,则为偶校验。反之,为奇校验。

例如,ASCII码大写英文字母A为

0100,0001

十六进制为41H,十进制为65。

若偶校验,最高位可不变,因为这8位中仅次高位及最低位为1,正好是偶数。

若奇校验,则最高位应改为1,以保持8位中,有3位(即奇数位)为1。改为A的编码为1100,0001(奇校验时,A的编码)。

有了这个校验约定,于发送方加入这个校验码,于接收方检查这个校验码。检查时发现有误,则可要求重发,或做出错提示。

有了这校验,可提高数据使用的可靠性。PLC网多有此校验。

2)冗余校验。奇偶校验也是冗余的。从信息确定性的角度看,校验位是多余的,只是为校验而加入。加入一个位,故称位冗余。而这里介绍的冗余为字符冗余。即在发送一帧字符的最后多发两个字符,以作为校验。这多发的两个字符,即为冗余校验码。

冗余校验也是由发送方加入,而接收方予以校验。若接收方校验的结果与发送方加入的相同,说明通信无误。否则接收方将要求重发,或做通信出错提示。

冗余校验字符编码的方法很多。欧姆龙公司的PLC网用的为FCS校验。即纵向异或校验。其原理为对一帧字符信号的ASCII码,依位顺序求异或,所得的结果再换成ASCII码。如有下面一帧信息:

@10(单元号)RH(命令)00310001(报文)58(FCS)∗CR(结束符)

它是在上位链接网中,计算机读PLC保持继电器的命令。FCS为58是这么计算出来的:@(01000000,ASCII码)

XOR(异或)

1(00110001,ASCII码)

XOR(异或)

0(00110000,ASCII码)

XOR(异或)

R(01010010,ASCII码)

………

0(00110000,ASCII码)

XOR(异或)

1(00110001,ASCII码)

01011000(异或结果)

FCS:00110101(5)00111000(8)(转换成ASCII码)

从上例可知,FCS校验实质是“纵”向的偶校验。在FCS码之后的∗及CR,为结束字符,是帧的结束标志,不参加校验计算。

3)和校验。三菱PLC用的多为次校验。它是对有效数据的每个位的ASCII码进行累加,然后再用256整除,保留最低余数,并把余数转为十六进制。如此余数不足两位的十六进制数时,高位补0,以保持校验码始为两位数。当然,还得把这个结果再换成ASCII码。

应该指出,这里加入校验码的目的仅是为了发现通信中的错误,以免误把错误的数据当做正确的数据使用,以致造成不良后果。只是这里加入的校验也不一定能完全查出错误。如奇偶校验,有两位错了,就校验不出来。再如冗余校验,如两处出错的结果相互抵销,也查不出错。

(2)重复通信。重复通信相当于人们谈话多问多听几次。听清了再做处理。PLC通信也类似,一般为两次过程---写数据、要得到“写成功”的应答;读数据、看得到的数据是否正确,及校验码对否。

如欧姆龙公司的Host Link网,计算机与PLC通信时,PLC总有应答信号送计算机。如应答码为“00”,说明PLC已正确执行了计算机的命令,否则为出错。

三菱公司PLC三次过程---发读命令给对方、从对方取得数据、再向对方已取得数据的应答。

为了确保通信正确,有时使用更为可靠的办法。这些办法是:

多次通信传送同一数据,接收方用“表决”的方式确定所收到的数据。如发送方对某数据发送三次,接收方收到的为01011001,01011001及01001001,由于01011001收到两次,故确认收到的字符为01011001。这当然也是冗余,是帧发送冗余。

再有,也可是接收方收到数据后,再把相同的数据回传给发送方,发送方再作检查。这也叫回声检测(Echo Checking)。发的与回传的相同,则通信无误。如不同,说明有误,进而再做相应处理。

2.通信安全

通信安全主要指在通信中,数据的读写及节点间互操作,要有权限设定。不同的人有不同的操作权限。如上位计算机对PLC的操作,有的人权限最高,可读写PLC数据,可操作PLC。而有的人只能读写。有的只能读,不能写。有的什么操作都不允许。

有了权限设定,通信安全将有保证。