技术论坛

 840Dsl与第三方设备(PC)的TCP通讯

返回主题列表
作者 主题
水虎丶传
游士

经验值:297
发帖数:16
精华帖:1
楼主    2021-06-28 11:26:30
主题:840Dsl与第三方设备(PC)的TCP通讯 精华帖 

我之前看到有坛友发帖提及840Dsl第三方通讯的问题,本着学习的态度在自己的机床上试验了一番,发现和一般的300系列PLC通讯方法设置有些许不同。我把本人成功后的步骤贴出来,以供大家参考。

1.      设置IP

1)      设置PLC IP

本例使用X127作为PLC的通信接口,在硬件配置界面双击CP 840D sl。



点击属性,设置IP地址:192.168.215.1,子网掩码:255.255.255.0,新建默认名称为Ethernet(1)的连接。


2)      设置PC端IP为192.168.215.2。

 

 

2.      组态网络

1)      硬件配置工具栏选择“选项”——“组态网络”。


2)      右键单击CPU 317F-3 PN/DP,插入新连接。


3)      设置连接。弹出的对话框选择未指定/TCP连接。


标识号,名称默认,因为是将PLC作为服务端,所以激活连接的建立不用勾选。


 

 

地址栏本地IP地址:192.168.215.1,端口地址:2000

远程地址不用设置,如果设置了固定的远程IP地址和端口地址会导致连接不上。


设置完成后,单击CPU 317F-3 PN/DP,下方会显示已建立的连接。


编译并下载组态。

3.      测试连接。打开TCP&UDP测试工具,客户端模式创建连接。目标IP:192.168.215.1,端口:2000,本机端口随机。


点击连接,绿色箭头标识连接已建立。


NetPro窗口,选择“PLC”——“激活连接状态”,发现下方显示连接状态已建立,表示配置正确,成功建立了连接。




4.      创建PLC程序。840Dsl有专门的功能块用于以太网通讯。

FC1005:AG_SEND - 将数据传输至以太网 CP

FC1006:AG_RECV - 从以太网 CP 接收数据

以上功能块接近 “SIMATIC_NET_CP”库中的功能块 FC5和FC6。FC5和FC6是否可用,我没有做测试。

1)   创建DB12用于发送数据。这里发送数据是通过FB2功能读取的机床MCS坐标,分别是X/Y/Z/A/B/C六轴的坐标值。


2)   创建DB13用于接收数据:


3)   从以下网址可以下载到使用FC5和FC6通讯的样例程序:

https://support.industry.siemens.com/cs/document/17853532/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E9%80%9A%E4%BF%A1%E5%8A%9F%E8%83%BD%E5%9D%97fc5%E5%92%8Cfc6%E7%BC%96%E7%A8%8B%EF%BC%9F?dti=0&lc=zh-CN

将其中的FC5和FC6替换为FC1005和FC1006



 


这里有两点需要特别注意:

u  参数LADDR的值为固定的W#16#8110。

u  数据发送和接收的地址范围一定要小于DB块的地址。比如DB12的地址范围为DB12.DBX0.0~DB12.DBX32.0,设置地址参数的时候指针地址设置为P#DB12.DBX0.0 BYTE 32就会导致连接不上,而设置为P#DB12.DBX0.0 BYTE 30就没有问题,这点我没有想明白。

4)   下载所有的FB/FC/DB块。

5)   建立变量表监视发送和接收数据。测试工具接收到的数据为浮点数的16进制表示。






 

 

 

 

5.   使用C++的SOCKET编程,创建一个控制台应用程序,与PLC成功连接后,就可以在电脑上实时监控机床各轴的的坐标,与机床界面显示一致:



编程的时候同样要注意不同数据类型的转换。本来想设计一个窗口应用程序,效果更直观,但我是刚接触自动化,C++编程也基本一窍不通,尝试了一番后发现有些吃力,就只能到这一步了。。。

 

6.   总结。

通过和代理商聊天得知,西门子有专门的OPC UA选件,可以实现对机床状态的实时监控。我觉得这种方式适用于不想花钱买授权,同时具备编写类似监控软件能力的公司去实现一些监控项目。


840Dsl与第三方设备(PC)的TCP通讯.zip


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