文档详情

S7-200SMARTCPU与S7-1200进行TCP通信-SMART做客户端

M****1
实名认证
店铺
DOCX
23.06KB
约11页
文档ID:453533574
S7-200SMARTCPU与S7-1200进行TCP通信-SMART做客户端_第1页
1/11

S7-200SMART与S7-1200之间TCP通信一S7-200SMART作为客户端TCP协议通信TCP通信为面向连接的通信,需要双方都调用指令以建立连接及交换数据S7-200SMART与S7-1200通过TCP通信,在S7-1200调用T-block扌旨令(TCON,TDISCON,TSEND,TRCV),在S7-200SMART调用OpenUserCommunication库指令(TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV)双方的发送和接收指令必须成对出现客户端:主动建立连接,可以理解为主站;服务器:被动建立连接,可以理解为从站丄?注意:S7-200SMART在CPU硬件固件及编程软件版本均升级到V2.2之后才开始支持开放式通信编程软件版本低于V2.2,无OpenUserCommunication库指令;硬件固件低于V2.2,硬件不支持开放式通信协议S7-200SMARTTCP连接资源:8个主动连接资源,8个被动连接资源S7-200SMARTTCP通信数据量:1024字节硬件和软件需求及所完成的通信任务硬件:?③ PC(带以太网卡)④ TP以太网电缆?软件:① STEP7V13SP1Upd9② STEP7Micro/WINSMART(软件版本722)?所完成的通信任务:①S7-200SMART发送10个字节数据:(S7-200SMART侧)VB0〜VB9-->(S7-1200侧)DB4.DBB10〜DB4.DBB19②S7-200SMART接收10个字节数据:(S7-200SMART侧)VB2000〜VB2009<--?(S7-1200侧)?DB4.DBB0〜DB4.DBB9S7-200SMART侧编程(客户机侧组态编程)1.打开STEP7Micro/WINSMART>项目树>指令树>库>OpenUserCommunication?,调用TCP_CONNECT,如图1所示TCP_CONNEC汀//调用TCP_CONNECTEN:SM0.0//使能输入Req:V6010.0//如果Req=TRUECPU启动连接操作。

如果Req?=?FALSE则输出显示连接的当前状态使用上升沿触发Active:SM0.0//TRUE=主动连接;FALSE=被动连接ConnlD:1//CPU使用连接ID(ConnID)为其它指令标识该连接可能的ConnID范围为0到65534IPaddr1~4RemPort:2001//RemPort是远程设备上的端口号远程端口号范围为1到49151LocPort:2000//LocPort是本地设备上的端口号本地端口号范围为1到49151,但存在一些限制DONE:V6000.0//当连接操作完成且没有错误时,指令置位Done输出BUSY:V6000.1//当连接操作正在进行时,指令置位Busy输出ERROR:V6000.2//当连接操作完成但发生错误时,指令置位Error输出STATUS:VB6002//如果指令置位Error输出,Status输出会显示错误代码如果指令置位Busy或Done输出,Status为零(无错误)图1.?指令位置及调用连接指令2.调用TCP_SEND和TCP_RCV指令,如图2所示CALLTCP_SEND〃调用TCP_SENDEN:SM0.5//使能输入Req:SM0.5//如果Req=TRUE,CPU启动发送操作。

如果Req?二?FALSE,则输出显示发送操作的当前状^态ConnID:1//连接ID(ConnID)是此发送操作所用连接的编号使用您为TCP_CONNECT操作选择的ConnlDDataLen:10//DataLen是要发送的字节数(1至U1024)DataPtr:&VB0//DataPtr是指向待发送数据的指针这是指向l、Q、M或V存储器的S7-200SMART指针(例如,&VB100)DoneV6000.6//当连接操作完成且没有错误时,指令置位Done输出BusyV6000.7//当连接操作正在进行时,指令置位Busy输出Error-//当连接操作完成但发生错误V6001.0时,指令置位Error输出Status:VB6004//如果指令置位Error输出,Status输出会显示错误代码如果指令置位Busy或Done输出,Status为零(无错误)CALLTCP_RECV//调用TCP_RECVEN:SM0.0//使能输入,常1接收ConnID:1//CPU将连接ID(ConnlD)用于此接收操作(连接过程中定义)MaxLen:10//MaxLen是要接收的最大字节数(例如,DataPt中缓冲区的大小(1至U1024))。

DataPtr:&VB2000IIDataPtr是指向接收数据存储位置的指针这是指向l、Q、M或V存储器的S7-200SMART指针(例如,&VB100)Done:V6001.1II当接收操作完成且没有错误时,指令置位Done输出当指令置位Done输出时,Length输出有效Busy:V6001.2//当接收操作正在进行时,指令置位Busy输出Error:V6001.3//当接收操作完成但发生错误时,指令置位Error输出Status:VB6005//如果指令置位Error输出,Status输出会显示错误代码如果指令置位Busy或Done输出,Status为零(无错误)Length:VW6006〃Length是实际接收的字节数图2?调用发送和接收指令3•分配库存储区,如图3所示图3.?分配库存储区丄?注意:为保证指令库可以正常工作,分配库存储区的时候,一定不能与程序中使用的其他V区地址重叠!!S7-1200侧硬件组态和编程?(服务器侧组态编程)使用TIAV13SP1Upd9软件Portal视图中,创建新项目添加硬件并命名PLC进入“项目视图”,在“项目树”下双击“添加新设备”,在对话框中选择所使用的S7-1200CPU添加到机架上,命名为PLC_1如图4所示图4.?添加新设备启用时钟位为了编程方便,使用CPU属性中定义的时钟位,定义方法如下:在项目树”>“PLC_1设备组态”中,选中CPU,然后在下面的属性窗口中,“属性”>系“统和时钟存储器”下,将时钟位定义在MB0,如图5所示。

时钟位我们使用M0.5,它是频率为1Hz的脉冲,可以使用它去自动激活发送任务图5.启用时钟位?为PROFINET通信口分配以太网地址图6.?分配IP地址在S7-1200中调用建立连接指令,进入项目树”>“PLC_1”程序块”>“0B1主程序中,从右侧窗口指令”>通信”>开放式用户通信”下调用“TCON指令,配置连接参数,如图7所示图7.?调用TC0N指令并配置连接参数创建用于交换数据的全局DB块及定义变量通过项目树”>“PLC_1程序块”>添加新块”,选择数据块”创建全局DB块,点击“确定”生成数据块如图8所示图8.添加新块通过项目树”>“PLC_1程序块”点击生成的数据块_1”(DB4),右键属性,取消勾选“优化的块访问”如图9所示图9.取消勾选优化的块访问双击生成的“数据块_1”(DB4),定义数组,10个字节用于发送,10个字节用于接收,然后编译数据块结果如图10所示图10.?定义交换数据区在OB1中调用TSEND和TRCV指令块位置及调用方法参考TCON指令的调用,调用结果如图11所示CALLTSEND,DB3〃调用TSEND,使用背景DB块:DB3REQ:M0.5//使用1Hz的时钟脉冲,上升沿激活发送任务ID:1〃连接号,要与连接配置中一致DATAP#DB4.DBX0.0BYTE10//发送数据区的数据,需要注意DB块要选用绝对寻址DONE:M20.0//任务执行完成并且没有错误,该位置1BUSY:M20.1//该位为1,代表任务未完成,不能激活新任务ERROR:M20.2//通信过程中有错误发生,该位置1STATUS:MW22//有错误发生时,会显示错误信息号CALLTRCV,DB5〃调用TRCV,使用背景DB块:DB5EN_R:M1.2〃准备好接受数据,常1接收ID:1〃连接号,要与连接配置中一致DATAP#DB4.DBX10.0BYTE10//接受数据区的数据,需要注意DB块要选用绝对寻址DONE:M30.0//任务执行完成并且没有错误,该位置1BUSY:M30.1//该位为1,代表任务未完成,不能激活新任务ERROR:M30.2//通信过程中有错误发生,该位置1STATUS:MW32//有错误发生时,会显示错误信息号RCVD_LEN:MW34//实际接受数据的字节数图11.?调用发送和接收指令1?接收和发送指令调用需要注意:程序块的ID要与指令TCON中的ID保持一致DATA参数的填写方法(以TRCV程序块为例):1、直接输入:P#DB4.DBX10.0BYTE102、打开数据块,点击数据块右上角浮动按钮移动数据块与OB1并排显示,选中数据块变量名称TCP_RCV”拖拽到TRCV指令DATA参数处,该区域显示为绿色,释放鼠标即可。

通信结果将S7-1200和S7-200SMART项目编译,下载S7-1200侧触发TCON指令的REQ(M10.0置位为1),S7-200SMART侧触发TCP_CONNECT指令的Req(V6010.0置位为1)以建立连接;通信结果如下:。

下载提示
相似文档
正为您匹配相似的精品文档