欧姆龙NJ系列PLC学习-TCPSocket知识点

1.首先本文适合于对欧姆龙NJ系列控制器编程有一定编程基础的PLC技术人员参考学习,如果大家对欧姆龙NJ系列控制器编程不了解的可以自行学习一下,后续小编也会根据学习进度发出一些关于欧姆龙NJ系列控制器的学习心得。

2.大家所熟悉的TCP/IP通讯的协议主要分为TCP和UDP,由于UDP相对于TCP虽然注重通讯速度,但是相对TCP来说丢包率要高,所以大家在工控领域用的更多的还是TCP,所以小编着重讲TCP。关于TCP的通讯交互的底层内容小编就不啰嗦了,网上有很多关于这方面的资料和说明,但是这些对于我们应用层只需要了解即可,今天就直接上关于TCPSokcet的干货。

3.话不多说,我们作为程序这道菜的烹饪师,首先要确认一下,我们手头一些欧姆龙NJ编程软件提供给我们的关于TCP功能一些功能块有哪些:

第一,FB_SktTCPConnect:主要功能用于客户端访问服务器的时候的第一步:连接 。需要知道远端访问的服务器的IP地址(DstAdr引脚)和远端口号(DstTcpPort引脚)、本地端口号(SrcTcpPort引脚),例如:远端服务器的IP地址和端口号分别为'192.168.0.1'和5000,本地端口号为50000,然后我们就可以通过触发连接(Execute引脚),最后就是连接过程中Busy引脚会一直为On,如果连接成功,Done引脚将会产生一个脉冲上升沿的输出,Busy引脚将会为Off,如果连接失败,Error引脚将会输出,并在ErrorID显示当前错误代码,如果连接成功将会生成一个系统变量输出(_sSocket引脚),主要用于我们后续通讯连接中使用。例如:如下图所示:

第二,FB_SktClearBuf:主要功能用于连接成功之后第二步:清除缓存。主要用于连接成功之后将上一次通讯堵塞在通讯通道中数据进行清除,首先需要知道清除通道的系统_sSocket(Socket引脚),然后触发清除(Execute引脚),清除过程中Busy引脚会一直为On,如果清除成功,Done引脚将会产生一个脉冲上升沿的输出,Busy引脚将会为Off,如果清除错误,Error引脚将会输出,并在ErrorID显示当前错误代码。例如:如下图所示:

第三,FB_SktTCPRcv: 主要功能用于连接成功之后第三步接收数据。主要用于接收服务器端发送的数据,首先需要知道我们接收多少长度的数据(size引脚),读取回来的存放的数据地址(RcvDat引脚),在连接成功的情况下,还需要知道连接的系统_sSocket(Socket引脚)以及接收信号的超时时间(TimeOut引脚,默认单位为100ms)多久,一般情况下默认设置为0,然后触发接收(Execute引脚),接收过程中Busy引脚会一直为On,如果读取成功,Done引脚将会产生一个脉冲上升沿的输出,Busy引脚将会为Off,读取的数据将存储在如下图所示arybyRcv[0...uiSizeRcv-1]中,并且显示实际收到的长度为uiSizeRcv,如果接收失败,Error引脚将会输出,并在ErrorID显示当前错误代码。例如:如下图所示:

第四,FB_SktTCPSend:主要功能用于连接成功之后第四步:发送数据 主要用于向服务器发送数据,首先需要知道我们需要发送数据的长度(size引脚),准备发送的数据存放地址(SendDat引脚),在连接成功的情况下,还需要知道连接的系统_sSocket(Socket引脚),然后触发接收(Execute引脚),发送过程中Busy引脚会一直为On,如果发送成功,Done引脚将会产生一个脉冲上升沿的输出,Busy引脚将会为Off,如果接收失败,Error引脚将会输出,并在ErrorID显示当前错误代码。例如:如下图所示:

第五,FB_GetTCPStatus:主要功能用于连接成功之后第五步:获取状态 主要用于读取通讯的当前状态,首先需要知道读取系统_sSocket(Socket引脚),然后触发读取(Execute引脚),读取过程中Busy引脚会一直为On,如果读取成功,Done引脚将会产生一个脉冲上升沿的输出,Busy引脚将会为Off,如果读取错误,Error引脚将会输出,并在ErrorID显示当前错误代码,读取到的状态字将存放在TCPStatus引脚中,当有数据接收到,DatRcvFlag接收标志位引脚会触发,例如:如下图所示:

第六,FB_SktClose:主要功能用于连接成功之后第六步:断开连接 主要用于断开与服务器之间的连接,首先需要知道断开的系统_sSocket(Socket引脚),然后触发接收(Execute引脚),断开过程中Busy引脚会一直为On,如果发送成功,Done引脚将会产生一个脉冲上升沿的输出,Busy引脚将会为Off,如果断开错误,Error引脚将会输出,并在ErrorID显示当前错误代码。例如:如下图所示:

4.现在我们将程序根据上述要求编写完毕下载到PLC中,采用TCPSocket调试助手来测一下看看

第一,连接触发,结果如下图顺利连接成功

第二,清除缓存,结果如下图顺利清除缓存

第三,接收数据,我们采用助手将数据'Hello World'发送给PLC,结果结果如下图,PLC接收成功

第四,发送数据,我们将数据'Hello World'发送给助手,结果结果如下图,助手成功接收到数据

第五,读取接收状态,我们触发读取,结果结果如下图,成功读取到当前处于连接建立成功状态

第六,关闭连接,我们触发关闭,结果如下图,助手上通讯已经断开,说明关闭成功

5.然而我们在编程中如果每次都这么编写重复的程序是多么的繁琐,于是乎我们就需要编写一个固定的客户端功能用于访问服务器,也就是我们所需要的TCP_Client,其工作顺序基本如上面编写顺序,但是其中就需要增加一些逻辑控制功能:

第一,连接工程之后,我们需要不断地判断通讯连接状态。

第二,根据目前编程的要求,我们需要不断接收对方发送的数据,而发送数据只是穿插在其中。

第三,我们连接服务器断开再次恢复之后客户端能主动再次与服务器进行连接。

6.小编跟据上述的要求编写并调试成功了如下图所示的TCP_Client功能,并且已经成功运用到实战中,大家如果有需要的可以扫描右下角的二维码关注公众号找小编获取

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值