技术论坛

 西门子S7-1214C与三菱FX3U自由口通讯案例

返回主题列表
作者 主题
WWCWWC
至圣

经验值: 71500
发帖数: 7980
精华帖: 145
楼主    2022-05-13 10:55:38
主题:西门子S7-1214C与三菱FX3U自由口通讯案例

西门子S7-1214C与三菱FX3U自由口通讯案例

  前一些天,做了一个西门子200smart与三菱FX3U的自由口通讯,硬件一直放着没有归还给同事,据同事说该三菱FX3Uplc一直有输出被中断的问题,具体原因没有找到(属于硬件问题,因为同事重新换一台plc,下载同样的程序后就一直没有再次出现问题过),我正好拿来做做通讯测试没有问题的。

自上次西门子200smart与三菱FX3U自由口通讯成功验证后,打算再用同样的三菱FX3Uplc的基础上,再组态与西门子S7-1214C的plc进行自由口通讯。上次,网友说,西门子及三菱官方的通讯手册上均有类似的例程,何不用modbus rtu做一些验证,我理解现成有的程序例子官方已经得到验证过,再写帖子没有什么大多的意义,要写官方没有的,通过自己理解通讯指令后,写出来通过验证的程序才有一些意思。

编程思路:

创建一个自由口通讯项目,发送已经提前准备好的数据,数据由SEND_PTP的BUFFER管脚定义数据发送的起始地址,长度由LENGTH定义。先发送一串数据,然后等待(对方)从站的数据的返回,如果从站没有返回数据,再次发送同样的信息,直到从站正确返回数据,假设从站在规定时间内没有返回数据,则判断通讯出错。自由口按这样的通讯设计原则,循环进行。

硬件连接:

西门子S7-1214C + CM1241组成的扩展RS422/485口,与三菱FX3U – 485-DB扩展通讯板建立自由口通讯,其中:

   西门子S7-1214C(CM1241)        三菱FX3U- 485-DB

           3                           SDB/RDB     

           8                           SDA/RDA

西门子S7-1214C的组态及编程:

1) 创建一个新项目,组态S7-1214C+ CM1241,在“设备视图”中组态CM1241,并定义自由口通讯选项:

  均按默认值设置,在cpu属性中勾选“系统时钟存储器”,编程时这些标志位有调用的可能,反正也是一种资源的利用。

2) 在OB1或者自己选择合适的FB/FC中拖拽通讯指令到编辑区:

 

  建议暂时不要填写各指令的管脚,等创建相应的数据块后,再拖拽到相应的管脚上。

3) 创建3个数据块,一个是通讯指令所需要的数据块,一个是发送数据的数据存放块,另一个是接收数据的存放块:并按功能命名,以便查看,取消优化访问。

 

数据块所创建的数据,按管脚数据类型要求创建,不清楚应用先看软件F1帮助。

4) 将所需要的数据块,调整至悬浮窗口拖动到合适位置,将对应的数据拖拽到相应的通讯指令管脚:

 5) 再创建通讯指令的轮询调用机制,利用系统标志位"FirstScan",启动通讯发送指令SEND_PTP,再利用指令完成标志位DONE触发RCV_PTP指令,RCV_PTP指令完成标志位NDR返回到初始,构成一个闭环:再根据通讯发送、接收指令的Error及Status状态值组合,读取指令的错误信息:

 

 6) 编译,保存,将硬件连接好所有测试硬件条件的plc上电后,将硬件和程序下载到cpu,再连接好前一段时间购买的串口转USB转换器,启动串口同事软件,简单的设置相应的测试数据,启动发送数据模式:

 7) 通讯正常,指令没有错误:

 

8) 特意在串口同事软件的发送区,写入多个“C”,RCV_PTP指令的STATUS状态值变为16#8083的错误:

 

9) 查看RCV_PTP指令的错误信息16#8083:

   说明我测试的“错误”操作能够触发相应的报警信息,当报警清除,通讯能够“自动”继续开始。

10) 三菱FX3U自由口(无协议)通讯,D8120,M8161的主要通讯参数解释:

三菱FX自由口通讯D8120相当于西门子200smart SMB30/SMB130,就是定义三菱FX通讯格式的工作在什么模式,M8161是通讯数据长度8位还是16位,其中,M8161 = 0 为16位数据,M8161 = 0为8位数据模式,D8120每一个位下表:

 

在实际编程时需要根据西门子S7-1214C(CM1241)通讯协议,三菱侧需要与之匹配,D8120  = 16# 0C81,等同于西门子侧S7-1214C的硬件组态。

11) 三菱自由口(无协议)通讯另一个指令RS,解释:

   RS指令理解起来也非常简单,(S)为数据发送首地址,(m)为数据发送数据的长度;(D)为接收数据的首地址,(n)为接收数据长度的指定,最长4096个字。几个关键控制位:M8122 = 发送数据控制位,M8123 = 接收数据控制位。

12) 先做一个与串口通讯的简单的验证,初始化必要的通讯参数后,接通M1 = 1,启动RS指令,先把D0 = 10的数据发送出去,等待发送完成后,RS指令“自动”进入到接收状态,如果正确接收到数据,那么数据会传送到D10中,接收数据完成后M8123关闭,M1也断开。M8029是三菱泛用标志位,即指令执行完毕会接通一个周期。

 

  三菱FX的自由口通讯还有其它寄存器及标志位信息,这里不是主要的,就不展开说明了。

13) 连接串口调试软件,测试发送和接收指令的状态:

 

D0 = 10 发送到串口调试软件接收窗口中的数据为0A(10进制数的10),串口调试软件发送窗口写数据16#数 = 10,在D10 = 10进制的16。当M1 = 1始终接通,则RS指令一直处于接收状态,接收完成后,M8123用程序发送断开,准备下一次的接收任务,如此循环。借于三菱这个简单的程序,稍加修改就可以建立2台PLC之间的通讯。

2台PLC之间的测试:

1) 将2台PLC的通讯口连接起来,假设西门子PLC首先发送一个数据,如果通讯连接正确,那么,D10会接收到来自西门子S7-1214C(CM1241)的DB4.DBD0的数据:

 

 2) 反过来,西门子同样可以接收到来自三菱FX3U- 485-DB的D0发送过来的数据,数据存放在数据块DB5.DBD0中,这些数据的互为传送的:

 

双方的数据交换可以正常传送,达到测试的目的。

注意,三菱FX3U与西门子S7-1214C通讯数据的交换,需要在其中的一方做高低字节交换程序:

 西门子S7-1214C与三菱FX3U的自由口测试结束。


WWCWWC
至圣

经验值: 71500
发帖数: 7980
精华帖: 145
1楼    2022-05-13 11:08:51
主题:回复:西门子S7-1214C与三菱FX3U自由口通讯案例

西门子S7-1214C与三菱FX3U自由口通讯,我还在西门子侧用P2P指令编写,同样获得通讯成功。


三菱FX3U发送一个16#0A数据给西门子S7-1214C的数据块DB4:

西门子S7-1214C的数据块数据发送到三菱FX3U侧的D10:



黑猫警长W
至圣

经验值: 18274
发帖数: 2391
精华帖: 1
2楼    2022-05-13 11:32:28
主题:回复:西门子S7-1214C与三菱FX3U自由口通讯案例

跟着大神学习

WWCWWC
至圣

经验值: 71500
发帖数: 7980
精华帖: 145
3楼    2022-05-13 11:36:48
主题:回复:西门子S7-1214C与三菱FX3U自由口通讯案例

我是充分发挥前几天网购的串口转USB转换器的功效,感觉调试类似的项目非常适合,一些问题可以通过这个转换器查找到,排除了外部硬件极性引起的通讯错误。

WWCWWC
至圣

经验值: 71500
发帖数: 7980
精华帖: 145
4楼    2022-05-13 11:47:54
主题:回复:西门子S7-1214C与三菱FX3U自由口通讯案例

基于上次200smart与三菱FX3U自由口通讯RS指令的应用,看到网友有提问,我本次验证过程中做了比较深层次的解读,及D8120、M8122/M8123的解释。

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。