浅谈自由口通信字符中断 . .
点击数:7227 次 录入时间:03-04 11:45:20 整理:http://www.55dianzi.com PLC入门
常常遇到客户咨询自由口编程中字符中断的相关问题,比如“字符中断是什么?”,“字符中断怎么用?”,“用SMB接收多个字符,如何编程?”,“字符中断和RCV指令之间有什么关系?”。为了帮助您深入了解以上问题,我们就一起就这几个问题进行讨论,以达到抛砖引玉的效果! 常问问题一:字符中断是什么? 通过阅读系统手册,我们知道使用字符中断方式接收数据,接收每个字符时都会产生中断。在执行与接收字符事件相连的中断程序前,接收的字符存入SMB2寄存器中,校验状态存入SM3.0。 SMB2、SM3.0都是只读的。Port0/Port1共用SMB2/SMB3。Port0对应于中断事件8。Port1对应于中断事件25。 常问问题二:字符中断怎么用? 以端口0接收字符为例:
当CPU通过端口0接收到一个字符后,会将该字符存入接收字符缓冲区SMB2,然后进入相连接的中断程序中。 注意,对于这段程序,如果在中断程序中不作任何编程,那么当CPU接收n个字符时,中断程序将被执行n次,SMB2寄存器存储接收到的最后一个字符。如上位机通过串口调试软件给CPU发送3个字符16#AA、16#BB和16#CC,
那么与接收字符事件相连的中断程序将被执行3次,SMB2中只能保存最后一个接收到的字符16#CC。
常问问题三:用SMB接收多个字符,如何编程? 由于SMB2只能存储一个字符(一个字节),如果要想接受多个字符,则应当在CPU接收下一个字符之前,在中断程序中通过指针编程将SMB2中存储的字符移出来,以便下一次接收字符。以一个例程说明:
VD0作为地址指针指向VB100,当端口0接收到第一个字符,将第一个字符存入SMB2,进入接收中断,将SMB2中的字符复制到指针VD0指向的地址字节VB100中,指针地址加1,VD0指向下一个字节VB101。当接收第二个字符,将字符存入SMB2,进入接收中断,将SMB2中的第二个字符复制到指针VD0指向的地址字节VB101中,指针地址加1,VD0指向下一个字节VB102。当接收第三个字符时以此类推。 另外,如果需要接收n个字符就结束接收,或者需要接收n个字符后循环接收,可以在中断程序中设置一个标志位,下面我们试举例说明:[1] [2] 下一页
本文关键字:通信 PLC入门,plc技术 - PLC入门