PLC结构文本编程命令问题 求助 点击:832 | 回复:5



jhf123

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 6回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2009年4月07日
发表于:2009-08-21 20:36:26
楼主

各位大侠,我在PLC结构文本编程(功能块)中,发现只能用些通用命令,比如IF  AND OR +-*/ 三角函数 这些。

 可以写 out1:=int1+int2;

我想用些PLC的命令可总实现不了。比如 最简单的MOV D1 D2;可写在功能块中总报错:未识别标识符MOV

不知道在结构文本型功能块中到底怎么用这些PLC命令?请各位不吝赐教!本人分少,只能给2分意思一下。

 




gsxiaojian

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 178回
  • 年度积分:0
  • 历史总积分:434
  • 注册:2009年1月26日
发表于:2009-08-21 22:57:55
1楼
你可以先去了解下IEC61131-3的相关指令,你这里所要用的附值可以直接用X:=Y之类的,如果真想用MOV的话那么你就需要先了解下相关的指令了,比如MOV你可以写成MOVE。

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2009-08-22 14:10:07
2楼

呵呵,在做项目之前,还是要看看你选用的,语言,硬件,软件手册,尤其是第一次做的,不然的话可能在你做的过程中会遇到

无法解决的问题的,ST 文本是适合编写大量数学运算的程序的,逻辑运算还是用 LD吧!

有些PLC  支持的 ST文本 指令也不经相同的,像OMRON PLC     的ST语言,就不支持移位逻辑运算指令!

 

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2009-08-22 18:02:33
3楼
MOV D1 D2?将D1的值赋于D2?

那不就是D2:=D1?

转换一下思路哦。

pqsh

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 291回
  • 年度积分:0
  • 历史总积分:432
  • 注册:2006年9月20日
发表于:2009-08-23 10:09:50
4楼
楼上说的是.
但不是思路问题,而是编程语言混乱.
mov是指令语言,转到结构语言就是:=.

jhf123

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 6回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2009年4月07日
发表于:2009-08-23 11:38:15
5楼

引用gsxiaojian 的回复内容:你可以先去了解下IEC61131-3的相关指令,你这里所要用的附值可以直接用X:=Y之类的,如果真想用MOV的话那么你就需要先了解下相关的指令了,比如MOV你可以写成MOVE。




刚才查了IEC指令,好少啊。在OMRON CX-P 8.0中试了一下MOVE指令,字体变蓝了表示系统识别了,但还是报错未识别标识符。选用CS1G系列PLC。

解释一下为什么想用ST编程:我有一个程序很长很不容易看,以前学过C编程,觉得看程序容易多了。       用MOV只是举个例子。

现在的问题是简单的容易编,但复杂点的逻辑就难了,关键是两点:1.能调用的函数太少了。2.功能块和主程序的参数数值容易传递,但地址不好传递。

下边是我这两天编的一个简单ST功能块,运行也没问题。复杂的一直没搞定。

nqz:=(zscs&gmzd)and(nqz&(NOT nqwh));
if modeb = true then //modeb tendb 是输入变量BOOL型
mode :=16#FFFF; //mode tend 是内部变量 WORD型
else
mode :=16#0000;
end_if;
if tendb = true then
tend :=16#FFFF;
else
tend :=16#0000;
end_if;
nqwh:=(nqz&(not gmzd))and(zscs&(not mode))or(nqwh&(not tend));


热门招聘
相关主题

官方公众号

智造工程师