回复:能用CPU317-2PN/DP建立TCP连接实现Modbus-TCP通信读取从站数据吗?

冬日

  • 帖子

    3380
  • 精华

    56
  • 被关注

    45

论坛等级:奇侠

注册时间:2005-09-01

白金 白金 如何晋级?

发布于 2010-04-29 11:07:40

9楼

整理一下结果,如果有人想使用PLC自带的PN口采用TCP读取Modbus设备从站,可按如下方法做:
1,下载西门子这个例程:http://support.automation.siemens.com/CN/llisapi.dll/csfetch/29737950/Sample_open_TCP.zip?func=cslib.csFetch&nodeid=29738409
2,配置通信的参数DB

这里我们需要修改的地方不多,主要是IP地址和端口(rem_Port),主从模式,CPU型号(DEV_ID),其他的基本默认就可以了,实在有问题去下载中心再找关于FB65的参数DB配置。西门子有个免费的工具TCP winzard也可以帮你配置,不过我没用过那个工具。
4,检查连接是不是建立好了,正常FB65的状态字在你的TCP服务器端启动之前,状态应该是7002(busy)才对,如果是7000说明没有连接请求,可以考虑把那个req参数改成随便一个m点,这样方便手动控制。
3,如果连接建立了就可以测试发送数据,建议下载一个TCP测试工具,我用的是TCP&UDP测试工具 1.02,这个工具除了有广告外还不错,可以同时多个建立服务器或者客户端。
4,如果发送接收功能都正常了就很简单啦,把读取modbus从站的代码放到你要的DB里,然后发送接收就可以了。这里要注意的是Modbus TCP和串口的Modbus代码稍有不同,你如果不想详细研究或者使用到很复杂的功能,那就简单的这么处理就可以了:
a,发送代码在前面加5个字节的0和一个字节的数字,这个数字=后面的发送代码长度,把CRC校验码去掉。比如原来的代码是 01 03 00 00 00 0A C5 CD,现在变成00 00 00 00 00 06 01 03 00 00 00 0A
b,接收到的数据把前面的6个字节去掉就是modbus真正的数据,不带校验码。
If anything can go wrong, it will.
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54763条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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