技术论坛

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

返回主题列表
作者 主题
冬日
奇侠

经验值:8775
发帖数:3379
精华帖:56
楼主    2010-04-28 11:20:24
主题:能用CPU317-2PN/DP建立TCP连接实现Modbus-TCP通信读取从站数据吗?
在学习modbus-tcp,看了西门子的说明都复杂的很。如果PLC作为主站,西门子通过串口实现modbus通信却简单的多,只要调用fb2/3或者FB7/8,在相应的DB里输入modbus需要命令,然后发送出去就可以了。所以现在有个思路就是用PLC本身的PN口建立TCP连接,然后只管发送我们需要的命令,不知道这样可否?
在实验时却发现CPU-317-2PN/DP不允许我建立tcp连接,不知为何?
If anything can go wrong, it will.
冬日
奇侠

经验值:8775
发帖数:3379
精华帖:56
9楼    2010-04-29 11:07:40
精华帖  主题:回复:能用CPU317-2PN/DP建立TCP连接实现Modbus-TCP通信读取从站数据吗?
整理一下结果,如果有人想使用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.
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。