单片机扩展RS485通信模块和西门子PLC实现ModbusRTU通信 点击:172 | 回复:0



关育谋

    
  • [版主]
  • 精华:5帖
  • 求助:22帖
  • 帖子:738帖 | 5640回
  • 年度积分:68
  • 历史总积分:84034
  • 注册:2004年5月28日
发表于:2020-01-03 19:35:43
楼主

单片机扩展RS485通信模块和西门子PLC实现Modbus RTU通信


一、单片机和西门子200 Smart系列PLC Modbus RTU串口通信实现功能:

1、单片机读取西门子200 Smart 4路数字量输入I0.0~I0.3控制自己4路晶体管输出DO01~DO04,使用Modbus之02功能码实现;

2、单片机使用自己4路数字量输入DI01~DI04控制西门子200 Smart 4路数字量输出Q0.0~Q0.3,使用Modbus之15功能码实现。

二、单片机串口1(扩展RS485通信模块)通信参数:

1、起始位:固定1位

2、数据位:8位

3、校验方式:偶校验1位

4、停止位:1位

5、波特率:115200bps

6、物理层:RS485

7、通信协议:Modbus RTU Master

三、西门子200 Smart自带RS485通信口通信参数:

1、起始位:固定1位

2、数据位:8位

3、校验方式:偶校验1位

4、停止位:1位

5、波特率:115200bps

6、物理层:RS485

7、通信协议:Modbus RTU Slave

8、从站站号:1

四、通信硬件连接:

1、单片机串口1(扩展RS485通信模块)端口定义:

A:RS485发送\接收+

B:RS485发送\接收-

2、西门子200 Smart自带RS485通信口端口定义:

DB9母头之3脚:RS485发送\接收+

DB9母头之8脚:RS485发送\接收-

3、通信硬件连接:

单片机串口1(扩展RS485通信模块)之A 接 西门子200 Smart自带RS485通信口3脚;

单片机串口1(扩展RS485通信模块)之B 接 西门子200 Smart自带RS485通信口8脚。

五、西门子200 Smart各元件编号与Modbus地址对应表


六、西门子200 Smart之Modbus RTU Slave程序详解:

1、MBUS_INIT指令:

Mode,通信协议模式,这里为1,表明为Modbus RTU协议;

Addr,从站地址,这里为1;

Baud,波特率,这里为115200bps;

Parity,校验方式,这里为2,表明为偶校验;

Port,端口选择,这里为0,表明使用200 Smart本体自带RS485通信口;

Delay,通信延迟,这里设置为0ms;

MaxIQ,用于设置可访问I、Q区点数;

MaxAI,用于设置可读取模拟量输入通道数;

MaxHold,用于设置可读写保持寄存器个数;

HoldStart,设置保持寄存器起始地址;

Done,MBUS_INIT初始化完成标志位;

Error,MBUS_INIT指令执行结果。


2、MBUS_SLAVE指令:

Done,MBUS_SLAVE初始化完成标志位;

Error,MBUS_SLAVE指令执行结果。


3、Modbus库存储区分配:


七、单片机Modbus RTU主站程序详解:

1、头文件:


2、简化定义:


3、单片机串口1用宏定义:


4、公用函数定义:


5、串口1用函数定义:


6、串口1用部分变量定义:


7、主函数:


8、定时器0中断初始化子函数:


9、串口1中断初始化子函数:


10、定时器0中断函数:


11、串口1中断函数:


12、串口1发送字符串子函数:


八、西门子200 Smart Modbus RTU Slave程序测试

使用Modbus Poll调试助手进行测试,测试截图如下所示:


九、单片机Modbus RTU Master程序测试

使用Modbus Slave调试助手进行测试,测试截图如下所示:


十、西门子200 Smart Modbus RTU从站程序提供下载:
十一、单片机扩展RS485通信模块应用测试视频

正在下载,请等待……
下载附件需0积分!



楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师