gk_乐一
级别: 探索解密
精华主题: 0
发帖数量: 109 个
工控威望: 182 点
下载积分: 2993 分
在线时间: 53(小时)
注册时间: 2019-12-20
最后登录: 2024-12-20
查看gk_乐一的 主题 / 回贴
楼主  发表于: 2021-01-22 14:47
如题,子程序需要用到很多实数的中间变量,到LD56就不能用了,能否类似系统库文件那个,外部调用全局变量
[ 此帖被gk_乐一在2021-01-25 17:39重新编辑 ]
湛蓝小尔
工控交流 Q703935819
级别: 家园常客

精华主题: 0
发帖数量: 349 个
工控威望: 642 点
下载积分: 2101 分
在线时间: 80(小时)
注册时间: 2014-03-03
最后登录: 2024-12-10
查看湛蓝小尔的 主题 / 回贴
1楼  发表于: 2021-01-23 11:12
子程序本来不就是开放外部接口,不然,你是个假子程序,里面用全局。
专心搞钱
Q群943838323   博图
Q群703935819   昆仑通态
zhou1211
级别: 略有小成
精华主题: 1 篇
发帖数量: 205 个
工控威望: 362 点
下载积分: 1172 分
在线时间: 66(小时)
注册时间: 2013-11-04
最后登录: 2024-09-18
查看zhou1211的 主题 / 回贴
2楼  发表于: 2021-01-24 10:50
引用
引用第1楼湛蓝小尔于2021-01-23 11:12发表的  :
子程序本来不就是开放外部接口,不然,你是个假子程序,里面用全局。 [attachment=251991]

不会吧,全局变量要是子程序不能用,那还叫全局变量?
gk_乐一
级别: 探索解密
精华主题: 0
发帖数量: 109 个
工控威望: 182 点
下载积分: 2993 分
在线时间: 53(小时)
注册时间: 2019-12-20
最后登录: 2024-12-20
查看gk_乐一的 主题 / 回贴
3楼  发表于: 2021-01-25 17:45
子程序的确是开发外部接口的,我现在遇到的问题是我需要用到大量的实数型中间变量,但是子程序的局部变量最大只能用到LD56(64个字节,最后4个系统占用)
我在想,能否类似modbus通讯库那种,用分配库地址的方式,来定义或者说是分配子程序中字节不够的问题,不知道我的表达是否准确
引用
引用第1楼湛蓝小尔于2021-01-23 11:12发表的  :
子程序本来不就是开放外部接口,不然,你是个假子程序,里面用全局。 [attachment=251991]
gk_乐一
级别: 探索解密
精华主题: 0
发帖数量: 109 个
工控威望: 182 点
下载积分: 2993 分
在线时间: 53(小时)
注册时间: 2019-12-20
最后登录: 2024-12-20
查看gk_乐一的 主题 / 回贴
4楼  发表于: 2021-01-25 17:46
全局变量,你只要是用V的全局变量,不管用到哪里都是全局变量
引用
引用第2楼zhou1211于2021-01-24 10:50发表的  :

不会吧,全局变量要是子程序不能用,那还叫全局变量?
sjbandmm
级别: 略有小成
精华主题: 0
发帖数量: 237 个
工控威望: 407 点
下载积分: 987 分
在线时间: 168(小时)
注册时间: 2008-08-23
最后登录: 2024-11-19
查看sjbandmm的 主题 / 回贴
5楼  发表于: 2021-01-25 20:40
子程序就这么多局部变量,接口用局部变量,中间变量完全可以用全局变量,比如将vw0-vw198用作中间变量,那么即便多个子程序重复使用也是没问题的,记得每次使用前复位一次就好了(其实不复位也可以,总是要赋值的)。中间变量为什么一定要用局部变量,我没明白。
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 770 个
工控威望: 1148 点
下载积分: 399 分
在线时间: 604(小时)
注册时间: 2019-09-22
最后登录: 2024-12-23
查看gxtmdb82164的 主题 / 回贴
6楼  发表于: 2021-01-26 09:21
引用
引用第3楼gk_乐一于2021-01-25 17:45发表的  :
子程序的确是开发外部接口的,我现在遇到的问题是我需要用到大量的实数型中间变量,但是子程序的局部变量最大只能用到LD56(64个字节,最后4个系统占用)
我在想,能否类似modbus通讯库那种,用分配库地址的方式,来定义或者说是分配子程序中字节不够的问题,不知道我的表达是否准确



可以,西门子有专门的文档讲这个,可以去找来看一下
实际操作中等于就是使用了外部V空间的变量,不过这个V区地址是不固定的,跟着具体的项目文件走,一般是自己出一个偏移地址的变量表来定义各个变量的详细信息,西门子自己官方出的很多库最后也是会给V区变量的说明的.

印象中是只要在子程序中使用了V区变量,然后在封装库的时候会有相应的提示,可以自己试试.
gk_乐一
级别: 探索解密
精华主题: 0
发帖数量: 109 个
工控威望: 182 点
下载积分: 2993 分
在线时间: 53(小时)
注册时间: 2019-12-20
最后登录: 2024-12-20
查看gk_乐一的 主题 / 回贴
7楼  发表于: 2021-01-28 15:10
这倒是一个思路,可以试试
引用
引用第5楼sjbandmm于2021-01-25 20:40发表的  :
子程序就这么多局部变量,接口用局部变量,中间变量完全可以用全局变量,比如将vw0-vw198用作中间变量,那么即便多个子程序重复使用也是没问题的,记得每次使用前复位一次就好了(其实不复位也可以,总是要赋值的)。中间变量为什么一定要用局部变量,我没明白。
gk_乐一
级别: 探索解密
精华主题: 0
发帖数量: 109 个
工控威望: 182 点
下载积分: 2993 分
在线时间: 53(小时)
注册时间: 2019-12-20
最后登录: 2024-12-20
查看gk_乐一的 主题 / 回贴
8楼  发表于: 2021-01-28 15:12
就是不知道怎么搞
引用
引用第6楼gxtmdb82164于2021-01-26 09:21发表的  :


可以,西门子有专门的文档讲这个,可以去找来看一下
实际操作中等于就是使用了外部V空间的变量,不过这个V区地址是不固定的,跟着具体的项目文件走,一般是自己出一个偏移地址的变量表来定义各个变量的详细信息,西门子自己官方出的很多库最后也是会给V区变量的说明的.

.......