登录
首页 PLC论坛 欧姆龙OMRON
回帖 发帖
正文

主题:欧姆龙ST语言疑问

点击:6017 回复:13

欧姆龙PLC的ST语言里,如何引用IO地址?
比方说我想定义一个寄存器作为IO通道的通道地址:D0为10,就从10.0开始到10.15或者更多。D0是作为ST写的FB的输入的,但是10不是FB的输入,这样能实现吗?
15-01-06 17:10
没用过,问过欧姆龙热线了?
15-01-06 18:49

引用 sxjice545 在 2015/1/6 17:10:12 发言【内容省略】

在功能块中使用ST语言进行间接寻址你可以使用数组(对于不同的机型,其数组支持的大小是不同的,CP1H的为2048,而CJ2H为30000,所以根据机型去看硬件手册),你可以建立多个数组,并判断输入值需要定义到哪个数据区。
通过判断需要的地址下标来变相的间接寻址,不过这种间接寻址只能使用与数据区,是无法像梯形图中的IR,DR这种全地址寻址的。
附件 snap1.jpg
附件 snap2.jpg
附件 snap3.jpg
为了节省你输入程序的时间,附档中为CX-Programer V9.5建立的样例,在CX Simulator中模拟通过。
附件:
[本地下载]
15-01-07 10:20
没看出来你这是IO的引用,
15-01-07 13:13

引用 sxjice545 在 2015/1/7 13:13:04 发言【内容省略】

好好去体会一下,addressIndex=5  D5
               addressIndex=10  D10
懂了没有?
15-01-07 13:21
引用IO,不是寄存器。
15-01-08 07:59

引用 sxjice545 在 2015/1/8 7:59:05 发言【内容省略】

东昌说的不错,真的蛮笨的,且提供例子都没看懂就来回帖了。
将功能块内建数组的地址改为IO地址就OK了。
不过需要提醒的是:如果是使用IO地址,应考虑用户使用的AddressIndex是否选用了已经被硬件输入的地址,输入地址是只读,不可更改,这一点务必注意。
另外,这种功能采用这种方法来做,破坏了FB的完整性,不过本身欧姆龙FB允许使用外部变量也就破坏了FB,所以也无所谓了,反正欧姆龙的IEC61131支持的不完整。
最后说一下,请看懂例子后再做后续的讨论。
附件 snap1.jpg
附件 snap2.jpg
15-01-08 08:48
我还以为不可以将通道定义为数组呢,回去再试试,现在弄不了
15-01-08 15:47
果然可以,没注意看,原来可以直接引用IO的。
这样倒是不方便了
15-01-09 08:11

引用 fujifa 在 2015/1/8 8:48:15 发言【内容省略】

不知道数组大小可不可以定义为变量啊
15-01-09 08:17

上一页下一页

工控新闻

更多新闻资讯