6ES72881ST200AA0西门子CPU模块ST20
6ES7288-1ST20-0AA0
SIMATIC S7-200 SMART,CPU ST20, 标准 CPU,DC/DC/DC, 机载 I/O: 12 个 24V DC 数字输入;8 DO 24V DC; 电源:直流 20.4-28.8V DC, 程序存储器/数据存储器 20 KB
6ES72881SR200AA0 S7-200 SMART,CPU SR20,标准型 CPU 模块,继电器输出,220 V AC 供电,12 输入/8 输出
6ES72881ST200AA0 S7-200 SMART,CPU ST20,标准型 CPU 模块,晶体管输出,24 V DC 供电,12 输入/8 输出
6ES72881SR300AA0 S7-200 SMART,CPU SR30,标准型 CPU 模块,继电器输出,220 V AC 供电,18 输入/12 输出
6ES72881ST300AA0 S7-200 SMART,CPU ST30,标准型 CPU 模块,晶体管输出,24 V DC 供电,18 输入/12 输出
6ES72881SR400AA0 S7-200 SMART,CPU SR40,标准型 CPU 模块,继电器输出,220 V AC 供电,24 输入/16 输出
6ES72881ST400AA0 S7-200 SMART,CPU ST40,标准型 CPU 模块,晶体管输出,24 V DC 供电,24 输入/16 输出
6ES72881SR600AA0 S7-200 SMART,CPU SR60,标准型 CPU 模块,继电器输出,220 V AC 供电,36 输入/24 输出
6ES72881ST600AA0 S7-200 SMART,CPU ST60,标准型 CPU 模块,晶体管输出,24 V DC 供电,36 输入/24 输出
6ES72881CR200AA1 S7-200 SMART,CPU CR20s,经济型 CPU 模块,继电器输出,220 V AC 供电,12 输入/8 输出
6ES72881CR300AA1 S7-200 SMART,CPU CR30s,经济型 CPU 模块,继电器输出,220 V AC 供电,18 输入/12 输出
6ES72881CR400AA1 S7-200 SMART,CPU CR40s,经济型 CPU 模块,继电器输出,220 V AC 供电,24 输入/16输出
6ES72881CR600AA1 S7-200 SMART,CPU CR60s,经济型 CPU 模块,继电器输出,220 V AC 供电,36 输入/24 输出
6ES72881CR400AA0 S7-200 SMART,CPU CR40,经济型 CPU 模块,继电器输出,220 V AC 供电,24 输入/16 输出
6ES72881CR600AA0 S7-200 SMART,CPU CR60,经济型 CPU 模块,继电器输出,220 V AC 供电,36 输入/24 输出
6ES72882DE080AA0 S7-200 SMART,EM DE08,数字量输入模块,8 x 24 V DC 输入
6ES72882DE160AA0 S7-200 SMART,EM DE16,数字量输入模块,16 x 24 V DC 输入
6ES72882DR080AA0 S7-200 SMART,EM DR08,数字量输出模块,8 x 继电器输出
6ES72882DT080AA0 S7-200 SMART,EM DT08,数字量输出模块,8 x 24 V DC 输出
6ES72882QR160AA0 S7-200 SMART,EM QR16,数字量输出模块,16 x 继电器输出
6ES72882QT160AA0 S7-200 SMART,EM QT16,数字量输出模块,16 x 24 V DC 输出
6ES72882DR160AA0 S7-200 SMART,EM DR16,数字量输入/输出模块,8 x 24 V DC 输入/8 x 继电器输出
6ES72882DT160AA0 S7-200 SMART,EM DT16,数字量输入/输出模块,8 x 24 V DC 输入/8 x 24 V DC 输出
6ES72882DR320AA0 S7-200 SMART,EM DR32,数字量输入/输出模块,16×24 V DC 输入/16 x 继电器输出
6ES72882DT320AA0 S7-200 SMART,EM DT32,数字量输入/输出模块,16 x 24 V DC 输入/16 x 24 V DC 输出
6ES72883AE040AA0 S7-200 SMART,EM AE04,模拟量输入模块,4 输入
6ES72883AE080AA0 S7-200 SMART,EM AE08,模拟量输入模块,8 输入
6ES72883AQ020AA0 S7-200 SMART,EM AQ02,模拟量输出模块,2 输出
6ES72883AQ040AA0 S7-200 SMART,EM AQ04,模拟量输出模块,4 输出
6ES72883AM030AA0 S7-200 SMART,EM AM03,模拟量输入/输出模块,2 输入/ 1 输出
6ES72883AM060AA0 S7-200 SMART,EM AM06,模拟量输入/输出模块,4 输入/ 2 输出
6ES72883AR020AA0 S7-200 SMART,EM AR02,热电阻输入模块,2 通道
6ES72883AR040AA0 S7-200 SMART,EM AR04,热电阻输入模块,4 通道
6ES72883AT040AA0 S7-200 SMART,EM AT04,热电偶输入模块,4 通道
6ES72887DP010AA0 S7-200 SMART,EM DP01,Profibus-DP从站扩展模块
6ES72880CD100AA0 PM207电源,输入: 120/230 V AC (88-370 V DC),输出: 24 V DC/3 A
6ES72880ED100AA0 PM207电源,输入: 120/230 V AC (88-370 V DC),输出: 24 V DC/5 A
6ES72886EC010AA0 S7-200 SMART I/O扩展电缆,长度1米
6ES72885CM010AA0 S7-200 SMART,SB CM01,通信信号板,RS485/RS232
6ES72885DT040AA0 S7-200 SMART,SB DT04,数字量扩展信号板,2 x 24 V DC 输入/2 x 24 V DC 输出
6ES7288E010AA0 S7-200 SMART,SB AE01,模拟量扩展信号板, 1 路模拟量输入
6ES7288Q010AA0 S7-200 SMART,SB AQ01,模拟量扩展信号板,1 路模拟量输出
6ES72885BA010AA0 S7-200 SMART,SB BA01,电池信号板,支持普通纽扣电池
6AV66480CC113AX0 "SMART LINE V3,SMART 700 IE V3,7 英寸宽屏,
64 K 色真彩显示,集成RS422/485串口、工业以太网接口、USB 2.0 host接口"
6AV66480CE113AX0 "SMART LINE V3,SMART 1000 IE V3,10.1 英寸宽屏,
64 K 色真彩显示,集成RS422/485串口、工业以太网接口、USB 2.0 host接口"
由于工作需要,我对S7-1200的各种通信方式进行了学习,在与客户交流问题的过程中,对TCP通信的使用及咨询Z为广泛,了解S7-1200 TCP通信的数据交互过程能更好的帮助客户理解TCP及解决在使用过程中出现的问题。
一、TCP连接的建立
TCP 是一种可靠的连接通信。在组态TCP时需要指定一方为客户端一方为服务器,为了建立连接,首先需要在服务器端调用并触发TCON 指令,使其处于listen状态监听客户机发出的SYN连接请求,之后,客户机调用并触发TCON指令,发出SYN请求建立连接,服务器端响应该请求通过“三报文握手”建立连接。如下图可见(S7-1200 IP:192.168.0.212),S7-1200的MSS(分段长度)为1460字节。
![](http://item.yiqi.com/pic/ConPic/2/6369946835721369661254914.jpg)
二、TCP连接的中断
S7-1200 通过TDISCON指令取消TCP的连接,与互联网之间的TCP“四报文挥手”取消连接不一样的是,S7-1200 通过在报文置位RST来复位TCP连接,对方无需发出ACK响应。个人认为,此方式的好处在于能够立即中断连接,再次建立连接时也省去了常规时的FIN_WAIT_2及TIME_WAIT的等待过程。
![](http://item.yiqi.com/pic/ConPic/2/6369946837182318964550351.jpg)
三、数据的发送
S7-1200 通过TSEND 发送指令,当然,前提是TCP已建立连接,在该指令中当输入引脚LEN=0时,发送的数据为DATA指令的区域长度;而当LEN≠0时,发送的数据长度为LEN指定的长度,当然,LEN的大小不能超过DATA指定的区域长度。当上升沿触发TSEND指令时,PLC建立一个上面指定长度的发送buffer 将数据Copy至 TCP 发送buffer中通过网卡将数据发送出去。
![](http://item.yiqi.com/pic/ConPic/2/6369946839119839154636189.jpg)
![](http://item.yiqi.com/pic/ConPic/2/6369946839915156745999476.jpg)
从上图可以看出,发送DB为20字节,当LEN=0时,一条发送长度为20,当修改LEN值为10或15时,发送长度相应地为10或15字节,共进行5此发送,tcp_send为DONE信号的计数为5次。
四、数据的接收
S7-1200通过TRCV指令接收数据,其LEN用途与TSEND一致,当上升沿触发TRCV指令时,PLC建立一个指定大小的buffer将数据从TCP的接收buffer 传送过来, TCP的接收buffer 相应地释放相同大小的空间。如果接收的数据长度小于接收buffer的长度,无论触发多少次TRCV指令,数据都不会显示在DB中;如果接收的数据长度大于接收buffer的长度,则在一次上升沿触发TRCV时建立buffer并导入TCP接收buffer中等长的数据,TCP接收buffer释放等长空间,第二次触发TRCV指令时buffer数据传至CPU应用。即,首次触发TRCV建立应用接收buffer并导入TCP接收buffer数据,二次触发数据从应用buffer传至应用使用。下图测试PLC的接收DB为500字节(NDR为TRCV输出NDR信号的计数值)。
![](http://item.yiqi.com/pic/ConPic/2/6369946846476136237777528.jpg)
从上图可见,分六次每次发送100字节,TCP接收buffer不断被占用,当一次上升沿触发TRCV指令时,tcp buffer中的数据传至应用buffer,TCP buffer释放500字节,这点从 keep-alive的反馈窗口值8092可以看出,再次上升沿触发TRCV指令时,TRCV完成数据传输,NDR计数为1;再次发送100字节,TCP buffer的窗口变为7992。
当采用ADHOC模式时,如下图所示,分三次每次发送100字节,一次上升沿触发TRCV时,根据keep-alive反馈窗口值为8192,即TCP buffer数据进入PLC应用buffer中,再次上升沿触发TRCV,TRCV接收数据,NDR计数为1,DB区显示接收数据。
![](http://item.yiqi.com/pic/ConPic/2/6369946849977721145574313.jpg)
当不采用ADHOC模式时,如下图所示,分四次每次发送100字节,一次上升沿触发TRCV指令时,400字节数据从TCP buffer进入PLC应用buffer中,从keep-alive窗口值可见TCP buffer已全部释放,第二次上升沿触发TRCV指令时,NDR计数依旧为0,DB区无数据,当再次发送100字节后,上升沿触发TRCV指令,NDR计数为1,DB区数据显示接收值。
此外,在TCP接收buffer满时,还会有Nagle算法反馈接收窗口变化,即当窗口的值过小时不会将此窗口反馈给TCP 发送端 使TCP send buffer数据不能发送,直至TCP 接收buffer 的空间足够接收满足MSS大小的数据或者达到buffer一半大小的空间时,才会更新接收窗口值使发送端能够发送数据。
![](http://item.yiqi.com/pic/ConPic/2/6369946851518356001214799.jpg)
如上图所示,当发送数据共8500字节将TCP接收buffer占满时,接收端反馈窗口值为0,禁止发送端继续发送数据,当两次上升沿触发TRCV指令时,NDR为1,报文4502显示TCP 接收buffer 空闲窗口为500字节,但在报文4912中Win的值仍为0;继续两次上升沿触发TRCV指令,NDR为2,报文6259显示TCP接收buffer有1000字节的空闲,但在报文7586的反馈报文中Win依然为0。
直至多次触发至Win为1500(不会立即更新,需要等到探测报文时间到达才会更新)或空闲长度比较大时才会继续传输未完的数据。见下图,报文9875和9744。
![](http://item.yiqi.com/pic/ConPic/2/6369946852716801173510112.jpg)
综上所述,S7-1200的TCP通信遵循了TCP的协议规范,其MSS为1460字节,TCP 接收Buffer为8192字节,根据上面的各种测试,建议在数据发送和接收过程中保持发送和接送DB保持同样的长度。
6ES72881ST200AA0西门子CPU模块ST20