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

西门子S7--200累加器在带参数调用子程序中的应用

发布时间:2019-08-16 10:19 来源:未知 编辑:admin

  我们可以利用累加器在调用程序和被调用子程序之间进行数据的传递,但累加器的值在子程序调用时,既不保存也不恢复,如果说我在这个调用的子程序和调用程序之间需要用累加器,而我在子...

  我们可以利用累加器在调用程序和被调用子程序之间进行数据的传递,但累加器的值在子程序调用时,既不保存也不恢复,如果说我在这个调用的子程序和调用程序之间需要用累加器,而我在子程序结束以后,我还希望继续使用累加器,这时,我需要在调用子程序前,先把累加器里面的值保存下来,然后在子程序结束后,再执行恢复。我对这段话描述的有点不懂,知道的能举个例子说明一下吗?

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

  展开全部累加器是一个全局变量,其本质同VD是一样的,唯一的好处是可以不用进行数据转换就可以变换数据长度,但相对的访问累加器的时间比访问V区要长点。所以很多人编程时都懒得用累加器。

  如果涉及到子程序中使用了累加器,因此为了避免累加器的值被子程序使用了而导致的数据错误,所以在子程序的开头把累加器中的数据保存到一个不会变动的地址,比如地址靠后的临时地址LD中;子程序结束后,再从LD恢复到AC中。这叫现场的保存与恢复。更多追问追答追问

  我做了一个实验,就是分别在子程序前,先把累加器里面的值用MOV R保存下来,和不用任何指令直接把累加器的值输出给子程序,结果是等子程序结束后,再使用累加器的值,都可以用啊?

  这幅图说的是,我直接把输出的累加器值给了子程序,子程序结束后,虽然累加器里面的值没保存,可是网络3的累加器还是有数据

  你的子程序里面就没有用AC,只是在主程序里面把AC的值给了子程序而已,所以,AC的值根本就没有变化。如果你在子程序内部给AC赋值,那么从子程序结束返回主程序之后AC的值已经变化了。

  AC是一个全局变量,同VD类似,可以在任何一个地方使用。追问过程我知道了,可是我要问,为什么在PLC中,主程序的数据到了子程序,如果之前不保存,为什么会丢失呢?追答并不是因为不保存而丢失,而是因为子程序使用了主程序所使用的数据的地址而导致数据丢失。追问

  这是我最新做的程序,为什么我在主程序中没保存,可待子程序结束,再用累加器还是会有值呢?

  1.指令之间如果没有太多联系尽量不要串联起来,也就是减少使用AENO指令。

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