作者 | 主题 |
---|---|
刚刚入门 至圣 经验值: 12687 发帖数: 2083 精华帖: 23 |
楼主 2019-04-15 09:37:44
主题:用PLCSIM仿真实现S7-1200之间的以太网通信 PLCSIM可以仿真两个CPU之间的S7通信、TCP通信、ISO ON TCP通信,下面逐一进行示例,因为TCP和ISO ON TCP相同,所以只示例ISO ON TCP。 第一篇:S7通信 一、同一项目里的两个CPU仿真器的S7通信 添加两个设备,CPU1-1212作为客户端,CPU2-1215作为服务器端,IP地址分别设为192.168.1.6和192.168.1.7,激活“启用时钟存储器字节”。通信目的是将CPU1212发送数据区数据传输到CPU1215接收数据区,同时1212接收数据区接收来自CPU1215发送数据区的数据。 1.1客户端CPU1212组态S7连接,如图1所示。 图1:客户端组态S7连接 1.2 客户端CPU1212添加数据通信数据块,比如s7com(DB1)建立Send和Rev两个数组(Array[0..9] of int),Send数组代表CPU1212发送数据区,Rev数组代表CPU1212接收数据区,如图2所示。 图2:建立收发数据块 1.3 服务器CPU1215添加数据通信数据块,同样s7com(DB1)建立Send和Rev两个数组(Array[0..9] of int),Send数组代表CPU1215发送数据区,Rev数组代表CPU1215接收数据区,与客户端一样。 1.4 客户端CPU1212编程 调用“PUT”指令将数据写入到伙伴CPU1215中,调用“GET”指令从伙伴CPU1215读取数据,如图3和4所示。 图3:PUT指令 图4:GET指令 1.5 服务器端CPU1215设置“允许来自远程对象的PUT/GET通信访问”,如图5所示。(无需编程) 图5:服务器端勾选允许远程访问 1.6 启动各自仿真器并进行下载测试,如图6所示。 图6::仿真通信测试 二、不同项目里两个CPU的S7通信仿真 还以CPU1212(客户端)和CPU1215(服务器端)为例,只是两个CPU在不同的项目里。 2.1 客户端项目CPU组态编程 与同一项目里组态编程基本一致,区别就是连接参数里通信伙伴方选择未指定,同时在“常规”属性里填写未指定伙伴方的IP地址,如图7和8所示。 图7:创建未指定连接 图8:填写伙伴IP地址 程序里还是建立数据块S7com收发数据,同时调用“TSEND”和“TRCV”指令用于发送和接收数据,与前面一样不再赘述。 2.2 服务器端项目CPU1215组态 与同一项目里一样,CPU1215建立数据S7com用于收发数据即可,无需编程,同时勾选“允许来自远程对象的PUT/GET通信访问”。 3.3 通信测试 客户端项目和服务器端项目均点击仿真按钮进行仿真,仿真CPU运行后自动下载程序。打开两个项目各自的监控表,客户端填入发送数据和服务器端填入发送数据后,各自均收到对方发送的数据,如图9所示。 图9:不同项目通信测试 提示:成功建立S7连接是PUT/GET指令数据访问成功的先决条件,可在S7连接属性里“诊断>连接信息>连接详细信息”里查看连接状态,如图10所示。 图10:查看S7连接状态 至此PLCSIM仿真CPU间S7通信就结束了。 第二篇:ISO ON TCP通信仿真 一、同一项目里两个CPU的ISO-on-TCP通信仿真 添加两个设备,CPU1-1212作为客户端,CPU2-1215作为服务器端,IP地址分别设为192.168.1.6和192.168.1.7,激活“启用时钟存储器字节”。通信目的是将CPU1212发送数据区数据传输到CPU1215接收数据区,同时1212接收数据区接收来自CPU1215发送数据区的数据。 1.1客户端CPU1212编程: 1)添加数据通信数据块,比如TCP (DB11)建立Send和Rev两个数组(Array[0..9] of int),Send数组代表CPU1212发送数据区,Rev数组代表CPU1212接收数据区。 2)在主程序OB1中调用“TCON”指令,建立ISO-on-TCP连接。单击“TCON”指令右上角“开始组态”按钮,在巡视窗口中选择“TCON”指令的“属性>组态>连接参数”,直接配置连接属性。连接类型选择“ISO-on-TCP”, “连接数据”里选择“新建”时,系统将自动创建一个连接数据块,如图11所示。 图11:客户端1212连接 “TCON”指令的说明 REQ:该参数的上升沿用于启动连接操作,成功建立连接后参数DONE将置位一个扫描周期。 ID:指向已分配连接的引用,如图1里面的“连接ID(十进制)”,此处为2。 CONNECT:指向描述通信连接指针,也就是指向我们刚才组态时自动创建的连接数据块,它包含了建立连接所需的全部设置。这个参数既可以像上面一样通过点击指令右上角“开始组态”按钮生成,也可以在数据块中组态一个结构类型为TCON_IP_v4变量来实现。 3)在主程序中调用“TSEND”指令,用于发送数据,如图12所示。 4)在主程序中调用“TRCV”指令,用于接收数据,如图13所示。 图12:客户端发送指令 图13:客户端接收指令 1.2服务器端CPU1215编程 1)和客户端一样添加数据通信数据块,比如TCP (DB11)建立Send和Rev两个数组(Array[0..9] of INT),Send数组代表CPU1215的发送数据区,Rev数组代表CPU1215的接收数据区。 2)在主程序OB1中调用“TCON”指令,建立TCP连接。同样是单击“TCON”指令右上角“开始组态”按钮进行组态,连接数据选择前面客户端CPU已组态好的即可,如图14所示. 图14:服务器端1215配置 3)同样在主程序中调用”TSEND”和“TRCV”指令,用于发送和接收数据,与前面客户端程序相同,不再赘述。 1.3 通信测试 对本项目中2个CPU均启动仿真,启动各自仿真CPU运行并下载程序。每个CPU都添加监控表,分别触发各自TCON连接("TCP".Ctl[0]),同时在1212CPU的Send区和1215CPU的Send区填入相关数据,在1212CPU的Rev区和1215CPU的Rev区会接收到对方发来的数据,如图15所示。 图15:ISO ON TCP通信仿真测试(同一项目) 二、不同项目里两个CPU的TCP通信仿真 还以CPU1212(客户端)和CPU1215(服务器端)为例,只是两个CPU在不同的项目里。 2.1 客户端项目CPU组态编程 与前面同一项目里组态编程基本一致,区别就是连接参数里通信伙伴方选择未指定,如图16所示。 图16:客户端 ISO ON TCP连接设置 调用“TSEND”和“TRCV”指令用于发送和接收数据,与前面一样不再赘述。 2.2 服务器端项目CPU1215组态和编程 OB里调用”TCON”指令,连接参数里“伙伴”同样选择“未指定”,因为不在同一项目。输入伙伴CPU的IP地址(192.168.1.6),另外是客户端主动连接,所以伙伴侧选上“主动建立连接”,同时新建连接数据,如图17所示。 图17:服务器1215端ISO ON TCP配置 调用“TSEND”和“TRCV”指令也与前面一样,不再赘述。 2.3 通信测试 客户端项目和服务器端项目均点击仿真按钮进行仿真,仿真CPU运行后自动下载程序。打开两个项目各自的监控表,客户端填入发送数据和服务器端填入发送数据后,各自均收到对方发送的数据,如图18所示。 图18:不同项目仿真ISO ON TCP通信测试 第三篇:TCP通信仿真 与ISO ON TCP几乎一模一样,只要把连接改为TCP即可,不再赘述了。 |