一、自由口通信基本概念
1、自由口通信概述
UN-120L/200CPU的通讯口支持RS485接口标准。采用正负两根信号线作为传输线路。
工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。
数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。
传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。
字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。
字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。字符传输时间取决于波特率。
数据发送可以是连续的也可以是断续的。所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。
示例:用PLC连续的发送两个字符(16#55和16#EE)(程序如图3和图4),通过示波器测量CPU通讯端口管脚3/8之间的电压,波形如下图:
应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。用户程序通过特殊存储器SMB30(对端口0)、SMB130(对端口1)控制通信口的工作模式, CPU通信口工作在自由口模式时,通信口就不支持其他通信协议(比如PPI),此通信口不能再与编程软件Micro/WIN通信。CPU停止时,自由口不能工作,Micro/WIN就可以与CPU通信。
3、发送和接收指令
XMT(发送)指令的使用比较简单。RCV(接收)指令所需要的控制稍多一些。
RCV指令的基本工作过程为:
1.在逻辑条件满足时,启动(一次)RCV指令,进入接收等待状态
2.监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态
3.如果满足了设置的消息结束条件,则结束消息,然后退出接收状态
所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行XMT指令,就不会发送任何消息。
所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。
4、字符接收中断
UN-120L/200CPU提供了通信口字符接收中断功能,通信口接收到字符时会产生一个中断,接收到的字符暂存在特殊存储器SMB2中。通信口Port0和Port1共用SMB2,但两个口的字符接收中断号不同。
每接收到一个字符,就会产生一次中断。对于连续发送消息,需要在中断服务程序中将单个的字符排列到用户规定的消息保存区域中。实现这个功能可能使用间接寻址比较好。
二、自由口通信使用指南
1、 通讯口初始化
SMB30(对于端口0)和SMB130(对于端口1)被用于选择波特率和校验类型。SMB30和SMB130可读可写。见如下图:
表1.特殊存储器字节SMB30/SMB130
示例:定义端口0为自由口模式,9600波特率,8位数据位,无校验,程序如下图:
2、发送数据:
1、发送指令XMT能够发送一个字节或多个字节的缓冲区,最多为255个。使用边沿触发。
发送缓冲区格式:第一个字节为字符个数,其后为发送的信息字符。
示例:如果PLC连续发送2个字符16#55和16#EE,程序如下图:
2、判断发送完成的方法
方法一:发送完成中断。通过连接中断服务程序到发送结束事件上,在发送完缓冲区中的最后一个字符时,则会产生一个中断。对通讯口0为中断事件9,对通讯口1为中断事件26。连接中断程序到中断事件示例如下图:
3、接收数据
接收指令RCV能够接收一个字节或多个字节的缓冲区,最多为255个。使用边沿触发或第一个扫描周期触发。
接收缓冲区格式:第一个字节表示接收的字符个数,其后为接收的信息字符。
RCV使能会将TBL缓冲区中的字符个数清零。要先定义接收开始条件和接收结束条件:
接收信息控制字如下图:
示例:如果通过串口软件发送4个字符依次为16#02 、16#55、16#EE、16#0A给PLC,接收条件:起始字符检测,接收结束条件:结束字符检测,PLC的接收程序及监控信息表如下图:
监控接收信息状态表:
查看接收信息完成程序
连接中断程序:
中断子程序:
接收信息程序:
注:1、本例程为只接收一次,如需一直接收信息,用SM0.0一直扫描接收指令。
2、控制字SMB94必须写入个数值,否则无法接收到信息。