您现在所在的是:

欧姆龙OMRON

回帖:13个,阅读:5824 [上一页] [1] [2] [下一页]
* 帖子主题:

欧姆龙ST语言疑问

2762
sxjice545
文章数:540
年度积分:57
历史总积分:2762
注册时间:2013/2/23
发站内信
发表于:2015/1/6 17:10:12
#0楼
欧姆龙PLC的ST语言里,如何引用IO地址?
比方说我想定义一个寄存器作为IO通道的通道地址:D0为10,就从10.0开始到10.15或者更多。D0是作为ST写的FB的输入的,但是10不是FB的输入,这样能实现吗?
11372
ytthink
文章数:2271
年度积分:521
历史总积分:11372
注册时间:2013/11/25
发站内信
发表于:2015/1/6 18:49:07
#1楼
没用过,问过欧姆龙热线了?
此帖发自论坛手机版
8288
fujifa
文章数:2932
年度积分:221
历史总积分:8288
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2015/1/7 10:20:04
#2楼
以下是引用sxjice5452015/1/6 17:10:12的发言:
欧姆龙PLC的ST语言里,如何引用IO地址?
比方说我想定义一个寄存器作为IO通道的通道地址:D0为10,就从10.0开始到10.15或者更多。D0是作为ST写的FB的输入的,但是10不是FB的输入,这样能实现吗?

在功能块中使用ST语言进行间接寻址你可以使用数组(对于不同的机型,其数组支持的大小是不同的,CP1H的为2048,而CJ2H为30000,所以根据机型去看硬件手册),你可以建立多个数组,并判断输入值需要定义到哪个数据区。

通过判断需要的地址下标来变相的间接寻址,不过这种间接寻址只能使用与数据区,是无法像梯形图中的IR,DR这种全地址寻址的。

附件 snap1.jpg

附件 snap2.jpg

附件 snap3.jpg

为了节省你输入程序的时间,附档中为CX-Programer V9.5建立的样例,在CX Simulator中模拟通过。



附件:
[本地下载]
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net
2762
sxjice545
文章数:540
年度积分:57
历史总积分:2762
注册时间:2013/2/23
发站内信
发表于:2015/1/7 13:13:04
#3楼
回复 #2楼 fujifa
没看出来你这是IO的引用,
8288
fujifa
文章数:2932
年度积分:221
历史总积分:8288
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2015/1/7 13:21:03
#4楼
以下是引用sxjice5452015/1/7 13:13:04的发言:
没看出来你这是IO的引用,

好好去体会一下,addressIndex=5  D5
               addressIndex=10  D10

懂了没有?
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net
2762
sxjice545
文章数:540
年度积分:57
历史总积分:2762
注册时间:2013/2/23
发站内信
发表于:2015/1/8 7:59:05
#5楼
引用IO,不是寄存器。
此帖发自论坛手机版
8288
fujifa
文章数:2932
年度积分:221
历史总积分:8288
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2015/1/8 8:48:15
#6楼
以下是引用sxjice5452015/1/8 7:59:05的发言:
引用IO,不是寄存器。

东昌说的不错,真的蛮笨的,且提供例子都没看懂就来回帖了。

将功能块内建数组的地址改为IO地址就OK了。

不过需要提醒的是:如果是使用IO地址,应考虑用户使用的AddressIndex是否选用了已经被硬件输入的地址,输入地址是只读,不可更改,这一点务必注意。

另外,这种功能采用这种方法来做,破坏了FB的完整性,不过本身欧姆龙FB允许使用外部变量也就破坏了FB,所以也无所谓了,反正欧姆龙的IEC61131支持的不完整。

最后说一下,请看懂例子后再做后续的讨论。



附件 snap1.jpg

附件 snap2.jpg
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net
2762
sxjice545
文章数:540
年度积分:57
历史总积分:2762
注册时间:2013/2/23
发站内信
发表于:2015/1/8 15:47:16
#7楼
回复 #6楼 fujifa
我还以为不可以将通道定义为数组呢,回去再试试,现在弄不了
此帖发自论坛手机版
2762
sxjice545
文章数:540
年度积分:57
历史总积分:2762
注册时间:2013/2/23
发站内信
发表于:2015/1/9 8:11:09
#8楼
回复 #6楼 fujifa
果然可以,没注意看,原来可以直接引用IO的。
这样倒是不方便了
2762
sxjice545
文章数:540
年度积分:57
历史总积分:2762
注册时间:2013/2/23
发站内信
发表于:2015/1/9 8:17:33
#9楼
以下是引用fujifa2015/1/8 8:48:15的发言:
以下是引用sxjice5452015/1/8 7:59:05的发言:
引用IO,不是寄存器。

东昌说的不错,真的蛮笨的,且提供例子都没看懂就来回帖了。

将功能块内建数组的地址改为IO地址就OK了。

不过需要提醒的是:如果是使用IO地址,应考虑用户使用的AddressIndex是否选用了已经被硬件输入的地址,输入地址是只读,不可更改,这一点务必注意。

另外,这种功能采用这种方法来做,破坏了FB的完整性,不过本身欧姆龙FB允许使用外部变量也就破坏了FB,所以也无所谓了,反正欧姆龙的IEC61131支持的不完整。

最后说一下,请看懂例子后再做后续的讨论。



附件 snap1.jpg

附件 snap2.jpg
不知道数组大小可不可以定义为变量啊

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004