技术论坛

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

返回主题列表
作者 主题
文学
侠客

经验值: 691
发帖数: 16
精华帖: 0
楼主    2020-05-29 09:46:19
主题:如何制作包含v存储区的库

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

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

学习,学习,在学习!
--意孤行
奇侠

经验值: 5096
发帖数: 520
精华帖: 7
1楼    2020-05-29 10:31:18
主题:回复:如何制作包含v存储区的库

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

认真做事,低调做人
shine
至圣

经验值: 19950
发帖数: 8944
精华帖: 39
2楼    2020-05-29 10:40:14
主题:回复:如何制作包含v存储区的库

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

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

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

文学
侠客

经验值: 691
发帖数: 16
精华帖: 0
3楼    2020-05-29 11:06:39
主题:回复:如何制作包含v存储区的库

我的子程序是这样: 


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

我的程序测试2次调用。

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

text1.rar


学习,学习,在学习!
shine
至圣

经验值: 19950
发帖数: 8944
精华帖: 39
4楼    2020-05-29 11:24:46
主题:回复:如何制作包含v存储区的库

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

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

shine
至圣

经验值: 19950
发帖数: 8944
精华帖: 39
5楼    2020-05-29 11:30:43
主题:回复:如何制作包含v存储区的库

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

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

芳季
至圣

经验值: 66574
发帖数: 14746
精华帖: 100
7楼    2020-05-29 14:56:47
主题:回复:如何制作包含v存储区的库


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

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

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

文学
侠客

经验值: 691
发帖数: 16
精华帖: 0
8楼    2020-05-29 15:51:20
主题:回复:如何制作包含v存储区的库

感谢您热情解答。


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

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

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


学习,学习,在学习!
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。