[西门子] 西门子S7-200smart与三菱FX2N自由口通信

[复制链接]
查看75090 | 回复0 | 2024-1-29 10:06:31 | 显示全部楼层 |阅读模式


一、定义SIMATICS7-200 SMART通信格式

1、打开STEP 7-MicroWINSMART编程软件

2、给SMB30赋值16#09,即定义通信协议为自由口模式,无校验、波特率9600bit/s、8个数据位。

3、定义接收条件SMB87=16#E0:即允许接收、使用起始符、使用结束符。

4、设定起始符SMB88=16#AB,设定结束符SMB89=16#BA。

5、设定接收最大字符数SMB94=10

6、定义接收数据区从VB100开始,发送数据区从VB0开始

7、使用中断子程序来循环接收与发送。

8、主程序如下:











9、中断子程序INT0,延时50ms进入中断子程序INT2



10、中断子程序INT2:执行发送指令发送数据



11、中断子程序INT1:发送完成进行等待接收同时分离延时中断事件号。



注意:在使用中断子程序执行接收与发送指令时,由于中断的反应速度太快,所以在接收完成后延时一段时间(50ms或100ms)再执行发送指令。

二、定义三菱FX2N的通信格式

1、打开GX Works2编程软件。

2、定义通信格式D8120=H0F81,即8个数据位、无校验、1个停止位、波特率9600bit/s、有起始符、有结束符、无顺序RS-485接口。

3、设定起始符D8124=16#AB,结束符D8125=16#BA。

4、设定接收超时时间D8129=50(时基10ms)。

5、设定接收/发送数据为8位处理模式,在默认情况下为16位处理模式,若D8161为ON则为8位处理模式(低8位)。

6、使用——[RS S m  D  n] 指令定义发送、接收数据起始地址及数据长度。S为发送数据起始地址;m为发送数据长度;D为接收数据起始地址;n为接收数据长度。

注意:发送/接收数据缓冲区都不包含起始符与结束符,若只接收无发送则,m=0;若只发送不接收,则n=0。

7、发送请求位M8122,即每接通(沿触发)一次M8122执行一次发送命令,且该位在发送完成后会自动复位。

8、接收完成标志位M8123,即每次接收完成该位都会接通,该位处于接通状态则无法接收新数据,且该位不会自动复位需手动复位,可用M8123的触点作为条件复位M8123的线圈状态,这样在接收完成后相当于自动复位M8123。

注意:三菱→西门子:虽然发送数据缓冲区中的数据不包含起始符与结束符,但是,D8124(起始符)与D8125(结束符)中的数据也会一起被发送给对方,也就是西门子PLC接收到的数据中包含有起始符与结束符。如RS指令中设定发送的字节数为3个,那么西门子PLC接收缓冲区定义的接收字节数应为5个,其中第一个字节为起始符最后一个字节为结束符。

西门子→三菱:三菱的接收数据缓冲区也如此,若启用起始符与结束符,则在西门子PLC的发送数据缓冲区中第一个字节为起始符最后一个字节为结束符,那么FX2N的接收数据缓冲区中也不包含起始符与结束符(起始符与结束符通过D8124、D8125设定),也就是RS指令中设定的起始字节接收到的是西门子PLC发送数据的第二个字节。如西门子PLC发送5个字节数据,那么FX2N只需接收3个字节即可。

9、程序如下:






本帖子中包含更多资源

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

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

本版积分规则