![a75105fe979c50d8e68b85961f4f5107.png](https://i-blog.csdnimg.cn/blog_migrate/7962d73606088b610101508139a8679c.jpeg)
西门子PLC1200的S7通讯(同一项目下)--GET接收指令
1.0 首先在同一项目下,组态两个PL,如下图,组态了2个1200PLC 1214C的PLC
2.0 点击链接里面,在窗口的右上角选择S7连接,这个窗口可以看到本地ID,和主动建立连接勾选,然后选择添加,下面的信息框就会显示已添加
![4ece978ee7a5a79a9c9d288b4c905ada.png](https://i-blog.csdnimg.cn/blog_migrate/c11ee67a6d369a47935fd0786be35d9e.jpeg)
2.1 如下图,就是建立S7连接后的组态
![321ba66ee587b10a4329ed53be22075e.png](https://i-blog.csdnimg.cn/blog_migrate/20a38ff7b8878b85bde4b50695459b75.jpeg)
3.0 然后在每个PLC的程序下,新建两个接收数据块和发送数据块,然后每个数据块设定100个字节的发送和接收区,并且找到数据块属性,把优化访问勾选去掉
![507021938d701448092b3cd9f14fe5ca.png](https://i-blog.csdnimg.cn/blog_migrate/acedc8c14f4868f4b31f9bc8f2b30c04.jpeg)
![0cdaccfdb8f6df904576cceab3df5aed.png](https://i-blog.csdnimg.cn/blog_migrate/12669bbf8262e8a1e1f51faa7c06e32b.jpeg)
4.0 从右边指令栏--通信--S7连接,找到GET接收读取指令
![c14ffc75b4a821b8cc6093f2f169a87a.png](https://i-blog.csdnimg.cn/blog_migrate/32b33c1326b510a6f8da1515dae84f8c.jpeg)
4.1 接下来我们解读下这个GET指令块
![3f7d3ce9ee7207d5210dfb21f8aee2c6.png](https://i-blog.csdnimg.cn/blog_migrate/b685a6fc32e81563e4198e7814ef908a.jpeg)
REQ:控制参数request,当上升沿时,启动交换数据
ID:需要匹配伙伴连接的对象的寻址参数
ADDR_1:指向伙伴PLC上需要读取DB块,起始地址,数据长度,数据类型
RD_1:指向存储伙伴PLC已读取的数据的DB块,起始地址,数据长度,数据类型
注解:如上图,你可以看到ADDR_1和RD_1是一样的,但他代表的是不一样的PLC,ADDR_1是指伙伴PLC的DB3数据块0.0地址开始的10个字节,而RD是指本地的DB块,另外这里的设置跟TCP通讯不太一样,指针直接指向伙伴PLC的发送地址,如果TCP的话,只能被动接收,是不知道从哪发出的
NDR:0作业尚未开始或仍在运行,1作业已成功完成
ERROR和STATUS:当ERROR=0,STATUS为0000H表示既无警告也无错误,也可能<>0000H警告,当ERROR=1,则肯定出错了
5.0 另外还要在程序中写两步,如下图,当NDR为1,完成作业时,把STATUS的状态保存到变量中,同理ERROR的时候也需要保存,这样方便你判断调试
![bdc769abe80a9bec6a58c51e796ffaed.png](https://i-blog.csdnimg.cn/blog_migrate/4da1411b7504fc3ed4b4a3831308d065.jpeg)
6.0 另外需要注意下,CPU--属性--访问写入读出的权限要开起来
![f966e3ce07bc005ed14008a38f4af40b.png](https://i-blog.csdnimg.cn/blog_migrate/0d0b67717d4f93fc720af17c7b78e5d7.jpeg)