资源描述:
《使用字符接收中断的PLC通信程序设计方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、电工技术杂志2003年第3期应用技术使用字符接收中断的PLC通信程序设计方法廖常初范占华(重庆大学电气工程学院400044)摘要介绍了西门子S7200PLC的自由端口模式的通信参数设置方法,使用字符接受中断的通信程序可以防止接收到的数据字符与结束字符混淆。最后用一个例程介绍了使用字符接收中断的通信程序的设计方法。关键词PLC通信中断方争用通信线,一般采用主从方式,即计算机为主1引言机,PLC为从机,只有主机才有权主动发送请求西门子S7200系列PLC的自由端口模式是报文(或称请求帧),从机收到后返回响应报文。由用户程序控制的串行通信方式,为计
2、算机或其他下面介绍使用PC/PPI电缆,在自由端口模式下编有串行通信接口的设备与PLC之间的通信提供了程时应考虑的一些问题。一种灵活高效的方法。通信完全受用户程序的控(1)电缆切换时间的处理制,可以使用用户自定义的通信规约。本文介绍在如果使用PC/PPI电缆,S7200CPU接收到计自由端口模式下,通过端口0用字符接收中断实现算机的请求报文后,到其发送响应报文的延迟时间必PLC与上位计算机通信的程序设计方法。使用字须大于等于电缆的切换时间。波特率为9600bit/s和19符中断的通信程序可以防止接收到的数据字符与结200bit/s时,电缆的切换时间分别为2ms和1ms。在束字
3、符混淆。下面的程序中,用定时中断实现切换延时。图1中的自由端口模式控制字节SMB30的(2)异或校验pp,d,bbb和mm位分别用来设置端口0的奇偶异或校验是提高通信可靠性的重要措施之一,校验、字符的数据位数、波特率和通信协议,mm即将报文中指定区域的字符作异或运算,并将异或=1时为自由端口模式,mm=0时为PPI模式。的结果(异或校验码)作为报文的一部分发送出发送指令(XMTTBL,PORT)通过指定的去。接收方计算出接收到的相同区域的字符的异或通信端口(PORT),将数据缓冲区(TBL)中的1校验码,并与发送方传送过来的校验码比较,如果~255个字符发送出去。发送结束时产生
4、中断事不同,可以判定通信有误,要求重发。件。发送缓冲区的格式如图2所示,第一个字节是(3)防止结束字符与数据字符混淆要发送的字符数,而它本身并不被发送出去。因为报文的结束字符只有8位,接收到的报文数据区内出现与结束字符相同的数据字符的概率很大,它们可能会与结束字符混淆。可以在发送前对数据作某种处理,例如将数据字符转换为ASCII码后再发送,并使用不会与ASCII码混淆的数据作为结束字符,接收方收到后将数据字符还原为原来的数据格式,这样可以解决上述的问题,但是会增加编程的工作量和数据传送的时间。如果在设计通信程序时使用接收字符中断,可2PLC通信程序设计中应考虑到的问题以对收到
5、的每个字符进行判断和处理,能有效地解计算机与PLC通信时,为了避免通信中的各决数据字符与结束字符混淆的问题。例如发送方在64使用字符接收中断的PLC通信程序设计方法电工技术杂志2003年第3期报文中提供发送的数据字符的字节数,接收方在字ENI//允许中断//接收到的字符放接收缓冲区SBR1符中断程序中对接收到的数据字符计数,以此来判LDSM00断报文的接收是否已经结束。INCBVB100//接收字节数加1INCDVD86//接收缓冲区指针加13通信程序实例MOVBSMB2,*VD86//收到的字符存缓冲区用字符中断方式接收数据,接收缓冲区的格式/
6、/接收起始字符的中断程序INT0如表所示。以起始字符作为接收报文的开始,对数LDBSMB2,16#55//若不是起始字符16#55据字节数和数据区的各字节作异或运算。因为在字CRETI//中断返回符接收中断程序中是根据收到的字符个数来判别接LDSM00//是起始字符收是否结束,所以没有设置结束字符。VD86是接MOVB0,VB100//将接收字节计数器清0收缓冲区的指针,VB90存放CPU模块计算出的MOVD&VB100,VD86//缓冲区首地址送指针VD86异或校验结果,VB99存放计算机发送来的数据区CALLSBR1//起始字符送缓存区的VB101ATCHINT1
7、,8//字符接受中断时执行INT1字节数。因为没有使用接收指令,在初始化子程序中不需要设置SM87~SM94等。通过设置控制字//接收数据字节数的中断程序INT1节SMB30,选择的通信参数为19200bit/s,8位数LDSM00据,无奇偶校验,1个停止位。CALLSBR1//存放报文数据区字节数表接收缓冲区的数据MOVBSMB2,VB99//将字节数存于VB99MOVBVB99,VB90//校验码字节VB90初始化VB100VB101VB102VB103ATCHINT2