技术论坛

如何制作包含v存储区的库

作者 主题
侠客

经验值: 691
发帖数: 16
精华帖: 0
主题:【求助】如何制作包含v存储区的库
推荐帖


只看楼主 楼主 2020-05-29 09:46:19

我自己创建库,程序内部需使用变量,我有临时变量TEMP来使用,然后多次调用时就会出错。我就想避开使用临时变量,想用V区。

求教:如何制作包含v存储区的库?


学习,学习,在学习!
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1625894&b_id=64&s_id=0&num=11

奇侠

经验值: 5102
发帖数: 520
精华帖: 7
回复:如何制作包含v存储区的库
推荐帖


只看楼主 1楼 2020-05-29 10:31:18

论坛里有搜索一下,方法很多


认真做事,低调做人
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:如何制作包含v存储区的库
推荐帖


只看楼主 2楼 2020-05-29 10:40:14

西门子提供的库,比如modbus,pid等,需要你分配库内存的,都是使用了V区的库。

不过,你遇到的问题,不是简单的用V区替代L区就可以解决的。

需要考虑多次调用分配不同的V区,我的一个解决办法是通过输入一个指针指定每次调用时的V区,子程序开始的时候将数据传递到块内,结束的时候再将块内的传回


 
以下网友喜欢您的帖子:

  
侠客

经验值: 691
发帖数: 16
精华帖: 0
回复:如何制作包含v存储区的库
推荐帖


只看楼主 楼主 3楼 2020-05-29 11:06:39
以下是引用shine在2020-05-29 10:40:14的发言 >2楼

西门子提供的库,比如modbus,pid等,需要你分配库内存的,都是使用了V区的库。

不过,你遇到的问题,不是简单的用V区替代L区就可以解决的。

需要考虑多次调用分配不同的V区,我的一个解决办法是通过输入一个指针指定每次调用时的V区,子程序开始的时候将数据传递到块内,结束的时候再将块内的传回

我的子程序是这样: 


当多次调用时,加料机在出现报警时,就不正常实现。

我的程序测试2次调用。

我找了半天都不知道怎么修改,请指教一下。

text1.rar



学习,学习,在学习!
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:如何制作包含v存储区的库
推荐帖


只看楼主 4楼 2020-05-29 11:24:46

L区必须要遵循的规则就是先赋值后使用,暂停 这个变量,在network1中就使用了,但到了network2的第二行在给他赋值

最简单的处理就是把暂停改成inout


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:如何制作包含v存储区的库
推荐帖


只看楼主 5楼 2020-05-29 11:30:43

暂停时间也存在同样的问题,暂停时间是条件调用的,前面条件满足才会等于启动时间+15,而前面的条件不满足呢?其值不确定,导致下面的的比较指令引用的是一个不确定的值。

你的程序,不仅仅是多次调用会出现问题,即使这个子程序只调用一次,在同一层级调用了其他子程序,而那个子程序用到了L4.5以后的temp区,也会出现问题。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:如何制作包含v存储区的库


只看楼主 6楼 2020-05-29 12:18:36

一个子程序只有一片的库内存。显然,这个库内存是解决不了多次调用的问题的。库内存要解决的,一定是其他问题。

还有我觉得你所说的临时变量是指你觉得不需要的量。有一些值必须记忆一段过程的,你会觉得只是一个过程值,没有最终作用,就把它归到临时变量了。其实这些值是要记忆的,不是临时的。

建议你找找我的贴,“双手按钮”那个帖也可以。看看哪些是要记忆的?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:如何制作包含v存储区的库
推荐帖


只看楼主 7楼 2020-05-29 14:56:47


绿色。凡是这些按找扫描次序,先出现触点再出现线圈的。都要使用in元素的类型。我问你:执行触点的时候,触点是on还是off?线圈都没执行你怎么知道它是on off?

红色。是象是先出现赋值再出现使用了。但是,这个赋值……我问你,ADD不执行的时候这个LW5的值是多少?这个值从哪里来的?绿色的同问:这个on off哪里来的?

所有这些L,都是与其他地方共享共同使用的。你这个子程序用上了这些L,别的子程序也一样用这些L。


 
以下网友喜欢您的帖子:

  
侠客

经验值: 691
发帖数: 16
精华帖: 0
回复:如何制作包含v存储区的库
推荐帖


只看楼主 楼主 8楼 2020-05-29 15:51:20
以下是引用芳季在2020-05-29 12:18:36的发言 >6楼

一个子程序只有一片的库内存。显然,这个库内存是解决不了多次调用的问题的。库内存要解决的,一定是其他问题。

还有我觉得你所说的临时变量是指你觉得不需要的量。有一些值必须记忆一段过程的,你会觉得只是一个过程值,没有最终作用,就把它归到临时变量了。其实这些值是要记忆的,不是临时的。

建议你找找我的贴,“双手按钮”那个帖也可以。看看哪些是要记忆的?

感谢您热情解答。


你理解的就是我要的意思。

根据你的样例,我把记忆的改为inout就可以了。

个人感觉我程序要使用多个中间记忆变量的话,这样就要多个无用的引脚



学习,学习,在学习!
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:如何制作包含v存储区的库


只看楼主 9楼 2020-05-29 17:48:00

怎么会觉得是无用呢?对你来说这些数据是没有用,但是对于程序运行来说是必须的。

电脑的内存不要看看?你叫人送外卖过来你以为就是送给你的。都要收钱的。


 
以下网友喜欢您的帖子:

  
游民

经验值: 51
发帖数: 2
精华帖: 0
回复:如何制作包含v存储区的库


只看楼主 10楼 2020-10-16 07:57:58

那我在L区使用变量前,对于不需要记忆的temp量,我全部都再第一行MOVE赋值了后面再使用,比如赋值为0,是不是就可以了呢?@芳季

请您指教


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:如何制作包含v存储区的库


只看楼主 11楼 2020-10-16 18:28:34

全部写成零,好像也没有什么意义啊。一个0跟一个随意的值,有什么区别呢? 同样是对程序来说都没有用的。好比你吃饭碗里是先装饭还是先装汤?除了你自己,谁都不知道?所以给一个空碗给你跟给一个装了水的碗给你,到你手上,你都是要把它倒掉,然后先装饭。因为你需要吃的是饭。所以是先赋值,再使用赋值是赋一个有用的值,而不是赋一个没用的值。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
如何制作包含v存储区的库
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。