siemens/西门子授权合作伙伴
全新原装 质量保证 价格优势
公司大量现货!!!
【同样的价格、同样的品牌、给您不一样的服务】
长沙玥励自动化设备有限公司(西门子系统集成商)长期销售西门子S7-200/300/400/1200PLC、数控系统、变频器、人机界面、触摸屏、伺服、电机、西门子电缆等,并可提供西门子维修服务,欢迎来电垂询
联系人: 张亮 (销售经理)
手机 : 13548747710
QQ : 809118149
地址:长沙市岳麓区雷锋大道468号金科**城16-1603室
产品 | |
商品编号(市售编号) | 6ES7214-1AG40-0xB0 |
产品说明 | SIMATIC S7-1200, CPU 1214C, COMPACT CPU, DC/DC/DC, onBOARD I/O: 14 DI 24V DC; 10 DO 24 V DC; 2 AI 0 - 10V DC, POWER SUPPLY: DC 20.4 - 28.8 V DC, PROGRAM/DATA MEMORY: 100 KB |
产品家族 | CPU 1214C |
产品生命周期 (PLM) | PM300:有效产品 |
价格数据 | |
价格组 / 总部价格组 | SK / 212 |
列表价(不含增值税) | 显示价格 |
您的单价(不含增值税) | 显示价格 |
金属系数 | 无 |
交付信息 | |
出口管制规定 | AL : N / ECCN : N |
工厂生产时间 | 12 天 |
净重 (Kg) | 0.412 Kg |
产品尺寸 (W x L X H) | 未提供 |
包装尺寸 | 11.40 x 11.70 x 9.00 |
包装尺寸单位的测量 | CM |
数量单位 | 1 件 |
包装数量 | 1 |
其他产品信息 | |
EAN | 4047623402787 |
UPC | 未提供 |
商品代码 | 85371091 |
LKZ_FDB/ CatalogID | ST72 |
产品组 | 4509 |
原产国 | 德国 |
西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方的设备(扫描枪、打印机等设备进行通讯。因为没有第三方的设备,这里就以超级终端为例介绍自由口通讯。
1.控制系统原理
图1:控制系统原理
2.硬件需求
S7-1200 PLC目前有3种类型的CPU:
1)S7-1211C CPU。
2)S7-1212C CPU。
3)S7-1214C CPU。
这三种类型的CPU都可以连接三个串口通信模版。
本例中使用的PLC硬件为:
1)PM1207电源 ( 6EP1 332-1SH71 )
2) S7-1214C ( 6ES7 214 -1BE30 -0xB0 )
3) CM1241 RS232 ( 6ES7 241 -1AH30 -0xB0 )
3.软件需求
1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)
4.组态
我们通过下述的实际操作来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和超级终端通信。
点击桌面上的“Totally Integrated Automation Portal V10”图标,打开如下图:
图2: 新建S7 -1200项目
首先需要选择“Create new project”选项,然后在“Project name:”里输入PTP;在“Path:”修改项目的存储路径为“C:\”;点击“Create”,这样就创建了一个文件PTP的新项目。创建后的窗口如下图所示:
图3: 新建项目后
点击门户视图左下角的“Project View”切换到项目视图下,如下图:
图4: 切换到项目视图
打开后,在“Devices”标签下,点击“Add new device”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。选择后如下图:
图5: PLC硬件组态
插入CPU后,点击CPU左边的空槽,在右边的“Catalog ”里找到“Communication”下的RS232模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS232模块硬件接口参数,选择RS232模块,在其下方会出现该模块的硬件属性配置窗口, 在属性窗口里有两个选项,一个是“general”;一个是“RS232 interface”。在“General”里包括了此模块的“项目信息”和“订货信息”;而在“RS232 interface”里包括“项目信息”、“端口的配置”、“发送信息的配置”、“接收信息的配置”和“硬件识别号”。在这里我们选择“RS232 interface”,在“端口”配置的选项里,进行端口的参数配置,
波特率为:9600 ;
校验方式:无 ;
数据位为:8 ;
停止位: 1;
硬件流控制:无;
等待时间: 1ms
设置参数如下图:
图6: RS232接口配置
此时确认一下“硬件识别号”为11。
此时,完成了硬件的组态,接下来需要编写串口通讯程序,在这里我们实现两个功能:
一、 S7-1200 发送数据给超级终端;
二、 超级终端发送数据给S7-1200
对于**个功能:S7-1200发送数据给超级终端,实际上是S7-1200是数据的发送方,超级终端是数据的接收方,对于S7-1200需要编写发送程序;而对于超级终端来说,只要打开超级终端程序,配置硬件接口参数与前面S7-1200的端口参数一只即可。
下面的步骤将具体介绍此功能实现的步骤:
①、在PLC中编写发送程序。在项目管理视图下双击“Device”下的程序块下的Main(OB1),打开OB1,在主程序中调用SEND_PTP功能块如下图所示:(注:SEND_PTP在指令库下的扩展指令中通讯指令下)
图7: 调用发送功能块
要对SEND_PTP赋值参数,首先需要创建SEND_PTP的背景数据块和发送缓冲数据块 ,双击“Devices”——> “PLC_1”——>“Program Block ”——“Add new block”,在弹出的串口命名DB_Send_PTP,选择DB块,在Type后选择“SEND_PTP(SFB113)”
图8: 创建发送功能块的背景数据块
插入背景DB后,再插入发送缓冲DB块,重复上面的步骤,只是在选择DB类型为“Global DB”,并去掉“Symbolic access only”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为DB_SEND_BUFF。建好这两个DB块后,双击打开DB_SEND_BUFF预先定义好要发送的数据,如下图所示:
图9:在接收缓冲区中接收到的数据
定义完发送缓冲区后,接下来就可以对SEND_PTP赋值参数,赋值参数后如下图:
图10:发送编程
在上面的编程块里需要注意的是,在指定发送缓冲区时。字符的开始地址是从第二个字节,而不是零字节开始,即是P#DB2.DBX2.0 Byte10 而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200对字符串的存放的格式造成的,S7-1200对字符串的前两个字节的定义**字节是**的字符长度,第二个字节是实际的字符长度。接下来才是存放实际字符。如下图:
图11:String存储格式
上面就完成了程序的编写,对项目进行编译;右击PLC_1项目在弹出的菜单里选择“Complies ALL”选项,这样就对硬件与软件进行编译,如下图:
图12:编译项目
编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“Download to Device”。
②、用串口交叉线连接S7-1200的串口与计算机的串口,打开计算机的超级终端程序,并设置硬件端口参数如下图:
图13:超级终端的端口设置
③、打开OB1功能块在线监控程序,在变量监控表里强制M0.0为1,触发数据的发送,此时在超级终端就会接收到发送的数据,如下图:
图14:在超级终端监控发送来的数据
对于第二个功能:超级终端发送数据给S7-1200,实际上是S7-1200是数据的接收方,超级终端是数据的发送方,对于S7-1200需要编写接收程序;而对于超级终端来说,只要打开超级终端程序,配置硬件接口参数与前面S7-1200的端口参数一致,在界面上输入发送内容即可。
下面的步骤将具体介绍此功能实现的步骤:
①、在PLC中编写发送程序。在项目管理视图下双击“Device”下的程序块下的Main(OB1),打开OB1,在主程序中调用RCV_PTP功能块如下图所示:(注:RCV_PTP在指令库下的扩展指令中通讯指令下)
图15: 调用发送功能块
要对RCV_PTP赋值参数,首先需要创建RCV_PTP的背景数据块和发送缓冲数据块 ,双击“Devices”——> “PLC_1”——>“Program Block ”——“Add new block”,在弹出的串口命名DB_RCV_PTP,选择DB块,在Type后选择“RCV_PTP(SFB114)”
图16: 创建接收功能块的背景数据块
插入背景DB后,再插入接收缓冲DB块,重复上面的步骤,只是在选择DB类型为“Global DB”,并去掉“Symbolic access only”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为DB_RCV_BUFF。建好这两个DB块后,双击打开DB_RCV_BUFF定义接收缓冲区数据的类型,如下图所示:
图17:定义接收缓冲区
定义完接收缓冲区后,接下来就可以对RCV_PTP赋值参数,赋值参数后如下图:
图18:接收编程
在上面的编程块里需要注意的是,在指定接收缓冲区时。字符的开始地址是从第二个字节,而不是零字节开始,即是P#DB2.DBX2.0 Byte10 而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200对字符串的存放的格式造成的,S7-1200对字符串的前两个字节的定义**字节是**的字符长度,第二个字节是实际的字符长度。接下来才是存放实际字符。如下图:
图19:String存储格式
上面就完成了程序的编写,对项目进行编译;右击PLC_1项目在弹出的菜单里选择“Complies ALL”选项,这样就对硬件与软件进行编译,如下图:
图20:编译项目
编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“Download to Device”。
②、用串口交叉线连接S7-1200的串口与计算机的串口,打开计算机的超级终端程序,并设置硬件端口参数如下图:
图21:超级终端的端口设置
在桌面上新建文本文件,打开此文本文件在里面输入“gfdcba”,如下图:
图22:在文本文件下输入要发送的字符串
③、打开变量监控表,强制M0.0,使能接收。然后, 在超级终端里,选择菜单“Transfer”下的“Send Text file”,在打开的窗口里找到桌面 上的文本文件。
图23:通过超级终端发送数据
打开DB_RCV_BUFF数据块,在线查看接收到的数据,如下图:
图23:接收缓冲区中接收到的数据
通过上面的例子实现了简单的应用,在实际的应用过程中,需要按第三方设备的协议进行编写S7-1200的程序。
西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,作为经常与SENTRON PAC3200系列仪表共同使用的PLC,其Modbus通信协议的使用一直在市场上有着非常广泛的应用。本文将主要介绍如何使用Modbus 通信协议来实现S7-1200与SENTRON PAC3200仪表的通信。
1.西门子SENTRON PAC3200 仪表介绍
西门子的SENTRON PAC3200多功能电力仪表是一种用于面板安装的仪表,可用来计量、显示配电系统多达50个测量变量,例如电压、电流、功率、有功功率、频率以及**值、**小值和平均值。中文大屏幕图形液晶显示使用户可远距离读表。PAC3200仪表如下图所示。
图1:仪表PAC3200
1.1 SENTRON PAC3200 MODBUS RTU通信扩展模块介绍
PAC3200多功能仪表的本体没有MODBUS RTU通信的功能,如果希望将PAC3200作为从站连接到MODBUS RTU网络与主站进行数据交换必须选用外部扩展通信模块――SENTRON PAC RS485模块。(注意: PAC RS485 扩展模块使用错误的固件版本时将不能工作
SENTRON PAC3200 电力监测设备的固件版本**应为FWV2.0X。 较早的版本不支持
PAC RS485 扩展模块。)该扩展模块具有下列性能特点:
• 可通过设备正面设置参数
• 即插即用
• 支持 4.8/9.6/19.2 以及 38.4 KBd 通信传输速率
• 通过6针螺钉端子接线
• 不需要外接辅助电源
• 通过模块上的 LED 显示状态
PAC3200 MODBUS RTU通信扩展模块如下图所示。
(1) 通信接线端子
(2) 安装螺钉
(3) 通风口
(4) LED
图2:PAC3200 MODBUS RTU 通信模块
1.2 SENTRON PAC3200 MODBUS RTU通信扩展模块的接线
SENTRON PAC3200 MODBUS RTU通信扩展模块的接线如下图所示
图3:PAC3200 MODBUS RTU 通信模块的接线图
1. 将电缆连接到端子排上相应的螺栓端子。
2. 将电缆屏蔽层的一端连接到保护性接地PE。
3. 将信号公共端连接到保护性接地。 这样也使得扩展模块接地。
4. 在**个和**后一个通信节点上,在正信号和负信号之间接入总线端接电阻器。 为
此,PAC RS485 扩展模块中集成了一个120 Ohm 的总线端接电阻器。 如果需要其它
电阻值,请使用外部总线端接电阻器。 将它连接到**个和**后一个通信节点。
1.3 SENTRON PAC3200 MODBUS RTU通信的方式
1.SENTRON PAC3200设备支持的功能码如下:
FC | 功能码 | 数据类型 | 访问权限 | |
02 | 输入的状态 | 位 | 输入 | R |
03 | 输出寄存器 | 寄存器 | 输出 | R |
04 | 输入寄存器 | 寄存器 | 输入 | R |
06 | 单一输出寄存器 | 寄存器 | 输出 | RW |
10 | 多个输出寄存器 | 寄存器 | - | RW |
2B | 设备识别 | - | - | R |
表1: SENTRON PAC3200设备支持的功能码
R—可读
RW—可读写
2.SENTRON PAC3200 MODBUS RTU 与S7-1200进行通信
S7-1200 PLC可以通过功能代码0x03 和0x04 访问仪表PAC3200的被测量数据。
下表是一些PAC3200 被测量的数据。
表2: SENTRON PAC3200设备的一些被测量数据
2.西门子SENTRON PAC3200 仪表与S7-1200进行通信的接线图
下图是SENTRON PAC3200仪表与S7-1200进行MODBUS RTU 通信的接线图。
图4:S7-1200与PAC3200进行MODBUS RTU 进行通信的接线图
3.硬件需求
S7-1200 PLC目前有3种类型的CPU:
1)S7-1211C CPU。
2)S7-1212C CPU。
3)S7-1214C CPU。
这三种类型的CPU都可以使用MODBUS通信协议通过通信模块CM1241 RS485来实现S7-1200与PAC3200仪表的通信。
本例中使用的PLC硬件为:
1)PM1207电源 ( 6EP1 332-1SH71 )
2) S7-1214C ( 6ES7 214 -1BE30 -0xB0 )
3) CM1241 RS485 ( 6ES7 241 -1CH30 -0xB0 )
4) 模拟器 ( 6ES7 274 -1XH30 -0xA0 )
本例中使用的PAC3200仪表硬件为:
1) PAC3200 (7KM2112-0BA00-3AA0)
2) MODBUS RTU 模块 (7KM9300-0AB00-0AA0)
3) MODBUS 通信电缆 ( 6XV1830-0EH10)
3.软件需求
1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)
4.S7-1200 MODBUS RTU的通信方式
S7-1200作为MODBUS RTU主站的通信方式是由DATA_ADDR 和 MODE 参数来选择 Modbus 功能类型的。
DATA_ADDR(从站中的起始 Modbus 地址): 指定要在 Modbus 从站中访问的数据的起始地址。MB_MASTER 使用 MODE 输入而非功能代码输入。 MODE 和 Modbus 地址范围一起确定实际 Modbus 消息中使用的功能代码。
下表列出了 MB_MASTER 参数 MODE、Modbus 功能代码和 Modbus 地址范围之间的对应关系。
表3: MB_MASTER的MODBUS 功能
5.S7-1200 与PAC3200 进行MODBUS RTU的通信组态
我们通过一个实例来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和PAC3200的MODBUS RTU通信。
5. 1 PLC 硬件组态
首先在Step7 Basic V10.5中建立一个项目,如图1所示。
图5: 新建S7 1200项目
在硬件配置中,添加CPU1214C和通信模块CM1241 RS485模块,如图2所示。
图6: S7 1200硬件配置
在CPU的属性中,设置以太网的IP地址,建立PG与PLC的连接,如下图所示。
图7: S7 1200 IP地址的设置
5. 2 PAC3200参数设置
在SENTRON PAC 电力监测设备的主菜单中,调用“设置”>“RS485 模块”,出现下面的设置画面:
图8: PAC3200 MODBUS RTU 通信参数的设置
1. 地址的设置范围:1-247。本例中设为8。
2. 波特率的设置范围:4800,9600,19200,38400。本例中设为38400。
3. 设置外部通信的数据位、奇偶校验位及停止位:
• 8E1=8 个数据位,奇偶校验位为even, 1 个停止位
• 8O1=8 个数据位,奇偶校验位为odd, 1 个停止位
• 8N2=8 个数据位,无奇偶校验位, 2 个停止位
• 8N1=8 个数据位,无奇偶校验位, 1 个停止位
本例中根据S7-1200 MODBUS MASTER 的参数设置为 8N1。
4. 协议的设置:可选项为:SEABUS,MODBUS RTU。
本例中设为MODBUS RTU。
5.响应时间的设置:注意与波特率的设置相匹配,本例中设为10mS。
6.S71200 与PAC3200的MODBUS RTU通信原理与编程的实现
6. 1 S7 1200 PLC与PAC3200 通过MODBUS RTU 通信的基本原理
S7 1200提供了专用的MODBUS库进行MODBUS通信,如下图所示:
图9: S7 1200提供的专用MODBUS库
西门子PLC S7-1200的模块CM1241 RS232和CM1241 RS485都可以实现MODBUS RTU的通信,本例中采用CM1241 RS485模块来实现与仪表PAC3200的MODBUS RTU 的通信。
S7-1200的MODBUS RTU通信的基本原理是:
首先S7-1200 PLC的程序调用一次MODBUS 库中的功能块MB_COMM_LOAD来组态CM1241 RS232和CM1241 RS485模块上的端口,对端口的参数进行配置。
其次调用MODBUS 库中的功能块MB_MASTER或者MB_SLAVE作为MODBUS 主站或者从站与支持MODBUS协议的设备进行通信。
S7-1200 PLC作为MODUBUS 主站 与PAC3200 进行MODBUS RTU 通信的控制原理如下图所示:
图10:S7-1200 PLC作为MODUBUS 主站 与PAC3200 进行MODBUS RTU 通信原理
S7-1200 PLC还可以作为MODBUS子站与作为MODBUS主站之间的PLC进行MODBUS RTU通信,其控制原理如下图所示:
图11:S7-1200 PLC作为MODBUS子站与作为MODBUS主站之间的PLC进行MODBUS RTU的通信原理
每个S7-1200 CPU**多可带3个通信模块,而每个CM1241 RS485通信模块理论上**多支持247个MODBUS子站。但是在实际应用时需要考虑CPU的性能以及轮循MODBUS子站的时间。
6. 2 S7 1200 PLC与PAC3200通过MODBUS RTU通信的编程
1.MODBUS RTU 通信接口参数的编程
MB_COMM_LOAD 功能块用于组态点对点 (PtP, Point-to-Point) CM 1241RS485 或 CM 1241 RS232 模块上的端口,以进行 Modbus RTU 协议通信。
程序开始运行时,调用一次MB_COMM_LOAD功能块,来实现对MODBUS RTU模块
的初始化组态。
MB_COMM_LOAD执行一次的编程方式采用如下图所示时钟位M10.0来完成。
图12:MB_COMM_LOAD执行一次的编程时钟位的设置
MB_COMM_LOAD功能块的编程如下图所示。
图13:MB_COMM_LOAD功能块的编程
PORT:指的是通过哪个通信模块进行MODBUS RTU通信。
BAUD:指的是和MODBUS子站进行通信的速率。
通信端口的波特率。取值范围为300,600,1200,2400,4800,9600,19200,38400,57600,
76800,115200。
注意:仪表PAC3200的波特率的设置范围:4800,9600,19200,38400。因此上S7-1200
的波特率的设置一定要和仪表PAC3200的波特率的设置相一致。
MB_DB:对 MB_MASTER 或 MB_SLAVE 指令所使用的背景数据块的引用。 在用户程序中放置
MB_SLAVE 或 MB_MASTER 后,DB标识符会出现在 MB_DB 功能框连接的助手下拉列表中。
如“MB_MASTER_DB”或“MB_SLAVE_DB”。
STATUS:端口状态代码。具体含义如下表所示。
表4: MB_COMM_LOAD组态端口的状态代码
2.MODBUS_MASTER功能块的编程
MB_MASTER 功能块允许程序作为Modbus 主站使用点对点 (PtP, Point-to-Point) CM 1241 RS485 或 CM 1241RS232 模块上的端口进行通信。 可访问一个或多个 Modbus 从站设备中的数据。
MB_MASTER功能块的编程如下图所示。
图14:MB_MASTER功能块的编程
REQ:数据发送请求信号。0-无请求。1-请求将数据传送到MODBUS从站。
MB_ADR:通信对象MODBUS从站的地址。有效地址范围为0-247。值 0 被保留用于将消息广播到所有 Modbus 从站。 只有Modbus 功能代码 05、06、15 和 16 是可用于广播的功能代码。
注意:此处MODBUS从站的地址一定要与仪表PAC3200 的MODBUS 地址相一致。
MODE:模式选择。选择范围为:读、写、诊断。
DATA_ADDR:从站中的起始地址: 指定要在 Modbus 从站中访问的数据的起始地址。
特别注意的是:由于仪表PAC3200的寄存器与S7-1200 MODBUS RTU寄存器的不一致
性,读取仪表PAC3200的DATA_ADDR的地址必须从40002开始。
注意: S7-1200的MODBUS RTU通信功能是通过使用“DATA_ADDR”和“MODE”的组合
来选择MODBUS功能码,如下表所示。
表5: S7-1200的MODBUS RTU通信功能码
而仪表PAC3200 MODBUS RTU通信功能则是通过功能码来实现的,如下表所示。
FC | 功能码 | 数据类型 | 访问权限 | |
02 | 输入的状态 | 位 | 输入 | R |
03 | 输出寄存器 | 寄存器 | 输出 | R |
04 | 输入寄存器 | 寄存器 | 输入 | R |
06 | 单一输出寄存器 | 寄存器 | 输出 | RW |
10 | 多个输出寄存器 | 寄存器 | - | RW |
2B | 设备识别 | - | - | R |
表6: 仪表PAC3200 MODBUS RTU通信功能码
因此从上述可以得出如果需要读取输出寄存器的值时,需要使用模式0的03H功能,即
从寄存器40001到49999来读取仪表的数据,但是由于仪表PAC3200的寄存器与S7-1200
MODBUS RTU寄存器的不一致性,读取仪表PAC3200的DATA_ADDR的地址必须从40002开
始。
DATA_LEN:请求访问数据的长度。位数或字节数。
DATA_PTR:数据指针: 指向要写入或读取的数据的 CPU DB 地址。 该DB 必须为
“非仅符号访问”DB 类型。
NDR: 新数据就绪:
•0 – 事务未完成
•1 – 表示 MB_MASTER 指令已完成所请求的有关 Modbus从站的事务。
BUSY:忙:
•0 – 无正在进行的 MB_MASTER 事务
•1 – MB_MASTER 事务正在进行
ERROR:错误:
•0 - 未检测到错误
•1 – 表示检测到错误并且参数 STATUS 提供的错误代码有效。
STATUS:状态代码,如下表所示。
表7: MB_MASTER 进行MODBUS RTU通信的状态代码
在成功地编译下载到在S7-1200 PLC中后,可以从变量表中看到仪表PAC3200的三相相电压数据,如下图所示。
图15:在S7-1200中通过MODBUS RTU通信得到的仪表PAC3200的三相相电压数据
Modbus 主站通信规则:
● 必须先执行 MB_COMM_LOAD 组态端口,然后 MB_MASTER 指令才能与该端口通
信。
● 如果要将某个端口用于初始化 Modbus 主站的请求,则 MB_SLAVE 将不能使用该端
口。MB_MASTER 执行的一个或多个实例可使用该端口。
● Modbus 指令不使用通信中断事件来控制通信过程。 用户程序必须轮询
MB_MASTER 指令以了解传送和接收的完成情况。
● 如果用户程序操作 Modbus 主站并使用 MB_MASTER 向从站发送请求,则用户必须
继续轮询(执行 MB_MASTER)直到返回从站的响应。
● 请从同一个 OB(或 OB 优先等级)调用指定端口的所有 MB_MASTER 执行。
3.MODBUS_SLAVE功能块的编程
由于S7-1200与PAC3200进行MODBUS RTU通信,没有使用MODBUS_SLAVE功能块,因此在此只作简单介绍。
MB_SLAVE 指令允许程序作为 Modbus 从站使用点对点 (PtP, Point-to-Point) CM 1241RS485 或 CM 1241 RS232 模块上的端口进行通信。 Modbus RTU 主站可以发出请求,然后程序通过执行 MB_SLAVE 来响应。
在程序中放置 MB_SLAVE 指令时,必须分配**的背景数据块。 指定MB_COMM_LOAD 指令中的 MB_DB 参数时会用到该 MB_SLAVE 背景数据块名称。
Modbus 通信功能代码(1、2、4、5 和 15)可以在 PLC 输入过程映像及输出过程映像中直接读写位和字。
图16:MB_SLAVE 功能块
MB_ADDR:Modbus RTU 地址(1 到 247):Modbus 从站的站地址。
MB_HOLD_REG:指向 Modbus 保持寄存器 DB 的指针。 保持寄存器 DB 必须为典型的全局 DB。注意:在创建此数据块时,请不要选择“Symbolic address only仅通过符号地址访问”。使用“MB_SLAVE”指令时,
NDR:新数据就绪:
•0 – 无新数据
•1 – 表示 Modbus 主站已写入新数据
DR:数据读取:
•0 – 无数据读取
•1 – 表示 Modbus 主站已读取数据
ERROR:错误:
•0 - 未检测到错误
•1 – 表示检测到错误并且参数 STATUS 提供的错误代码有效。
STATUS:错误代码。如下表所示。
表8: MB_SLAVE 进行MODBUS RTU通信的状态代码
概述
通过以太网可以实现S7-1200与S7-200连接通信。S7-200可以使用 模块(CP243-1或CP 243-1 IT)连接到以太网上,该模块提供S7 通信的功能,既可作为客户机,也可以作为服务器,可以同时与**多8个S7 通信伙伴进行通信;S7-1200 集成以太接口,提供S7 通信的功能,只能作为服务器,可以同时建立3 个通信连接。
下面会用一个实例来描述S7-200 如何与S7-1200建立通信连接。
图1: 实例网络拓扑图
2.硬件需求
•® S7-1214C AC/DC/RLY
•® CPU 224 XP CN DC/DC/DC
•® CP243-1 IT
•® SCALANCE X204-2
•® PG/PC(使用编程电缆)
3.软件需求
•® S7-1200编程软件 STEP 7 Basic V10.5
•® S7-200 编程软件 STEP 7 –MicroWIN V4.0 SP6
4.组态
4. 1 S7-1200 配置
•® 使用STEP 7 Basic 创建项目“comS7200”;
图2: 创建项目
•® 添加S7-1200 设备 CPU1214C;
图3: 添加PLC设备
4. 2 S7-1200 PLC 编程
•® 在Program blocks 下,添加程序块(DB1,DB2,DB3),其中DB1和DB3为符号DB(选择 Symbolic access only),DB3为**地址DB(不选择 Symbolic access only) , S7 通信只支持**地址DB 寻址通信;
图4: 创建**地址DB2
•® 打开全局DB2,输入2个数组类型数据,每个数组有16 个元素;
图5: 在DB2中添加数据
•® 创建两个Watch table(Watch table_1, Watch table_2) 用来观察DB2的实时状态;
•® 将程序下载到PLC CPU1214C 中。
4. 3 S7-200 配置
使用STEP 7-MicroWIN 中以太网向导将CP243-1 IT 配置为 S7 客户端。
•® 通过菜单打开以太网向导工具;
图6: 以太网向导
•® 设置模块位置,可以使用“读取模块”来自动识别;
图7: 模块位置设置
•® 设置模块CP243-1 IT 的IP地址192.168.0.8和子网掩码255.255.255.0;
图8: 设置IP 地址
•® 设置模块的连接数1 ,**多只能设置8个,也就是说S7-200可同时与**多 8 个 S7 通讯伙伴进行通讯;
图9: 设置模块连接数;
•® 建立客户端连接 Connection_1,设置服务器传输层服务接入点 TSAP 03.01和服务器IP地址 192.168.0.18 , TSAP 由 2 个字节组成。**个字节为连接资源。第二个字节为通讯模板的机架号和插槽号;
图10: 配置连接
•® 创建读取数据传输 PeerMessage_1, 读取服务器 16字节 DB2.DBB0~ DB2.DBB15 到VB0~VB15;
图11: 配置数据传输0
•® 创建读取数据传输 PeerMessage_2, 将 16字节VB16~VB31写入服务器DB2.DBB16~ DB2.DBB31 ;
图12: 配置数据传输1
•® 为配置分配存储区;
图13: 分配存储区
4. 4 S7-200 PLC 编程
•® 在STEP 7-MicroWIN 中主程序中,调用子程序ETH0_CTRL;
图14: 调用ETH0_CTRL
其中CP_Ready 为CP 243-1 IT 的状态(0 未准备就绪,1 准备就绪),CH_Ready 为每个通道或 IT 服务的状态(0通道 ,值为256):Error 为出错或报文代码;
•® 程序建立后,需通过PPI连接 将程序块和数据块下载到S7-200 CPU中;
图15: 设置 PG/PC 接口CP5611(PPI)
•® 这样以后就可以通过以太网接口进行下载,将PG/PC接口设为TCP/IP连接;
•® 在STEP 7-MicroWIN 中主程序中,调用子程序ETH0_XFR读取服务器数据,指定相应的连接通道和数据;
图16:调用ETH0_XFR 读取服务器
•® 在STEP 7-MicroWIN 中主程序中,调用子程序ETH0_XFR写入服务器数据,指定相应的连接通道和数据;
图17:调用ETH0_XFR 写入服务器
•® 将程序下载到S7-200 CPU 中;
4. 5 检测 S7-1200 与S7-200 PLC 通信结果
•® 从S7-200 程序中可知,在M10.0 从0变为1时,读取S7-1200的数据DB2.DBB0~DB2.DBB15 到VB0~VB15中;
图18:S7-1200 DB2.DBB0~DBB15
图19:S7-200 VB0~VB15
•® 从S7-200 程序中可知,在M11.0 从0变为1时,将S7-200的数据VB16~VB31 写入S7-1200 的DB2.DBB16~DB2.DBB31中;
图20:S7-200 VB16~VB31
图21:S7-1200 DB2.DBB16~DBB31
5.总结
S7 1200 与 S7-200 通过 S7通信的基本原理如下图所示:
图22:S7-200与S7-1200 通信原理
注意:
CP 243-1 IT 可支持一个或多个远程通讯伙伴的**多 8 个 S7 通讯通道到客户机(**多212 字节)或服务器。CP 243-1 IT 可以根据客户机/服务器原理在每个通道运行。每个通道,每次只能接收、处理或响应(主动响应或被动响应)一个请求。只有在发送响应后,CP 243-1 IT 通讯处理器才能接受其它请求。
硬件S7-1200 常问问题
1.1通过S7-1200 集成以太网接口**多能建立多少个通信连接?
答:15个,分别是: 3 个用于 HMI,1 个用于编程设备, 8 个用于用户程序中的以太网指令, 3 个用于S7连接(S7-1200只能做Server)。
1.2串口模块支持那些通信协议?
答:支持点到点基于字符的串口通信(ASCII),USS协议(RS 485),Modbus RTU 协议(主/从)。
1.3 S7-1200**多支持几个运动轴的控制?
答:2个。由于目前CPU 提供**多2个PTO输出。
1.4 S7-1200在扩展模块上有何限制?
答:由CPU类型决定,**多可扩展8个信号模块(CPU1211C 不能扩展,CPU1212C可扩展2个,CPU1214C可扩展8个)和3个通信模块,另外可在CPU上插入1个信号板。
1.5 MP277/377面板是否可以与S7-1200连接?
答:可以。可以在WinCC flexible 2008 SP1 中使用SIMATIC S7 300/400的驱动建立与S7-1200的连接,但是该功能没有经过系统测试,功能上并没有保证。在WinCC flexible 2008的SP2有可能增加相应的驱动。在通信上也有一些功能限制,它不支持:符号的DB块;数据类型S5TIME和DATE_AND_TIME,还有一些SIMATIC S7-1200新的数据类型;通信的循环模式;S7 诊断消息。使用WinCC flexible 2008 SP1中建立通信连接时,如图1所示在通信驱动中选择“SIMATIC S7 300/400”,在接口中选择“以太网”,访问点应为“S7ONLINE”,将PLC扩展插槽设为“1”,去除“循环操作”的选项。
图1设置通信连接
1.6 S7-1200 如何计算外部电源
答:首先确定CPU可为组态提供多少电流,每个 CPU 都提供了 5 VDC 和 24 VDC 电源:
连接了扩展模块时,CPU 会为这些扩展模块提供 5 VDC 电源。 如果扩展模块的 5
VDC 功率要求超出 CPU 提供的,则必须拆下一些扩展模块直到其电流消耗在要求的范围内。
每个 CPU 都有一个 24 VDC 传感器电源,该电源可以为本地输入点或扩展模块上的
继电器线圈提供 24 VDC。 如果 24 VDC 的电流消耗要求超出 CPU 的输出,则可以增加外部 24 VDC 电源为扩展模块供应 24 VDC。
警告:将外部 24 VDC 电源与 DC 传感器电源并联会导致这两个电源之间有冲突,因为每个电源都试图建立自己**的输出电压电平。该冲突可能使其中一个电源或两个电源的寿命缩短或立即出现故障,从而导致 PLC系统的运行不确定。 运行不确定可能导致死亡、人员重伤和/或财产损失。CPU 上的 DC 传感器电源和任何外部电源应分别给不同位置供电。 允许将多个公共端连接到一个位置。
PLC 系统中的一些 24 V 电源输入端口是互连的,并且通过一个公共逻辑电路连接多个 M端子。 在指定为非隔离时,CPU 的 24 VDC 电源输入、SM 继电器线圈电源输入以及非隔离模拟电源输入即是一些互连电路。 所有非隔离的 M 端子必须连接到同一个外部参考电位。
警告:将非隔离的 M 端子连接到不同参考电位将导致意外的电流,该电流可能导致 PLC 和连接设备损坏或运行不确定。这种损坏或不确定运行可能导致死亡、人员重伤和/或财产损失。务必确保 PLC 系统中的所有非隔离 M 端子都连接到同一个参考电位。
为了更清晰了解这个问题,下面举了个例子: 一个 CPU 1214C AC/DC/继电器型、3 个 SM 1223 8 DC 输入/8 继电器输出和1个SM 1221 8 DC 输入。该实例一共有 46 点输入和 34 点输出。这里需要说明的是CPU 已分配驱动内部继电器线圈所需的功率,计算中无需包括内部继电器线圈的功率要求。
CPU 功率预算 | 5 VDC | 24 VDC |
CPU 1214C AC/DC/继电器 | 1600 mA | 400 mA |
减 | ||
系统要求 | 5 VDC | 24 VDC |
CPU 1214C,14 点输入 | - | 14 * 4 mA = 56 mA |
3 个 SM 1223,5 V 电源 | 3 * 145 mA = 435 mA | |
1 个 SM 1221,5 V 电源 | 1 * 105 mA = 105 mA | |
3 个 SM 1223,各 8 点输入 | 3 * 8 * 4 mA = 96 mA | |
3 个 SM 1223,各 8 个继电器线圈 | 3 * 8 * 11 mA = 264 mA | |
1 个 SM 1221,8 点输入 | 8 * 4 mA = 32 mA | |
总要求 | 540 mA | 448 mA |
等于 | ||
电流差额 | 5 VDC | 24 VDC |
总电流差额 | 1060 mA | -48 mA |
表1 使用电流计算
在本例中的 CPU 为 SM 提供了足够的 5 VDC 电流,但没有通过传感器电源为所有输入和扩展继电器线圈提供足够的 24 VDC 电流。 I/O 需要 448 mA 而 CPU 只提供 400mA。 该安装额外需要一个至少为 48 mA 的 24 VDC 电源以运行所有包括的 24 VDC 输
入和输出。
1.7 S7-1200 有几种运行模式?
答:有三种,分别是:STOP 模式、STARTUP 模式和RUN模式。
在 STOP 模式下,CPU 不执行任何程序,而用户可以下载项目;
在 STARTUP 模式下,执行一次启动 OB(如果存在)。 在 RUN 模式的启动阶段,
不处理任何中断事件;
在 RUN 模式下,重复执行扫描周期。 中断事件可能会在程序循环阶段的任何点发生
并进行处理。处于 RUN 模式下时,无法下载任何项目。
1.8 S7-1200 支持那些上电模式?
答: 支持三种上电模式,分别为:STOP 模式,暖启动后转到 RUN 模式,暖启动后转到断电前的模式。
如图2可在项目视图中选择相应的PLC设备,在设备配置下的CPU属性“Startup”中进行选取。
图2选择上电模式
在暖启动时,所有非保持性系统及用户数据都将被初始化,保留保持性用户数据。
1.9 CPU有哪些存储区?
答:有三个存储区,分别为:
装载存储区(load memory):用于非易失性地存储用户程序、数据和组态。 项目被下载到 CPU 后,首先存储在装载存储区中。 该存储区位于存储卡(如存在)或 CPU 中。 该非易失性存储区能够在断电后继续保持。 存储卡支持的存储空间比 CPU 内置的存储空间更大。
工作存储区(work memory):属于易失性存储器,用于在执行用户程序时存储用户项目的某些内容。 CPU会将一些项目内容从装载存储器复制到工作存储器中。 该易失性存储区将在断电后丢失,而在恢复供电时由 CPU 恢复。
保持性存储区(retentive memory) :用于在断电时存储所选用户存储单元的值。 发生掉电时,CPU 留出了足够的缓冲时间来保存几个有限的指定单元的值。 这些保持性值随后在上电时进行恢复。
那么如何显示当前项目的存储器使用情况,可以右键单击相应 CPU(或其中的某个块),然后从菜单中选择“资源”(Resources) 。
图3项目使用存储器情况
如果要显示当前 CPU 的存储器使用情况,可以双击“在线和诊断”(online and diagnostics),展开“诊断”(Diagnostics),然后选择“存储器”(Memory)。
图4 CPU使用存储器情况
1.10 S7-1200 支持那些数据类型?
答:见下表:
数据类型 | 大 小(bits) | 范围 | 常量输入实例 |
Bool | 1 | 0到1 | TRUE,FALSE,0,1 |
Byte | 8 | 16#00 到 16#FF | 16#12, 16#AB |
Word | 16 | 16#0000 to 16#FFFF | 16#ABCD, 16#0001 |
DWord | 32 | 16#00000000 到16#FFFFFFFF | 16#02468ACE |
Char | 8 | 16#00 到 16#FF | 'A', 't', '@' |
Sint | 8 | -128 to 127 | 123, -123 |
Int | 16 | -32,768 to 32,767 | 123, -123 |
Dint | 32 | -2,147,483,648 到2,147,483,647 | 123, -123 |
USInt | 8 | 0 到 255 | 123 |
UInt | 16 | 0 到 65,535 | 123 |
UDInt | 32 | 0 到 4,294,967,295 | 123 |
Real | 32 | +/-1.18 x 10 到 +/-3.40 x 10 C | 123.456, -3.4, -1.2E+12, 3.4E-3 |
LREAL | 64 | +/-2.2250738585072020 ×10到 +/-1.7976931348623157 ×10 | 12345.123456789. -1.2E+40 |
Time | 32 | T#-24d_20h_31m_23s_648ms 到 T#24d_20h_31m_23s_647ms 存储为 -2,147,483,648`ms 到 +2,147,483,647ms |
T#5m_30s 5#-2d T#1d_2h_15m_30x_45ms |
String | 可变的 | 0 到 254 字节字符 | 'ABC' |
DTL | 12个字节 | **小值: DTL#1970-01-01-00:00:00.0 **值: DTL#2554-12-31-23:59:59.999 999 999 |
DTL#2008-12-16- 20:30:20.250 |
表2 数据类型
1.11 有几种存储卡可供CPU使用,有何作用?
答:有两种,分别为: 2MB 6ES7 954-8LB00-0AA0 和 24MB 6ES7 954-8LF00-0AA0。
注意:CPU 仅支持预格式化的 SIMATIC 存储卡。如果使用 Windows 格式化程序对SIMATIC 存储卡重新进行格式化,CPU 将无法使用该存储卡。在将程序复制到格式化的存储卡之前,请删除存储卡中以前保存的所有程序。
存储卡可作为传送卡或程序卡使用,24MB存储卡还用于升级CPU的固件。
传送卡:可以将卡中的程序复制到 CPU 的内部装载存储器,而无需使用 STEP 7 Basic。 插入传送卡后,CPU 首先擦除内部装载存储器中的用户程序和所有强制值,然后将程序从传送卡复制到内部装载存储器。 传送过程完成后,必须取出传送卡。在密码丢失或忘记密码时 ,可使用空传送卡访问受密码保护的 CPU。 插入空传送卡会删除 CPU 内部装载存储器中受密码保护的程序。 随后可以将新的程序下载到 CPU 中。
程序卡:可用作 CPU 的外部装载存储器。 在 CPU 中插入程序卡将擦除 CPU 内部装载存储器的所有内容(用户程序和所有强制值)。 CPU 然后执行外部装载存储器(程序卡)中的程序。 如果将数据下载到插有程序卡的 CPU,将仅更新外部装载存储器(程序卡)。
SIMATIC MC |
S7-1200 PLC装载区是否有程序 |
结果 |
||
卡类型 | 是否有程序 | SIMATIC MC | 装载存储区 | |
未定义 | 否 | 是 | PLC中的项目 | 空的 |
程序卡 | 是 | 否 | MC卡中的项目 | 空的 |
是 | MC卡中的项目 | 空的 | ||
传输卡 | 是 | --- | MC卡中的项目 | |
--- | MC卡中的项目 |
表3 存储卡应用
1.12如何使用存储卡升级CPU固件?
答:注意:如果使用 Windows 格式化程序对SIMATIC 存储卡重新进行格式化,CPU 将无法使用该存储卡。
可以按以下步骤升级固件:
• 将SIMATIC MC 24M 空卡插入计算机的SD读卡器中,使用Windows 浏览器察看存储卡的内容。如果卡不是空的,可以删除名称为“SIMATIC.S7S”或“FWUPDATe.S7S”的文件夹和“S7_JOB.S7S”文件;
• 从网站(http://support.automation.siemens.com/WW/ )下载S7-1200 CPU 操作系统更新文件,双击更新文件夹,设置SIMATIC MC的根目录为解压路经,开始进行文件展开,在解压结束后,卡中根目录下会有文件夹“FWUPDATE.S7S”和文件“S7_JOB.S7S”;
• 将卡插入CPU 中,如果CPU 处在运行状态,则CPU进入停止模式。CPU上的维护LED将闪烁,这说明卡已经安装。
• 采用以下任一方法开始更新固件:
CPU 重新上电或
使用软件执行STOP模式向RUN 模式转换(CPU将重启)或
使用软件执行MRES 存储卡复位。
这样CPU进入启动(startup)阶段并且进行固件更新。在固件更新过程中,RUN/STOP LED指示灯在绿和橙之间闪烁。当RUN/STOP LED 指示为STOP模式并且MAINT LED 闪烁时,则CPU的固件更新完毕。
• 从CPU 中拔出存储卡;
• 可使用以下方法重新启动CPU使用新固件:
CPU 重新上电或
使用软件执行STOP模式向RUN 模式转换(CPU将重启)或
使用软件执行MRES 存储卡复位。
用户程序和硬件配置在更新固件是不会受影响,在CPU 重新上电后,CPU 将进入启动(startup )状态。
2 软件 STEP 7 Basic V10.5 常问问题
2.1软件安装对操作系统有何要求?
答:Windows XP (Home SP3, Professional SP3),Windows Vista (Home Premium SP1, Business SP1, Ultimate SP1)。
2.2如何对S7-1200进行工厂复位?
答:首先要求CPU中无存储卡,STEP 7 Basic与CPU建立了在线连接。接着可按照以下步骤操作:
在项目视图(project view) 中项目树( project tree) 下打开在线访问(online access);
点击PC与CPU连接的网卡;
双击更新可访问的设备(update accessible devices);在相应的CPU上右击鼠标,选择在线和诊断(online & diagnose);
打开CPU的在线和诊断的视图;
在“功能”文件夹中选择“复位到工厂设置”组;
如果想保持设备的IP地址,选择“保持IP地址”的选择框;
如果想删除IP地址,选择“删除IP地址”;
点击“复位”按钮;
在提示对话框点击“OK”确认。
在检查窗口中的信息列表中显示相应的消息,如果为“The module is reset to its factory settings.”则表示已完成CPU工厂复位工作。
2.3如何对S7-1200 设置IP地址?
答:我们可以使用两种方法对CPU分配IP地址:
方法一:使用“在线和诊断”访问的方式对CPU进行IP设置
在Portal view可以通过 online & Diagnostics 的Accessible devices操作,进入项目树下的在线访问(online access)下,右击所选设备的“online & diagnostics”编辑器(见图5)。在“online and diagnostics”编辑器中有“Assign IP address”的选项,检查MAC地址,确认后设置IP地址及子网掩码,点击“Assign IP address”。
图5 online access 编辑器
图6 online & diagnostics 编辑器
设置完成后,可在检查窗口中察看信息(Info)表格下的消息,通过该消息可确认设置IP是否成功(见图7)。
图7 检查窗口
这种方法适合用于新的CPU 或经过“恢复出厂设置”的CPU。
方法二:通过下载硬件配置的方式
在硬件配置中,对PROFINET 接口的以太网网地址进行设置。
完成组态后,可进行设备下载,如果是**次下载的情况,将进入“Extended download to device ”对话框。勾选显示所有连接设备(Show all accessible devices)选项。
图8 试图建立与设备连接
选择相应设备,点击“Load”进入下载界面。
图9 与设备建立了连接
设备在下载前需要对硬件配置进行编译。
图10 配置编译
图11 编译成功
编译成功之后,点击Load进行下载。
图12 下载完成
下载完成以后,可重新启动CPU。这样就完成了对CPU的硬件配置下载,同时CPU被设置成新的IP地址。在没有路由器的情况下,TCP/IP 通讯要求通讯双方的IP 地址在一个子网内。为了不必在下载不同的CPU 而频繁修改编程设备的IP 地址,STEP7 Basic 在这方面作了一些改进。如果在下载过程中,软件发现目标设备和编程器不在一个子网内,软件会自动为编程器添加一个临时的IP 地址,而这个临时的IP 地址和目标设备是在同一个子网内的,这样就可以在不用修改编程器IP 地址的情况下对非同一IP 子网的设备进行下载。
2.4如何对S7-1200 变量进行强制?
答:S7-1200 只能强制外设I/O,而不强制过程映象区。必须使用watch table进行变量强制。操作步骤如下:
• 建立Watch table,例如 Force Variable;
• 输入需要强制的外设I/O,例如:%I0.1:P,%Q0.1:P;
• 由于监视表默认的工具栏是显示所有修改的列(Show all modify colums) ,点击显示强制列(Show force columns) ;
图12 建立Watch table
• 点击持续监视(monitor all) ,进入在线状态;
图13 进入监视在线状态
• 点击开始强制(start forcing) ,系统会弹出对话框。
图14 提示对话框
• 点击Yes,便可以对外设I/O进行强制了,强制成功有图标显示 。
图15 已强制外设显示
注意:当CPU 中有强制变量时是不能对CPU 下载硬件的,系统会提示"Modifying test functions are active. Thus downloading the hardware configuration is denied?"。
要了解哪些变量被强制,可以在watch table 里使用显示所有强制值工具 (Show all forced value from this CPU)显示已强制的变量。
2.5如何上载S7-1200 硬件基本配置和程序?
答:可按以下步骤操作:
• 在Portal View 视图Start 任务中创建一个新项目,进入First steps 界面;
• 选择配置一个设备(Configure a Device);
• 选择添加新设备(Add new device);
• 选择SIMATIC PLC 下的未指定的CPU 1200 6ES7 2XX-XXXX-XXXX;
• 进入Project view 视图中项目树下PLC设备中的设备视图( Device view ),在“or detect the configuration of the connected device.”中点击 detect ;
图16 设备视图
• 选择相应的PLC,点击Load 便可以上载基本硬件配置了;
图17 检测所有连接的硬件
• 如果编程设备/PC 与PLC 不在一个网段上,会弹出分配IP地址询问对话框,选择 Yes ,软件会为编程设备/PC分配一个临时IP地址 ,如192.168.0.241;
图18 软件为编程设备/PC分配IP地址
• 在项目树下,右击PLC设备,选择离线/在线比较(Compare offline/online);
图19 选择离线/在线编辑器
• 在比较编辑器中,在操作(Action)列下,点击蓝和橙点 直至其为 从设备将对象上载到编程设备/PC(Upload from device)为止;
图20 离线/在线编辑器
• 点击同步在线和离线 按钮,进行上载预览窗口,在操作(Action) 选择继续(Continue)并点击Upload from device上载程序;
图21 上载浏览窗口
• 所有设备上载完成以后,将在设备和程序右侧会有一个绿色圆点,这代表上载成功。
图22 在线与离线设备比较
2.6系统和时钟存储器可以提供哪些功能?
答:可以分别为系统存储器和时钟存储器分配一个非保留的M存储器的字节,使能这些存储器的功能。
图23 系统和时钟存储器
系统存储器具有以下功能:
• 首次扫描( First cycle)位在启动 OB 完成后的**次扫描期间设置为 1。 (执行完**次扫描后,“首次扫描”位将设置为 0。);
• 诊断图形已更改( Diagnostic graph changed )位在 CPU 记录了诊断事件后的一个扫描周期内设置为 1。 在首次执行程序循环 OB 结束后,CPU 才会设置诊断图形已更改位。 在启动 OB 执行期间或首次程序循环 OB 执行期间,用户程序都无法检测到是否出现了诊断更改;
• “始终启用”位始终设置为 1;
• “始终禁用”位始终设置为 0。
被组态为时钟存储器的字节中的每一位都可生成方波脉冲。 时钟存储器字节提供了 8 种不同的频率:
• 10 Hz 时钟
• 5 Hz 时钟
• 2.5 Hz 时钟
• 2 Hz 时钟
• 1.25 Hz 时钟
• 1 Hz 时钟
• 0.625 Hz 时钟
• 0.5 Hz 时钟
CPU 是在从 STOP 模式切换到 STARTUP 模式时初始化这些字节,并且,在 STARTUP和 RUN 模式期间,时钟存储器的位随 CPU 时钟同步变化。
2.7如何对CPU设置保护?
答:CPU 提供了 3 个安全等级:
• 不保护 允许完全访问,没有密码保护;
• 写保护 限制修改(写入)CPU以及更改CPU模式(RUN/STOP),允许CPU 的只访
问、HMI 访问以及 PLC 到 PLC 通信。
• 读/写保护 限制读取 CPU 中的数据、修改(写入)CPU以及更改 CPU 以及更改
CPU模式(RUN/STOP)。允许 HMI 访问和所有形式的 PLC 到 PLC 通信。
可以按以下步骤对CPU设置保护:
• 在设备配置(Device configuration) 中,选择 CPU;
• 在检查窗口中,选择属性(Properties)选项卡;
• 选择保护(Protection) 属性设置保护等级和输入密码。
图24 设置CPU保护
密码区分大小写,每个等级都允许在访问某些功能时不使用密码。 CPU 的默认状态是没有任何限制,也没有密码保护。要限制 CPU 的访问,可以对 CPU 的属性进行组态并输入密码。通过网络输入密码并不会使 CPU 的密码保护受到威胁。受密码保护的 CPU 每次只允许一个用户不受限制地进行访问。密码保护不适用于用户程序指令的执行,包括通信功能。输入正确的密码便可访问所有功能。PLC 到 PLC 通信(使用代码块中的通信指令)不受 CPU 中安全等级的限制。 HMI 功能同样也不受限制。
2.8如何对程序块(OB、FB或 FC)设置保护?
答:要对块设置保护,按以下步骤操作:
• 可从编辑(Edit)菜单中选择“Know how protection” 命令;
图25 设置Know-how protection
• 输入允许访问该块的密码;
图26 设置密码
• 密码设置后,所加密的块的图标会发生变化。
图27 已加密的程序块
密码保护会防止对代码块进行未授权的读取或修改。 如果没有密码,只能读取有关代码块的以下信息:
• 块标题、块注释和块属性;
• 传送参数(IN、OUT、IN_OUT、Return);
• 程序的调用结构;
• 交叉引用中的全局变量(不带使用时的信息),但局部变量已隐藏。
2.9全局的符号DB与**地址DB的区别?
答:在建立全局DB时,如果选择Symbolic access only ,可认为要建立符号DB;如果不选择Symbolic access only ,可认为要建立**地址DB。
图28 创建全局DB
符号DB 只能通过符号名访问,不存在偏移地址,在设置保持时,可以单独设置。
图29 符号全局DB
**地址DB 既可以通过符号访问,也可以通过**地址访问;在打开编辑时可看到“Offset ”偏移地址列。在设置保持时,只能同时设置。
图30 **地址全局DB
相比时,符号DB 在其变量出现数据类型混合时,不会像**地址DB那样消耗存储资源;在插入其它变量也不用考虑程序的调用情况。
2.10如何保持定时器数据?
答:在timer的 instance DB 属性中无法设置保持,可以使用以下两种方法将定时器的实例数据设置成Retain:
方法一 在FB 中应用多重实例DB :
在已创建的FB中添加TON 指令;
图31 在FB中添加TON 函数
在创建函数TON 的实例DB时,选择多重实例类型;
图32 创建实例DB
在FB的接口部分变量声明中,将静态变量下的timer的实例变量设置成Retain.
图33设置变量为Retain
方法二 在全局DB中定义定时器的实例数据:
在全局DB( 符号) 中,建立 一个IEC_Timer 类型的变量,将其设为 Retain;
图34 在全局DB创建变量
在FC 中调用TON 指令,在弹出的调用实例数据的对话框中,选择 Cancel;
图35 在FC中添加TON 函数
手动指定TON 的实例数据。
图36 指定实例数据
由于计数器与定时器的使用方法类似,因此这些方法也适合设置计数器数据为保持性数据。
西门子6ES7214-1AG40-0xB0详细介绍