[西门子] S7 200自由口通信实例

[复制链接]
查看70 | 回复0 | 2025-4-13 20:22:15 | 显示全部楼层 |阅读模式

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这两个特殊寄存器内。
 
按要求可知:
01---偶校验   
0---  8位  
100---波特率2400 注:010 --9600    
01----自由口  
SMB30进行赋值设置,SMB30=2#01010001 。

3.1.2 接收条件设置
接收的起始条件:空闲线路检测5ms,设置SMW90。
接收的结束条件:信息定时器250ms,即超时,设置SMW92 。
接收的最大字符数:30个  设置SMB94。
3.2初始化程序
串口通信需要上升沿脉冲触发,为了易于理解通过定时器设置了一个闪烁电路,以实现周期脉冲输出,也可以通过中间继电器触发进行周期上升沿输出。
发送和接收完成都需要进行中断设置,这样利于执行发送和接收完成进行下一步的程序而不影响通信。发送完成中断中断号为9;接收完成中断中断号为:23。通过在中断设置中间继电器M值,以进行轮询。
3.3通信数据地址
发送和接收需要防止在寄存器中,在数据块中对数据进行地址设置。
 
//发送: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-Vb229
VB100  20
VB101  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   
26个字节  存于Vb200-Vb229
 
 
//发送: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个字节
VB130  20
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
VB250  30
  
// 发送: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个字节
VB160  20
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#16
VB300  30

3.4发送与接收程序 

3.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的开关,以实现按顺序轮询,进行下一步的接收。






免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则