1. 自由口通信概述S7-200PLC的通讯口支持RS485接口标准。采用正负两根信号线作为传输线路。 工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。用PLC连续的发送两个字符(16#55和16#EE),通过示波器测量CPU通讯端口管脚3/8之间的电压,波形如下图.大家可以看我公众号文章《STC15单片机利用IO口模拟串口原理进行通信》里有关详细介绍串口通信原理。 2.通信要求初始要求: 通信速率:2400bps;每个字符8位;偶校验;通过端口1进行自由口通信。 通信协议: 发送:FE FE FE FE 68 00 00 00 00 01 23 68 11 04 33 32 34 35 D7 16 20个字节 返回:FE FE FE FE 68 00 00 00 00 01 23 68 91 0A 33 32 34 35 99 56 33 33 33 33 18 16 26个字节
发送:FE FE FE FE 68 00 00 00 00 01 23 68 11 04 33 32 35 35 D8 16 20个字节 返回:FE FE FE FE 68 00 00 00 00 01 23 68 91 0D 33 32 35 35 33 33 33 33 33 33 33 33 33 2C 16 29个字节 发送:FE FE FE FE 68 00 00 00 00 01 23 68 11 04 33 33 B4 36 59 16 20个字节 返回:FE FE FE FE 68 00 00 00 00 01 23 68 91 06 33 33 B4 36 6C 35 7C 16 22个字节
3.程序设置 3.1初始化3.1.1首先PLC 200需要按这个要求进行初始化,这些初始化的设置在SMB30或SMB130这两个特殊寄存器内。100---波特率2400 注:010 --9600 则SMB30进行赋值设置,SMB30=2#01010001 。接收的起始条件:空闲线路检测5ms,设置SMW90。接收的结束条件:信息定时器250ms,即超时,设置SMW92 。串口通信需要上升沿脉冲触发,为了易于理解通过定时器设置了一个闪烁电路,以实现周期脉冲输出,也可以通过中间继电器触发进行周期上升沿输出。 发送和接收完成都需要进行中断设置,这样利于执行发送和接收完成进行下一步的程序而不影响通信。发送完成中断中断号为9;接收完成中断中断号为:23。通过在中断设置中间继电器M值,以进行轮询。发送和接收需要防止在寄存器中,在数据块中对数据进行地址设置。 //发送:FE FE FE FE 68 00 00 00 00 01 23 68 11 04 33 32 34 35 D7 16 20个字节//返回值:FE FE FE FE 68 00 00 00 00 01 23 68 91 0A 33 32 34 35 99 56 33 33 33 33 18 16 26个字节 存于Vb200-Vb229VB101 16#FE, 16#FE, 16#FE, 16#FE, 16#68, 16#0, 16#0, 16#0, 16#0, 16#1, 16#23, 16#68, 16#11, 16#04, 16#33, 16#32, 16#34, 16#35, 16#D7, 16#16//FE FE FE FE 68 00 00 00 00 01 23 68 11 04 33 32 34 35 D7 16 //返回值:FE FE FE FE 68 00 00 00 00 01 23 68 91 0A 33 32 34 35 99 56 33 33 33 33 18 16 //发送:FE FE FE FE 68 00 00 00 00 01 23 68 11 04 33 32 35 35 D8 16 20个字节//返回值:FE FE FE FE 68 00 00 00 00 01 23 68 91 0D 33 32 35 35 33 33 33 33 33 33 33 33 33 2C 16 29个字节VB131 16#FE, 16#FE, 16#FE, 16#FE, 16#68, 16#0, 16#0, 16#0, 16#0, 16#1, 16#23, 16#68, 16#11, 16#04, 16#33, 16#32, 16#35, 16#35, 16#D8, 16#16// 发送:FE FE FE FE 68 00 00 00 00 01 23 68 11 04 33 33 B4 36 59 16 20个字节// 返回:FE FE FE FE 68 00 00 00 00 01 23 68 91 06 33 33 B4 36 6C 35 7C 16 22个字节VB161 16#FE, 16#FE, 16#FE, 16#FE, 16#68, 16#0, 16#0, 16#0, 16#0, 16#1, 16#23, 16#68, 16#11, 16#04, 16#33, 16#32, 16#35, 16#35, 16#D8, 16#163.4.1发送数据:发送指令XMT能够发送一个字节或多个字节的缓冲区,最多为255个。使用边沿触发。发送缓冲区格式:第一个字节为字符个数,其后为发送的信息字符。如发送VB100,即发送FE FE FE FE 68 00 00 00 00 01 23 68 11 04 33 32 34 35 D7 16这20个字节(VB101-VB120)。3.4.2接收数据接收指令RCV能够接收一个字节或多个字节的缓冲区,最多为255个。使用边沿触发或第一个扫描周期触发。接收缓冲区格式:第一个字节表示接收的字符个数,其后为接收的信息字符。接收VB200,即接收FE FE FE FE 68 00 00 00 00 01 23 68 91 0A 33 32 34 35 99 56 33 33 33 33 18 16这26个字节,存于Vb200-Vb229
3.4发送中断程序:通过设置中间继电器M的开关,以实现执行接收功能。
3.5接收中断程序:通过设置中间继电器M的开关,以实现按顺序轮询,进行下一步的接收。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |