您好、欢迎来到现金彩票网!
当前位置:彩之网 > 子程序 >

西门子200PLC子程序调用返回问题

发布时间:2019-07-03 20:29 来源:未知 编辑:admin

  1.EN使能,用CALL调用子程序,直到子程序执行完,我的问题,什么时候才知道子程序执行完了,我该停止调用子程序了?EN端可以用上升沿吗? CALL 可以用上升沿吗?

  2.如果子程序执行过程中,停止子程序调用条件,那么子程序的OUT 输出的是什么状态?计时器,计数器呢 ??

  3.如果我在子程序中使用了条件返回,主程序中用IN 执行子程序条件返回条件CRET ,那么,子程序对外OUT输出什么数值??子程序中的计时器,计数器??是什么状态?例如 ,我想急停,通过子程序的IN输入条件返回指令,我想让正在调用的子程序停止执行,对外的OUT 都复位为0 ,所以计数器,计时器都清零? 这个怎么实现呢??

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部1.EN端为触发调用子程序,如使用sm0.0.子程序一直被调用,如使用上升沿,子程序被调用一次。正确的理解是,当程序扫描到这里,如果EN端逻辑处理ROL为线.当子程序没有被调用时,里面的输入I和输出Q,M等保持,计时器正常计时,计数器赞不清楚,你可以仿真或实际运行测试一下。总的来说,有些是保持有些是继续的。

  3.一般我们处理子程序中途停止后,在下面的网络段里都会做R复位处理。比如子程序里有输出Q,那在子程序下面,会增加一段处理对Q复位的指令,就是为了防止子程序停止了却输出保持的状况。

  更多追问追答追问例如,我主程序正常运行,需要调用子程序,子程序正在调用过程中,主程序中有个急停信号I0.1,这个信号通过子程序中的IN 进入子程序,用条件返回CRET的方式终止子程序的执行,子程序执行到一半,那么子程序的输出OUT到主程序的Q ,Q保持当前的情况,计时,计数器的数值继续运行 。影响下次调用,我要的结果是,急停I0.1输入后,子程序里面的所以计时,计数,清零 ,OUT复位,Q不输出 。这个怎么做?我需要在子程序里面写对 C T追答程序扫描很快,10ms,基本上没你说的那么理想。你可以直接认为,我急停按下后,子程序停止运行,然后清空里面的输出。那你把急停信号放在en端,来控制子程序的调用,而非控制子程序里的几段程序。

  追问那么终止了子程序的执行后,怎么清空子程序里面的输出啊?我需要写什么清空复位语句吗?追答在子程序的下面一个网络段里写复位的语句追问我发现,当我中断子程序调用 EN 为 OFF 的时候,我在调用子程序下面的网络里面写了输出Q的复位指令,让输出复位了,可是子程序里面的局部变量L11.1 , L11.3 等局部变量保持状态,影像我下次调用子程序的执行 。局部变量,我怎么复位啊,我想停止调用子程序,让子程序里面所有的继电器状态都复位??麻烦您了,呵呵追答局部变量之所以称为局部,就是因为其不具备保存功能,或者说,你里面的L11,1和11,3,都应该只是中间变量,既然是中间变量,待下次调用时,自然根据输入来刷新数值。所以,调用子程序,只需要对你关心的Q,M等复位即可,局部变量不需要关注。

  哦,我发现,我主要是在子程序中使用T37 T38 T39 T40 正常调用子程序,正常执行完子程序,程序执行没有问题,可是当en为off ,子程序中途结束执行后,我的逻辑出现了错误 。可能是定时器造成的吧??我的子程序是多次重复调用 。

  展开全部1、假如你用m0.0调用子程序1,在子程序调用的指令后面加一个复位指令,复位m0.0,可确保子程序只执行一次,当然也可以在子程序1的最后一条加上复位m0.0的指令。2、如果主程序中没有输出指令来输出这个位,那么out输出的状态保持,计数器和计时器就不记得了,试试就知道了。

http://ibtlsports.com/zichengxu/140.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有