串口通信实例009 西门子S7PLC通过Modbus协议与上位机通信 (串口通信ri)

1. 通信连接

  • 西门子S7-200Port0口3脚接欧姆龙CP1W-CIF11之SDB+。
  • 西门子S7-200Port0口8脚接欧姆龙CP1W-CIF11之SDA-。

2. 西门子S7-200发送通信程序

/
  串口通信程序段,用于实现西门子S7-200与欧姆龙CP1H之间的串口通信。
  发送方:西门子S7-200
  接收方:欧姆龙CP1H
  串口参数:9600bps、8位数据位、无校验位、1位停止位
  报头:0x0002
  报尾:0x0003
 /

/
  通信初始化:
  9600bps、8位数据位、无校验位、1位停止位
  起始符为STX、结束符为ETX
 /
SWSET PORT 0, '9600,8,N,1,STX,ETX'

/
  数字量输入处理:
  将西门子S7-200的8路数字量输入I0.0~I0.7共计1个字节转换为ASCII码送入发送缓冲区
 /
L I0.0
A I0.1
A I0.2
A I0.3
A I0.4
A I0.5
A I0.6
A I0.7
ASC 32
STW 0

/
  初始化延时:
  延时1秒,等待串口初始化完成
 /
T1
END_T

/
  定时发送:
  每秒发送一次数据
 /
T1
FE
END_T

/
  定时中断子程序:
  读取发送缓冲区的数据并发送出去
 /
U T1
LR 0
TXE 0
END_U
  

3. 欧姆龙CP1H接收通信程序

/
  串口通信程序段,用于实现西门子S7-200与欧姆龙CP1H之间的串口通信。
  发送方:西门子S7-200
  接收方:欧姆龙CP1H
  串口参数:9600bps、8位数据位、无校验位、1位停止位
  报头:0x0002
  报尾:0x0003
 /

/
  通信参数设置程序段:
  波特率9600bps、8位数据位、无校验位、1位停止位、报头为0x0002、报尾为0x0003
 /
SET CIF11, 20, 1, 0, 0, 0
SET CIF11_BAUD, 0
CIF11_BAUD.10 = 0
CIF11_BAUD.09 = 0
CIF11_BAUD.08 = 0
CIF11_BAUD.07 = 0
CIF11_BAUD.06 = 0
CIF11_BAUD.05 = 0
CIF11_BAUD.04 = 0
CIF11_BAUD.03 = 0
CIF11_BAUD.02 = 1
CIF11_BAUD.01 = 0
CIF11_BAUD.00 = 0
SET CIF11_SCFG, 8, 0, 0, 1
SET CIF11_COIL, 4
CIF11_COIL.01 = 1
CIF11_COIL.00 = 1
SET CIF11, 21, 2, 0, 0, 0x0002
SET CIF11, 22, 2, 0, 0, 0x0003

/
  RXD接收指令程序段:
  接收缓冲区首地址为D11,接收字节个数为2
 /
RXD6 11, 2

/
  接收数据处理:
  将接收保存在D11中的两个ASCII码送入D41,将D41中的两个ASCII码转换为16进制数据送入D51,最终送入数字量输出100.00~100.07里
 /
MOV D11, D41
BCHG D40, 4
MOV D41, D51
BCHG D50, 4
OUT Y100_00, D51
  

4. 通信图片

5. 下载通信程序

下载通信程序

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论