plc与工控机tcpip通讯怎么做 (PLC程序框架模板)

PLC通讯常常用于PLC与其他控制设备进行数据交换和实时控制的应用场合。它通过各种通讯协议,与其他设备进行数据传输和通讯,从而实现数据共享和控制。其重要性不必多说,今天我们就来写一个基于200SMART开放式用户通讯库的通用的TCP/IP通讯客户端子程序,来完善我们的程序架构。

在此之前我们先来聊聊我们的需求:

1,同性性强,方便调用。

2,能自动重连。

3,可靠性强。

第一步:新建子程序,并新建变量组(如下图)。

PLC程序框架是什么,PLC程序框架模板

新建TCP/IP通讯子程序变量组

第二步:子程序编写。

程序段 1:第一次扫描时....初始化状态变量以初始化连接。

PLC程序框架是什么,PLC程序框架模板

初始化

程序段 2:状态机处理...确定状态机的当前状态并跳转到状态处理程序标记处。

PLC程序框架是什么,PLC程序框架模板

状态机处理

程序段 3 :“连接状态”标签。

程序段 4:与服务器建立主动连接。该状态下此程序只能调用 TCP_CONNECT 指令一次。设置 Req 输入为 TRUE 以启动连接过程。由于状态机为连接的主动方,所以该指令设置 Active 输入为 TRUE。服务器IP地址及端口号在这里修改。

PLC程序框架是什么,PLC程序框架模板

程序段 5:如果 Done 为 TRUE,则 CPU 建立该连接以进入“空闲”状态。

如果 Busy 为 TRUE,则 CPU 进入“连接等待”状态以等待连接的建立。

如果 Error 为 TRUE,则可能输入参数有误,检查输入参数以决定 CPU 接下来要进入哪个状态。

在所有情况下,都要先退出状态机才能进行该项扫描。该程序会继续进入扫描的下一个状态。

PLC程序框架是什么,PLC程序框架模板

程序段 6:状态“连接等待”标签...在该状态等待,直到与被动设备建立连接。

PLC程序框架是什么,PLC程序框架模板

程序段 7:执行该项操作以在服务器端主动断开连接或者网线中断后,此时客户端是不知道连接已经断开了,可以通过设置 Req = FALSE 并使用与上文中相同的连接 ID 调用 TCP_CONNECT 指令来检查连接状态并确保 CPU 已建立该连接。

PLC程序框架是什么,PLC程序框架模板

程序段 8:如果 Done 为 TRUE,则表示 CPU 已建立该连接,所以继续进入“空闲”状态。

如果 Busy 为 TRUE,则 CPU 停留在“连接等待”状态。如果没有搜索到其它设备,则 TCP_CONNECT 指令最终会超时并会返回错误消息。

如果 Error 为 TRUE,则与服务器的连接有误。在这种情况下,返回到“连接”状态并尝试再次建立连接。注意如果已搜索到被动设备,但其拒绝连接请求,则由于 CPU 不断尝试与被动设备建立连接,因此会快速出现连接错误并占用大量带宽。

在所有情况下,都要先退出状态机才能进行该项扫描。该程序会继续进入扫描的下一个状态。

PLC程序框架是什么,PLC程序框架模板

程序段 9、程序段 10、程序段 11、程序段 12:该状态会在各消息之间建立时间延迟,所以不能快速推动程序段向下进行。符号“IdleTimeDelay”指定延迟时间。超时后程序自动跳转到“接收”状态以便实时的更新服务器发送过来的数据。并在进入“接收”状态前如有发送请求命令则切换至“发送”状态进行数据发送。

PLC程序框架是什么,PLC程序框架模板

PLC程序框架是什么,PLC程序框架模板

程序段 13、程序段 14:数据“发送”状态标签。向被动设备发送新消息。设置 Req 为 TRUE 以初始化新的发送操作。

PLC程序框架是什么,PLC程序框架模板

程序段 15:如果 Done 为 TRUE,则发送操作已完成(几乎不会很快完成),之后进入下一次扫描的“接收”状态并复位发送请求命令。

如果 Busy 为 TRUE(通常是这种情况,发生在数据量比较大的情况下),则进入“传送等待”状态以等待传送完成。

如果 Error 为 TRUE,则检查其原因,如果出现连接问题,可能需要更改状态。

PLC程序框架是什么,PLC程序框架模板

程序段 16、程序段 17:“传送等待”状态标签...在该状态等待直到传送完成。设置 Req = FALSE,调用 TCP_SEND 指令以确定发送是否已完成。确保使用初始化发送请求所用的发送长度和缓冲区指针。

PLC程序框架是什么,PLC程序框架模板

程序段 18:如果 Done 为 TRUE,则发送已完成,之后进入“接收”状态并复位发送请求命令。

如果 Busy 为 TRUE,则 CPU 停留在“传送等待”状态。

如果 Error 为 TRUE,则检查出现错误的原因,如果是连接出现问题,需要更改状态。

PLC程序框架是什么,PLC程序框架模板

程序段 19、程序段 20:“接收”状态标签...清理接收缓冲区和“RecvLength”,由此该区域内不会残留有上一个接收到的消息的数据。

捕获当前间隔时间值(在“RecvStartTime”中)以支持接收超时,之后进入“接收等待”状态。

PLC程序框架是什么,PLC程序框架模板

程序段 21、程序段 22:“接收等待”状态标签...调用 TCP_RECV 指令以获取 CPU 接收到的任意消息。

PLC程序框架是什么,PLC程序框架模板

程序段 23:如果 Done 为 TRUE,则该指令已接收到新数据,之后进入“接收检查”状态。

如果 Busy 为 TRUE,则停留在“接收”状态,直到停留时间达到接收超时值。如果停留在该状态的时间已超时,则断开与设备的连接,之后再重新与其建立连接。

如果 Error 为 TRUE,则检查错误代码以确定接下来的操作。

PLC程序框架是什么,PLC程序框架模板

程序段 24、程序段 25、程序段 26:“接收数据检查”状态标签。

该程序只能检查返回的数据以确保接收到的数据与发送出的数据等量,以及第一个词符合“填充模式”。无论响应好坏都记录下来,之后进入“空闲”状态,等待发送下一条消息。

并在所有情况下都进入“空闲”状态,重新轮训。

PLC程序框架是什么,PLC程序框架模板

程序段 27:“退出”状态标签。

PLC程序框架是什么,PLC程序框架模板