cyh1986
级别: 家园常客
精华主题: 0
发帖数量: 370 个
工控威望: 744 点
下载积分: 737 分
在线时间: 302(小时)
注册时间: 2009-04-28
最后登录: 2024-12-17
查看cyh1986的 主题 / 回贴
楼主  发表于: 2010-05-11 17:47
我用S7-200编写了一个单键启动的程序,有几个输出,前面的输出锁后面的输出。
但是我调试了一下,只要第一个按一下,后面的立即都有输出。
对西门子子程序这块还不是很明白,请大家帮忙看看
谢谢
描述:西门子子程序调用
附件: 科行.rar (10 K) 下载次数:579
网站提示: 请不要用迅雷下载附件,容易出错
cyh1986
级别: 家园常客
精华主题: 0
发帖数量: 370 个
工控威望: 744 点
下载积分: 737 分
在线时间: 302(小时)
注册时间: 2009-04-28
最后登录: 2024-12-17
查看cyh1986的 主题 / 回贴
1楼  发表于: 2010-05-13 08:35
zz680217这位朋友,谢谢你的热心支持
我也试了一下,把子程序给修改了一下,还是出现以前这样的情况。
原因很有可能就是你说的原因。
我开始纵一位是我子程序调用的问题
cyh1986
级别: 家园常客
精华主题: 0
发帖数量: 370 个
工控威望: 744 点
下载积分: 737 分
在线时间: 302(小时)
注册时间: 2009-04-28
最后登录: 2024-12-17
查看cyh1986的 主题 / 回贴
2楼  发表于: 2010-05-13 10:11
奇怪了,为什么你修改后的子程序移植到我现在的项目里面就不行了呢???
cyh1986
级别: 家园常客
精华主题: 0
发帖数量: 370 个
工控威望: 744 点
下载积分: 737 分
在线时间: 302(小时)
注册时间: 2009-04-28
最后登录: 2024-12-17
查看cyh1986的 主题 / 回贴
3楼  发表于: 2010-05-17 08:34
引用
引用第7楼wwcwwc于2010-05-15 08:00发表的  :
看了你的程序我说说个人观点,尽供参考。
因为我这里现在没有实体进行测试,可能程序还存在一些问题,望见谅!
1)    子程序结构不够严紧,同样的功能占用字节稍稍偏大(可能是编程习惯问题)。相同的功能用这样调用子程序做法是可行的。程序尽量采用指令方式编写。直接能够使用输出条件的网络段程序尽量少用(寄存)跳转等方法,这样对于程序的阅读有帮助。手/自动转换条件功能最好不要写到子程序的调用中。
2)    主程序(OB1)中功能的启动条件既然用上升沿脉冲控制位,则子程序中应该用相应的置/复位指令。我是沿用你的主程序编法进行。特别是一些手动操作时正反转频繁的场所,需要解决置位后的复位问题。同时可能会造成调用自动操作时,相关的输出位不能有效复位。补救措施见第4项内容。启动信号条件最好用变址方式,把必要的程序逻辑关系做在一起,紧凑程序。
3)    急停按钮必须使用B接点(常闭接点,这样可以在平时建立一个检测急停回路正常与否的功能)。
.......

谢谢wwcwwc的回复
我设计这个子程序的初衷就是为了方便一键启停的操作,像C语言似的,只要把一些相关的输入输出信号都列出来,因为这些设备基本类似,所以不要再多考虑,直接调用子程序。
但现在遇到这样一个问题,(原来我发的那个是有连锁条件的),只要第一个启停按钮一按下,后满所有的设备就立即启动了,按照我的理解,应该不会出现这样的情况,我的子程序调用的条件里面有个启停的上升沿的,没有按那个上升沿后面的设备应该是启动不了的,后来我推断应该是子程序的问题,我猜想因为每个都调用的一个子程序,第一个调用只有,输出局部变量变化了,第二调用的时候,直接把这个输出局部变量给输出呢?按照S7-200的说法,对这个局部变量还不是很吃得透。
我的急停按钮在电路上是,常闭接的二次回路,常开接的PLC,选用的是1NO1NC的按钮。
还请WWCWWC网友帮忙考虑考虑我以上描述的问题!


前面有一位网友修改的程序我也实际测试了一下,确实符合我的要求,但是我移植到我的项目中就不行了。也不明白是什么原因。