详细介绍
西门子SM431
SIMATIC S7-400,模拟输入 SM 431,非隔离 16 模拟输入,分辨率 13 位 +/-10V,+/-20mA,4 - 20mA 20 ms 转换时间
SIMATIC S7-400
西门子S7-400 PLC是用于中、高档性能范围的可编程序控制器。SIMATIC S7-400PLC的主要特色为:*的处理速度、强大的通讯性能和的CPU资源裕量。
===========================================
(SIEMENS)上海非俗工控自动化设备有限公司(西门子分销商)
颜家钊(销售工程师)185 7050 2115 (24小时)
公司常年备货,以诚信为公司的经营理念,以品质来取得客户的认可,假一罚十,欢迎广大客户。
===================================================
6ES7431-1KF00-0AB0SIMATIC S7-400,SM 431模拟量输入模块,光隔离,8 AI,13 位分辨率,U/I/RESIST. |
1. 问题描述
在S7-400中使用功能完善的FC或FB,在更换调用OB块后发生本地数据分配错误,如图一所示。
图 1
2. 故障原因
从诊断缓冲区故障描述可以看到该故障是由循环中断OB34触发,打开项目交叉索引查看程序结构如图2,OB34和OB35中都调用了FC1,而FC1需要使用512字节的本地数据区,这些本地数据区由调用OB动态分配。项目中OB34和OB35所需使用的大本地数据为534字节。
图 2
在硬件组态中查看CPU属性内存页面(图3),可以看到CPU为各优先级预分配的本地数据区大小。
图 3
查看CPU属性循环中断页面(图4)中可查到OB34优先级为11,OB35优先级为12,所以OB35本地数据区大小默认为758字节,OB34本地数据区大小默认为256字节。由此可得知故障原因是由于CPU为OB34预分配的本地数据区太小(256<534)。
图 4
3. 解决方法
方法一:将FC1在本地数据区足够大的OB中调用,例如OB33优先级10,本地数据默认758字节。
方法二:将优先级11的本地数据区增大。CPU的本地数据大值根据CPU型号不同而不同,具体参考《SIMATIC S7-400 S7-400自动化系统,CPU规格》
![]() | 6ES7431-0HH00-0AB0SIMATIC S7-400,模拟量输入SM 431,非隔离16 AI,分辨率13位,+/-10V,+/-20MA,4 - 20MA,20 MS模块升级 |
| |||
![]() | 6ES7431-1KF00-0AB0SIMATIC S7-400,SM 431模拟量输入模块,光隔离,8 AI,13 位分辨率,U/I/RESIST. |
| |||
![]() | 6ES7431-1KF10-0AB0SIMATIC S7-400,SM 431模拟量输入模块,光隔离,8 AI,14 位分辨率,U/I/RESIST./THERMOEL/PT100 |
| |||
![]() | 6ES7431-1KF20-0AB0SIMATIC S7-400,SM 431模拟量输入模块,光隔离,8 AI,14 位分辨率,U/I/RESIST.0.416 MS 扫描时间 |
| |||
![]() | 6ES7431-7KF00-0AB0SIMATIC S7-400,模拟量输入SM 431,8AI;16 位分辨率,U/I/THERMOEL,光隔离,公共点,DIAGN ,报警,20 MS模块升级 |
| |||
![]() | 6ES7431-7KF10-0AB0SIMATIC S7-400,模拟量输入SM 431,8AI;16 位分辨率,RESIST./PT100/NI100,光隔离,诊断 ,报警,20 MS模块升级 |
| |||
![]() | 6ES7431-7QH00-0AB0SIMATIC S7-400,SM 431模拟量输入模块,光隔离,16 AI,16 位分辨率,U/I/RESIST./THERMOEL./PT10 0,报警,诊断 |
1 SFC 51简介
1.1 程序功能介绍
通过系统功能SFC 51 "RDSYSST" (读取系统状态),可以读取系统状态列表或部分系统状态列表,例如指示灯状态,序列号,从站状态等等。
调用SFC 51时,通过将值“1”赋给输入参数REQ来启动读取。如果可以立即读取系统状态,则SFC将在BUSY输出参数中返回值0。如果BUSY包含值1,则尚未完成读取功能。
表1 SFC51参数说明
参数 | 描述 | |
REQ | 输入参数 | REQ = 1:启动处理 |
SSL_ID | 输入参数 | 将要读取的系统状态列表或部分列表的ID号 |
INDEX | 输入参数 | 部分列表中对象的类型或编号。 |
RET_VAL | 输出参数 | 如果执行SFC时出错,则RET_VAL参数 |
将包含错误代码。 | ||
BUSY | 输出参数 | TRUE:尚未完成读取。 |
SSL_HEADER | 输出参数 | LENTHDR是SSL列表或SSL部分列表的数据记录的长度。 |
? 如果仅读取了SSL列表的标题信息,则N_DR包含属于它的数据记录数。 | ||
? 否则,N_DR包含传送到目标区域的数据记录数。 | ||
DR | 输出参数 | SSL列表读取或SSL部分列表读取的目标区 |
域: | ||
? 如果仅读取了SSL列表的标题信息, | ||
则不能评估DR的值, | ||
而只能评估SSL_HEADER的值。 | ||
? 否则,LENTHDR和N_DR的乘积将指 | ||
示已在DR中输入了多少字节。 |
西门子SM431模拟量模块
2 读取CPU指示灯
可以通过SFC 51读取CPU的指示灯状态,使用的SSL_ID参数为16#74(16#19)读取全部指示灯状态 或者16#174(16#119)读取单个指示灯状态
2.1 编程
首先需要创建一个数据块,用来存放读取出来的指示灯状态结果
图1 创建DB1,存放读取结果
打开OB1,在OB1的临时变量区创建一个变量length,类型设置为Struct(结构)
图2 创建名为length的结构变量
双击length变量,进入结构变量成员定义,创建两个word类型的变量,本例中分别为size和number:
图3 创建length的结构变量的两个word成员
编写SFC51程序:
CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#74 //读取全部指示灯状态
INDEX :=W#16#0
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //结果输出到DB1数据块中
DB1存放的结果即为模块的指示灯状态,每个指示灯有4个字节的长度来描述。
前两个字节表示灯的类型(见表二),表示是SF灯还是BF灯等等。
第三个字节表示灯是亮还是灭,如果为1则灯亮,如果为0则灯的状态是灭。
第四个字节表示灯是否闪烁,0表示不闪,1表示正常闪烁(2hz),2,表示慢闪(0.5hz)
西门子中国总代理商 西门子PLC一级代理商 西门子中国代理商 西门子一级代理商 西门子变频器一级代理商 西门子模块一级代理商
承诺一:1、保证全新*
承诺二:2、保证安全准时发货
承诺三:3、保证售后服务质量
流程一:1、客户确认所需采购产品型号
流程二:2、我方会根据询价单型号查询价格以及交货期,拟一份详细正规报价单
流程三:3,客户收到报价单并确认型号无误后订购产品
流程四:4、报价单负责人根据客户提供型号以及数量拟份销售合同
流程五:5、客户收到合同查阅同意后盖章回传并按照合同销售额汇款到公司账号
流程六:6、我公司财务查到款后,业务员安排发货并通知客户跟踪运单