西门子全国总代理|数控系统总代理商
- 供应商
- 上海跃韦科技集团有限公司
- 认证
- 西门子
- 西门子PLC模块.电机代理
- 全系列
- 西门子变频器通讯电缆代理
- 德国
- 西门子触摸屏DP接头代理
- 联系电话
- 15821196730
- 手机号
- 15821196730
- 销售经理
- 葛辰
- 所在地
- 上海市金山区吕巷镇溪北路59号5幢(三新经济小区)(注册地址)
- 更新时间
- 2024-05-28 10:18
程序功能介绍
通过系统功能sfc 51"rdsysst"(读取系统状态),可以读取系统状态列表或部分系统状态列表,例如指示灯状态,序列号,从站状态等等。
调用sfc51时,通过将值“1”赋给输入参数req来启动读取。如果可以立即读取系统状态,则sfc将在busy输出参数中返回值0。如果busy包含值1,则尚未完成读取功能。
2 读取cpu指示灯
可以通过sfc51读取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)
灯的类型列表如下(不同的cpu会有不同数目的指示灯):
关于系统功能sfc51的更多详情请参阅step 7的在线帮助,或者通过start > simatic>documentation选择手册“system software for s7-300/400 systemandstandard functions”
3 读取profibus dp从站 状态
3.1 编程
首先需要创建一个数据块,用来存放读取出来的状态结果
图4 创建db1,存放读取结果
打开ob1,首先在ob1的临时变量区创建一个变量length,类型设置为struct(结构)
图5 创建名为length的结构变量
图6 创建length的结构变量的两个word成员
szl_id :=w#16#294 //读取从站是否存在
index :=w#16#1
在本例中,p#db1.dbx0.0 byte 500中为每个dp从站(16 x 8 =128)保留一位,地址为address1的dp从站的状态保存在第三个字节的bit 1位中, 地址为address3的dp从站的状态保存在第三个字节的bit3位中,依次类推。如果从站对应的位未被置位,则表明那个dp从站没有通信上或不存在。
展开全文