本例演示将PLC作为服务器,电脑作为客户端,进行通讯。
反过来也是一回事,就不啰嗦了。
二者进行TCP通讯,是基于网线的,电脑上用的是网口,PLC上用的是Profinet接口,即PN口。
软件工具准备
西门子PLC的开发环境是博途V18
TCP调试助手工具,其实任意一个调试助手都可以。
IP地址和端口的概念
IP地址就是你的电脑在网络上的地址,形象化的理解,就是你家住的小区的邮政地址,即XX省XX市XX区XX路XX号。通过IP地址可以找到具体的每一台电脑,但是不再继续精确了。
如果要找到具体你家怎么办呢,那就给小区的每户都分配一个编号,每个应用程序要使用网络的时候,就请求使用一个唯一的编号,这样就可以对应到每个具体的应用程序了。
但这个端口号,不是随便用的,有一些被用来实现系统的固定功能,比如HTTP通讯用到的8080端口,TELNET用到的23端口等,
西门子1200PLC的端口是2000到5000(如果记错了请告知)
通讯过程
这个过程就像我们平时上网一样,网站的服务器平时都处于等待状态,我们需要连接网站服务器时,就由我们的电脑主动发起连接,去进行通讯。所以一定是服务器Server端(S端)去侦听端口,客户端Client(C端)主动建立连接,建立完成后,客户端发送数据就可以被服务器端收到。
本例中PLC作为服务器,去侦听一个端口,端口号2000。
电脑作为主动发起通讯的客户端,来主动创建一个连接。
所以服务器端的IP地址是一定要知道的,本例中是192.168.2.222。
常规上网时,客户端的IP地址不重要,因为我们使用的是TCP/IP协议,在TCP/IP协议中就会将客户端的IP地址等一系列信息打包,在服务器端收到数据后会拆包,得到一些基础信息,以及我们发送的数据,在做数据返回时,就会知道数据到底发到哪里。
但在本例中,PLC不允许连接任意地址,只对特定IP地址的客户端进行连接,所以在PLC编程时,要将电脑的IP地址填入。电脑的IP地址可以通过下图查到:
端口号需要事先约定好,本例中是2000。
PLC端的编程
这部分很简单,用梯形图就可以了。
我们使用“开放式用户通信–其他”中的2个控件,
将TCON拖入程序段1
将TRCV拖入程序段2
接下来就是对2个控件进行设置
组态设备
本例使用1212DCDCDC,将其拖入组态界面
双击设备,在下方属性界面继续设置
1 添加新子网PN/IE_1
2 IP地址192.168.2.222,子网掩码255.255.255.0
3 开启系统存储位和时钟存储位
至此组态完成,开始编程。
TCON控件
先点击TCON控件的如下图标
在下面的属性设置窗口进行通讯连接设置:
1 连接参数中按下图进行设置
说明一下,192.168.2.222是本PLC地址,192.168.2.111是电脑地址
“连接数据”下拉,选择新建,连接ID为1
伙伴为未指定,并由伙伴进行主动连接,
说明本PLC是作为服务器等待连接,伙伴(即电脑)作为客户端主动发起连接。
2 REQ选择FirstScan,即上电就启动侦听,以等待连接
新建一个变量表
将需要的变量放在这里,本例中没有用到发送,所以无需发送结构体
TRCV控件
按下图设置好TRCV控件
注意ID要和TCON中的ID设置成一样
PLC下载并运行
启动在线调试模式,双击我的变量表,并开启监控数据
此时PLC作为服务器,设置并启动完成,正在等待客户端进行连接和通讯。
联机调试
电脑端设置IP地址为192.168.2.111
打开TCP调试助手
点击TCP Client
主机地址:192.168.2.222
主机端口:2000
点击连接网络
可以看到绿灯亮起,说明连接建立成功。
以文本方式发送数据
输入数据,并点击手动发送按钮
在PLC的数据监控页面,可以看到接收到的数据
以16进制方式发送数据
接收到的数据如下: