合信论坛

快捷导航
查看: 7534|回复: 1

CTH3-C系列PLC网口自由口socket功能用法介绍

[复制链接]

18

主题

49

帖子

3100万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
31000576
发表于 2019-8-27 17:09:16 | 显示全部楼层 |阅读模式
首先百科一下 什么是socket?如下是度娘的解释。

socket用于在两个基于TCP/IP协议的应用程序之间相互通信。最早出现在UNIX系统中,是UNIX系统主要的信息传递方式。在WINDOWS系统中,SOCKET称为WINSOCK。

两个基本概念:
客户方和服务方。当两个应用之间需要采用SOCKET通信时,首先需要在两个应用之间(可能位于同一台机器,也可能位于不同的机器)建立SOCKET连接,发起呼叫连接请求的一方为客户方,接受呼叫连接请求的一方成为服务方。客户方和服务方是相对的,同一个应用可以是客户方,也可以是服务方。
在客户方呼叫连接请求之前,它必须知道服务方在哪里。所以需要知道服务方所在机器的IP地址或机器名称,如果客户方和服务方事前有一个约定就好了,这个约定就是PORT(端口号)。也就是说,客户方可以通过服务方所在机器的IP地址或机器名称和端口号唯一的确定方式来呼叫服务方。在客户方呼叫之前,服务方必须处于侦听状态,侦听是否有客户要求建立连接。一旦接到连接请求,服务方可以根据情况建立或拒绝连接。连接方式有两种,同步方式(Blocking)和(noBlocking).
客户方发送的消息可以是文本,也可以是二进制信息流。当客户方的消息到达服务方端口时,会自动触发一个事件(event),服务方只要接管该事件,就可以接受来自客户方的消息了。


CTH3-C系列PLC可以通过ETH0口与第三方视觉、机器人、扫码器等外设进行以太网的socket通信,如下是具体方法介绍。

一、建立工程,在库管理器中添加库文件,Network。
企业微信截图_20190827154145.png
二、当PLC作为服务器端时,需要先调用 NBS.TCP_Server 指令,调用生成服务器的hServer端口句柄。
企业微信截图_20190827164448.png
企业微信截图_20190827164457.png
在TCP_server功能块下,创建ipAddr变量,定义为NBS.IP_ADDR类型。
企业微信截图_20190827164652.png
企业微信截图_20190827164705.png
指定PLC的一个连接端口号,此处例程随机设一个9000的端口号。
企业微信截图_20190827165011.png

企业微信截图_20190827165201.png
设置服务器的IP地址,即本机的IP地址。
企业微信截图_20190827165445.png
三、用已经生成hServer端口句柄,创建TCP_Connection功能块。
企业微信截图_20190827165633.png
企业微信截图_20190827165644.png
将TCP_Server生成的句柄赋值到功能块中。
企业微信截图_20190827165718.png

将以上程序下载到PLC,用PC上位机仿真软件TCPUDPDbg以客户端的形式访问PLC。
企业微信截图_20190827165914.png
企业微信截图_20190827170156.png
将TCP_setup置位为1,即可见服务器设置成功,生成连接端口号。
企业微信截图_20190827170309.png
但因为暂无客户端连接,TCP_Connection_0的hConnection为0,当有客户端连接了PLC,这个参数就会出现连接句柄。
用仿真软件以客户端形式连接。
企业微信截图_20190827170455.png
企业微信截图_20190827170556.png
当仿真软件出现 绿色三角符号,PLC TCP_Connection_0功能块出现连接句柄并xActive位为1时即连接成功,可以进行收发作业。
企业微信截图_20190827170738.png

四、读写参数的功能块操作。
企业微信截图_20190827171038.png
企业微信截图_20190827171404.png
建立写和读的字符串参数
企业微信截图_20190827172441.png
五、下载程序,读写仿真
仿真软件建立通信后,点发送数据
企业微信截图_20190827172736.png
在未接收到上位机之前,读缓存区为空
企业微信截图_20190827172757.png
当接收到数据之后,TCP_Read_0的xDone位为会1并显示收到报文的长度。

企业微信截图_20190827172855.png
将写的TCP_Writer给定一个上升沿,那将写缓存区的数据往仿真客户端发。
企业微信截图_20190827172909.png

企业微信截图_20190827173512.png

注意一、当PLC本机做服务器,需要多个客户端连接时,此时需要调用多个TCP_Server,分别对应不同的端口号,因为一个端口号只允许建立一个连接,然后根据TCP_server生成的连接句柄,对应多个TCP_Connection功能块。
微信图片_20190827174012.png
微信图片_20190827174019.png

二、PLC当成客户端使用时,请参考附件工程,不再进行介绍,方法与当服务器类似。



TCP_Server.project

127.63 KB, 下载次数: 1564

TCP_client.project

122.76 KB, 下载次数: 1517

18

主题

49

帖子

3100万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
31000576
 楼主| 发表于 2019-8-27 17:54:10 | 显示全部楼层
PLC作为TCP服务器时,如果客户端连接成功后又断开了,直接重连会连接不上。
应用程序中可以根据TCP_Connection_0的xActive位从1变为0时,将TCP_Server_0重新复0再置1即可。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2024-4-19 06:01 , Processed in 0.082788 second(s), 23 queries .

快速回复 返回顶部 返回列表