西门子6ES322-1HF10-0AA0
使用西门子PLC集成的PN口实现S5 兼容通信使用入门
CPU自带的以太网接口可以使用OPEN IE的方式实现如下协议,分别介绍如下:
• TCP
• UDP
• ISO-on-TCP
注意:以下内容任何用户可以免费使用,复制和传递他人,程序的作者及拥有者不负责软件的功能性和兼容性,使用者须自己承担责任,由于内容免费,所以不保证错误的更正和热线支持!
1. TCP通信
1.1通信程序块的准备
如下的通信块可以用来建立TCP通信,您需要把这些程序块拷贝到您的项目中:
1) FB65 "TCON" 用于建立连接,连接时需要UDT65来提供参数
2) FB66 "TDISCON" 用于断开连接
3) FB63 "TSEND" 用于发送数据到S7站点、S5站点、PC站或者第三方设备
4) FB64 "TRCV" 用于从S7站点、S5站点、PC站或者第三方设备接收数据
5) UDT65 "TCON_PAR"存放用户通信参数
6) FC97 "SET_TCP_ENDPOINTx" 用于修改UDT65类型变量内通信对象参数
FB63,64,65,66这四个功能块可以在Standard Library -> Communication Blocks里得到:
图 01: FB63,64,65,66
FC97与UDT65需要从如下项目中打开获得:
( 42 KB )
图 02: FC97与UDT65
首先建立一个S7-300或者S7-400站,拷贝如上程序块到项目中。
1.2通信程序编写
1.2.1 生成数据块
在程序中生成一个DB块,块号不限(本例为DB101),在块中建立变量DB_VAR,类型为UDT65
图 03: 生成UDT65类型变量
1.2.2在OB1中编程
首先调用FC97 "SET_TCP_ENDPOINTx"
图 04: 调用FC97
FC97参数说明如下:
• ID: 连接ID
• DEV_ID
DEV_ID = B#16#1 用于本PLC型号(注意不是通信对方)为 IM151-8 PN/DP CPU
DEV_ID = B#16#2 用于本PLC型号(注意不是通信对方)为 CPU31x-2PN/DP或IM154-8 CPU
DEV_ID = B#16#3 用于本PLC型号(注意不是通信对方)为 CPU319-3PN/DP
DEV_ID = B#16#5用于本PLC型号(注意不是通信对方)为 CPU41x-3PN/DP
• ACTIVE: 主动或是被动建立连接,通信双方必须一个主动,一个被动
• LOC_PORT: CPU本地的TCP端口
• REM_PORT: 通信伙伴的TCP远程端口
• IP_ADDR1 ... IP_ADDR4: 通信伙伴的IP地址
• V23:本机是否是CPU31x-2PN/DP FIRMWARE 版本为2.3或以下版本
• CON_DB:用UDT65生成的变量
图05: 调用FB65 "T_CON"
调用FB65 ,通过提供给FB65的输入参数"REQ"一个上升沿来建立连接。 “ID"为连接ID,“CONNECT"参数填写用UDT65生成的变量, 连接建立后会一直保持,直到调用FB66 "TDISCON"断开连接,CPU停止或者断电。
1.2.3 调用发送和接收程序
图06: 调用 FB63,64发送接收数据
FB63 "TSEND" 发送请求依靠输入参数"REQ"的上升沿来实现,如果“BUSY"位为true时不要触发"REQ"。输出参数 "DONE", "ERROR" 和 "STATUS" 用于评估工作的情况。
FB64 "TRECV" 用于接收数据,EN_R始终为true, “ID “填写连接ID,"DATA"填写接收数据区,输出参数"NDR" 用于表示新的数据已经收到,输出参数"LEN" 表示接收的数据长度。
1.2.4断开连接
调用FB66 "TDISCON",“ID “填写连接ID,输入参数"REQ"的上升沿来实现断开连接操作。
图 07: 调用FB66 "TDISCON"
2. UDP通信
2.1通信程序块的准备
如下的通信块可以用来建立UDP通信,您需要把这些程序块拷贝到您的项目中:
1) FB65 "TCON" 用于建立连接,连接时需要UDT65来提供参数
2) FB66 "TDISCON" 用于断开连接
3) FB67 "TUSEND"用于发送数据到S7站点、S5站点、PC站或者第三方设备
4) FB68 "TURCV"用于从S7站点、S5站点、PC站或者第三方设备接收数据
5) UDT65 "TCON_PAR"存放用户通信参数
6) UDT66 "TADDR_PAR"存放用户通信参数
7) FC95"SET_UDP_ENDPOINT"用于建立本地UDP通信参数
8) FC96"SET_UDP_REMOTE"用于建立远程UDP通信参数
FB65,66,67,68这四个功能块可以在Standard Library -> Communication Blocks里得到:
图 08: FB65,66,67,68
西门子6ES7314-6BH04-0AB0参数详细
ET200Pro系列产品做为西门子分布式IO系列产品中的一种,具有IP67的防护等级,成为特殊行业应用的主要产品之一。同时,ET200Pro还提供了故障安全模板:F-DI/F-DO以及电机启动器(MotorStarter)、故障安全型变频器(F-FC)等,满足了行业中的故障安全应用的需求。本文将主要介绍ET200Pro安全型变频器的调试和使用的方法。
1 ET200Pro安全系统介绍
与ET200S系统类似,ET200Pro也提供了全系列的故障安全模板。
1) 故障安全型输入/输出模板(F-DI/F-DO)
ET200Pro的故障安全型输入/输出的模板的使用与ET200M,ET200S等分布式IO的安全模板使用方法相同。
2)电机启动器(MotorStarter)
ET200Pro的电机启动器模板(MotorStarter)中,提供了一些特殊的模板,比如F-RSM和ASM-400,电机启动器模板(MotorStarter)如果配合F-RSM和ASM-400使用可以达到SIL3(Cat.4)的安全等级(图1)。
图1 故障安全型电机启动器(MotorStarter)系统配置(Cat.4)
具体配置列表请参照手册:SIMATIC ET 200pro Motor starters
3)故障安全型变频器(F-FC)
ET200Pro F-FC是一款嵌入在ET200Pro系统中的紧凑型的故障安全型变频器。工作电压为3 AC 400V 50/60Hz,连接3相交流电机,1.1KW,温度允许的情况下,可以连接1.5KW电机。
该变频器可以通过PROFIBUS/PROFINET的接口模板进行连接调试,也可以使用光纤转串口的电缆进行连接。
ET200Pro变频器需要与前面提到的电机启动模块中的特殊模块一起使用来对其关断信号进行评估,因而系统中需要F-Switch 或F-RSM(图2)。
图2 故障安全变频器与F-RSM的配置
其中主要的模板包括:
③接口模板
可以连接变频器模板的接口模板包括:
1) IM154-4 PN HF Cu V6.0 (6ES7 154-4AB10-0AB0)
2) IM154-2 DP HF (6ES7 154-2AA00-0AB0)
④F-RSM或者F-SWITCH
⑤故障安全型变频器(F-FC)
⑥终端模块
到FX2系列的plc,其输出的方式有3种形式,即继电器、双向可控硅、晶体管。 从FX3开始之后的PLC,只有继电器和晶体管2种输出形式了。 无疑继电器输出形式为普遍,因为它相对于其它2种形式的输出驱动负载的能力更强。例如我还记得早的F1系列产品,继电器输出型据资料介绍可以驱动三菱160A的接触器(~220V线圈电压)。或者说它比另外2种“皮实”,不容易因过载而很快损坏,直接说就是不容易“烧坏”。 可控硅输出的我在二十多年前用过,由于比继电器输出的抗过载能力弱,我记得当时在设计时每一路输出加了熔断器接线端子后驱动外电路的(液压系统)电磁阀。熔芯开始用1A的,但容易在起动电磁阀时烧毁,后改用2A的。 不管是继电器输出还是可控硅输出,当驱动电气柜内的元件,例如接触器一类,由于是在柜内,可以看到、听到(运行状况),所以工作条件一般是所谓可控的。但是在现场的元件,例如气动、液压的电磁阀之类,就不大容易观察到。由于动力气、液压油的不干净,或者有些国产电磁阀刚用的时候尚可,久了就容易出毛病。或是由于现在的电器市场是鱼目混珠,买到用到的干脆是“赝品”。或没有达到IP56防护等级的元件直接用在露天(非常常见),阀芯动作不能到位,引起电流加大,都容易使PLC的输出点损坏。特别是可控硅输出型。所以是否这也是自FX的3系列及之后就不在出可控硅输出型的原因 之一呢? 晶体管输出型的带载能力弱,是容易被烧毁输出点的。但是要特别注意到许多PLC的特殊功能跟晶体管输出有关。也就是说,你必须要用晶体管输出型的PLC才有这些功能。例如,你需要脉冲输出的,需要输出脉冲定位的,还有注意到一些特殊的指令能够拓展总的输入输出点数。小型PLC大到256点(总入出),如果用到矩阵指令,用8入8出就可以形成8*8=64点的输入,这样总的入出点数拓展到300点左右。 PLC与其它元件之间(主要是可编程的元件如变频器)通过晶体管输出型互相耦合如果接线无误的话,理论使用寿命是无限的。这就又要联系到漏型的输出匹配(其它元件漏型)输入,源型输出匹配(其它元件源型)输入。PLC的输入与其它元件的输出匹配也如此。 晶体管输出驱动DC24V继电器,(再通过继电器)驱动其它输出为保险。还要注意到当晶体管由导通到截止(1到0)由于直流的拉弧现象继电器应有续流二极管(有些继电器自带),没有的就要加续流二极管,如果自带就有继电器线圈的正反接线问题,反了就起不到续流作用,有时甚至断不开负载。 不管是PLC中3种输出的哪种形式,它们是几点输出有一个“共点”,这是不可分开的。所以你又要分配不同“共点”下对应的输出点去分组,分别对应不同的子系统比较方便。 |