需求分析
功能实现
数字量阀门控制
系统点表
地址 | 符号 | 变里类型 数据类型 | ||
---|---|---|---|---|
1 | EN | IN | 800L | |
2 | LO.0 | 联锁投切 | IN | BOOL |
3 | L0.1 | 手动开阀 | IN | B00L |
4 | L0.2 | 手动关阀 | IN | 80OL |
5 | L0.3 | 故障复位 | IN | B00L |
6 | L0.4 | 联锁开阀 | IN | B0OL |
7 | L0.5 | 开反馈 | IN | B0OL |
8 | L0.6 | 关反馈 | IN | B0OL |
9 | Lw1 | 开延时设定 | IN | INT |
10 | Lw3 | 关延时设定 | IN | INT |
11 | LD5 | 参数 | IN | DINT |
12 | L9.0 | 开输出 | IN_OUT | B0OL |
13 | L9.1 | 关输出 | IN_OUT | B00L |
14 | L9.2 | 报警 | IN_OUT | B0OL |
地址 | 符号 | 变里类型 | 教据类型 | 注释 | |
---|---|---|---|---|---|
1 | EN | IN | B0OL | ||
2 | L0.0 | 联锁投切 | IN | BOOL | 0年动,1自动 |
3 | L0.1 | 故障复位 | IN | BOOL | |
4 | LD1 | 手动给定 | IN | REAL | 范围0.0~100.0 |
5 | LD5 | 联锁给定 | IN | REAL | 范围0.0~100.0 |
6 | Lw9 | 阀门反馈 | IN | INT | 里程0~27648 |
7 | LW11 | 报警延时设定 | IN | INT | 单位秒 |
8 | LD13 | 参数 | IN | DINT | |
9 | L17.0 | 报警 | IN_OUT | BOOL | |
10 | LW18 | 阀门输出 | oUT | lNT | 0~27648 |
P.S
为什么子程序的输出不正常? 这里首先举例一个子程序SBR_0,该子程序的接口声明一个INT类型的IN变量‘Pressure’和一个BOOL类型的OUT变量‘OPEN’,子程序中只有一个程序段,在程序段1中编写当输入Pressure数值大于500时将输出OPEN置位,如图. 子程序输出不正常 所示。
图. 子程序输出不正常 这样的子程序被调用后,当输入Pressure达到过500时,输出OPEN被置位;但当输入Pressure从未达到过500时,输出OPEN一直保持为一个未知的状态,可能是1,也可能是0。由于子程序的局部变量仅在本次调用时有效,且每次获取到的局部变量资源有一定的随机性,有可能已经具有一个随机的数据存储在该局部变量地址中,因此对于OUT类型的接口变量,必须保证每次调用程序都对其进行写操作,否则就是编程逻辑的不严密。当然,用户也可以考虑使用IN_OUT变量类型代替OUT变量类型。