登录
首页 串口通信 串口通信
回帖 发帖
正文

主题:半双工串口通信实例02:三菱FX3U和西门子S7-200串口通信

点击:1116 回复:7

半双工串口通信实例02:三菱FX3U和西门子S7-200串口通信
一、串口通信实例目的:
三菱FX3U主站数字量输入X0~X7控制西门子S7-200从站数字量输出Q0.0~Q0.7;
西门子S7-200从站数字量输入I0.0~I0.7控制三菱FX3U主站数字量输出Y0~Y7。
二、通信硬件连接:
1、三菱FX3U主站FX3U-485-BD端子含义:
SDA和RDA短接后即为RS485发送\接收+信号
SDB和RDB短接后即为RS485发送\接收-信号
SG即为信号地
2、西门子S7-200从站Port0通信口端口含义:
3脚即为RS485发送\接收+信号
8脚即为RS485发送\接收-信号
SG即为信号地
3、通信硬件连接:
三菱FX3U主站FX3U-485BD之SDA和RDA短接后 接 西门子S7-200从站Port0通信口3脚;
三菱FX3U主站FX3U-485BD之SDB和RDB短接后 接 西门子S7-200从站Port0通信口8脚;
三、三菱FX3U主站通信程序:
1、通信参数:数据位8位、无校验、1位停止位、波特率9600bps、8位数据模式、起始符0x02、结束符0x03;
2、三菱FX3U主站8路输入X0~X7转换为ASCII码保存至D1、D2寄存器里;
3、三菱FX3U主站程序RS指令发送缓冲区首地址D1、发送字节计数为2、接收缓冲区首地址D11、接收字节计数为2;
4、初始化延时1000ms后触发开始发送标志位,开始发送;
5、接收完成标志位置位后,将接收到的数据保持至D41、D42寄存器里,转换为16进制数据送入三菱FX3U主站数字量输出Y0~Y7。
附件 三菱FX3U主站.jpg
四、西门子S7-200从站通信程序:
(一)、主程序:
1、发送缓冲区首地址为VB0、发送字节计数为4;
2、通信参数:数据位8位、无校验、1位停止位、波特率9600bps、起始符0x02、结束符0x03;
3、接收字节计数为4;
4、启动端口0接收完成中断;
5、启动端口0发送完成中断;
6、发送时的起始符和结束符保存至VB1和VB4中;
7、将8路数字量输入I0.0~I0.7转换为ASCII码保持至VB2和VB3里;
8、将接收到的2个ASCII码转换为16进制数据送入到Q0.0~Q0.7里;
9、初始化启动串口通信接收。
(二)、接收完成中断:
1、接收完成转存数据,将接收到的数据保持至VB41、VB42里;
2、启动定时器中断
(三)、定时器中断:
1、开启发送
(四)、发送完成中断:
1、发送完成后启动新的接收
附件 西门子S7-200从站.jpg
五、通信程序高清截图提供下载:
附件:通信程序高清截图.rar
[本地下载]
20-02-05 13:30
六、通信测试:
硬件接线完成后,分别将三菱FX3U主站通信程序、西门子S7-200从站通信程序下载到PLC中,断电再次上电,此时即可实现:
三菱FX3U主站数字量输入X0~X7控制西门子S7-200从站数字量输出Q0.0~Q0.7;
西门子S7-200从站数字量输入I0.0~I0.7控制三菱FX3U主站数字量输出Y0~Y7。
20-02-05 13:30
主站程序附加说明:
主站程序在三菱FX3U实物测试通过,稍加修改即可应用到三菱FX3G、FX3S、FX2N、FX1N等实物上。
从站程序附加说明:
从站程序在西门子S7-200实物测试通过,稍加修改即可应用到西门子200 Smart实物上。
20-02-05 13:47
怎么没有用crc呢
20-02-05 15:27

引用 527383814 在 2020/2/5 15:27:15 发言【内容省略】

这是简单的一个自定义协议串口通信例子。
20-02-05 15:35
按照这两个程序写好后,写入plc,无法通信,请大神帮助一下
20-11-09 00:45

引用 925425993 在 2020/11/9 0:45:51 发言【内容省略】

程序我验证过的,请你再仔细检查。
20-11-09 11:07
附件 mmexport1604892765212.jpg
大师,你好,我这几天反复的对比过程序了,我确定是按照你的图片一模一样输进去的,我的西门子cpu是224xp REL 02.01,三菱的是FX-3u,西门子的程序是一个主程序,3个中断程序,三菱的第一步少了我给加了个m8000-m8161,不加第一步也不通信不了,如果把第56步改为m8011-SET M8122,运行后,485-bd,sd指示灯会常亮,可以用3ux1-7控制西门子q0.0-0.7,这是我以上总结,请指点,谢谢!
20-11-09 11:42

工控新闻

更多新闻资讯