西门子S7-1200与PC通讯取DB6.DBD36的值问题

分享到:
575
下一篇 >

菜鸟:

我在用C#开发一个程序,作一TCP client , 每隔10秒分别读取一次PLC的下面几个地址的值:

DB6.DBD36

DB6.DBD48


我使用网络调试助手已经可以连通PLC了,现在我想知道该发送什么字符串给plc, 才能传回我需要的值。

有谁知道 可以给我一段可以获取到值的  16进制数据。


谢谢

斑竹:

楼主这是要做S7通讯吗?


还是老老实实做TCP通讯吧,PLC打包发送数据即可。

菜鸟:

是的就是在作TCP通讯, 因为我只需要取出PLC上面两个地址的值即可,  因不知道该发送什么包到PLC才能回发我需要的值,特在此请教 。

附上我要取的数据



斑竹:

标准TCP通讯是与地址无关的,需要解包解码,如果从地址单元读取数据就是S7通讯了

菜鸟:

非常感谢版主*近热心的回答。


现在知道了PLC的IP地址 10.252.7.9  端口号是102   是TCP server


之前作过其它的 tcp client 与tcp server 通读的例子, 知道 如:在网络调试助手(客户端)中发送

FF 01 00 10 13      server 端就会自动回发一段我需要的值   FF 00 01 10 13   我只要解析回发过来的值就可以了。 


但是西门子 s7-1200  如果我想获取 DB6.DBD36 的值,我该向PLC发送一串什么包  它会自动为我返回值呢。  


请版主给些提示。没有作过PLC的开发

游侠:

**:如果做TCP,端口不能用102,因为102是S7通信用的;

**:PLC做服务器,需要在PLC侧建立一个TCP的通信,并调用程序,TSEND_C和TRCV_C用于收发数据。并周期的将你想获得的数据发送到PC机。


我只能给你点提示;

1、你这里是作为HMI和S7 -1200通讯的。你仅能使用 Ethernet ISO TCP 模式;要打开1200的102端口。你的端口可以为 10001。你的CPU Slot No 范围 .=0-18; IP地址和PLC在同一LAN中。

2、你要读取的DB 不能是仅符号访问的(要300/400兼容的);因为往往交换数据类型是一致的,可以使用数组。并且勾选(允许HMI访问)。传送打包都是按字;浮点数自己组织。

3、直接访问DB的格式:

n+0: 9x00;(x=1-8)00是DB变量类型。I: 01H;Q: 02H;M: 03H

n+1: 块号低4位+地址号12位。地址号*大8190

n+2::00+块号高8位; 块号*大 4095

n+3:高字节扩展代码+低字节 指定位

n+4:00+站号字节


你可能感兴趣: 工控菜鸟园 图片 自动化系统 S7-1200 通讯
无觅相关文章插件,快速提升流量