你现在位置:首页>技术论文>经验技巧>AB_PLC>正文
AB PLC自学笔记(7)
日期:2008-12-30 9:14:00 来源:本站整理  
点击: 作者:
点击【】放大字体.
2008-12-25 
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

WWW_P※LCJS_COM-PLC-)技.术_网

生蛋快乐\^_^/ 
WWW_PLC※JS_COM-PmLC-技.术_网

WWW_PLCJS_COM-PLC-技.术_网

有网友给我出了个题目,虽然我是ab新手,但是正好可以操练一番。 
WWW_P※LCJS_COM-PLC-)技.术_网

WWW_PL※CJS_COM-PLC-技.术_网

―――――――――――――――――――――――――― 
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

请教比较简单的addon的制作方法,比如定义一个简单的运算,我输入123456,输出是654321的规定,这样我用234对应432。该如何实现, 
WWW_PLCJS@_COM%-PLC-技.术_网

WWW_PLCJS@_COM%-PLC-技.术_网

―――――――――――――――――――――――――――――――――――― 
WW.W_PLC※JS_C,OM-PL,C-技.术_网

P.L.C.技.术.网——可编程控制器技术门户

第一感觉就是字符串颠倒,但是记得add-on里面的输入输出参数只能定义为int/sint/dint/real之类的简单类型,那么看来要转换数据类型了。于是打开logix5000软件里面的instruction help,找到了ASCII Conversion Instructions,里面有个dtos指令看来就是我需要的,把dint转换为string。于是定义了一个local参数,string类型,发现string参数有个len的“属性”(姑且这么叫吧,没看到相关资料的权威叫法),于是猜想就是该字符串的长度,于是在程序里面直接把该“属性”赋值给输出参数,测试一下,果然就是啊。接下来看看如何把字符串分解然后颠倒过来,本来想当然的要去找字符串函数(vb的思路),结果看了下string数据的结构,还有一个data数组,看来就是存储字符的,大喜,这下更easy了。用st写吧,定义的参数如下: 
WWW_PLCJS@_COM%-PLC-技.术_网

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

输入――IN1(DINT) 
WWW.PLCJS.COM——可编程控制器技术门户

W1WW_P4LCJS_COM-PLC-技.术_网

输出――OUT1(DINT) 
——可——编——程——控-制-器-技——术——门——户

WWcW_PLCJS_COM-PLC-技.术_网

LOCAL――TEMP_STR1,TEMP_STR2(STRING)/I,STR_LEN(INT) 
WWW.PLCJS.COM——可编程控制器技术门户

WW.W_PLCJS_COM-PLC-技.术_网

开始代码是如此写的: 
WWW_PLCJS_COM-PLC-技.术_网

WWW_PLCJS@_COM%-PLC-技.术_网

DTOS(IN1,TEMP_STR1); 
W1WW_P4LCJS_COM-PLC-技.术_网

WWW_PL※CJS_COM-PLC-技.术_网

STR_LEN:=TEMP_STR1.LEN; 
WWW_PLCJS_COM-PLC-技.术_网

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

IF STR_LEN>1 THEN 
plcjs.技.术_网

WWW_PLCJS@_COM%-PLC-技.术_网

   FOR I:=1 TO STR_LEN  BY 1 DO 
P.L.C.技.术.网——可编程控制器技术门户

plcjs.技.术_网

       TEMP_STR2.DATA[I-1]:=TEMP_STR1.DATA[STR_LEN-I]; 
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

WW.W_PLCJS_COM-PLC-技.术_网

   END_FOR;  
WWW_PLC※JS_COM-PmLC-技.术_网

WWW_P※LCJS_COM-PLC-)技.术_网

   STOD(TEMP_STR2,OUT1); 
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

ELSE 
WW.W_PLCJS_COM-PLC-技.术_网

WWW_PL※CJS_COM-PLC-技.术_网

   OUT1:=IN1; 
WW.W_PLC※JS_C,OM-PL,C-技.术_网

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

END_IF; 
WWW.PLCJS.COM——可编程控制器技术门户

WWW_PLCJS@_COM%-PLC-技.术_网

发现输出一直为0,很郁闷。开始怀疑for是否执行了,因为看手册里面说add-on不支持for指令,虽然前面曾经模拟过程序,表明for是可以执行的。后来又怀疑开始相信的len“属性”,发现都没问题。最后,我突然想到TEMP_STR2的len属性,发现居然是0!!!my god!再加一句话给TEMP_STR2的len赋值就ok了,最后代码如下: 
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WW.W_PLC※JS_C,OM-PL,C-技.术_网

DTOS(IN1,TEMP_STR1);//输入数据转换为字符串 
WWW.PLCJS.COM——可编程控制器技术门户

P.L.C.技.术.网——可编程控制器技术门户

STR_LEN:=TEMP_STR1.LEN;//取得字符串长度 
WWW_P※LCJS_COM-PLC-)技.术_网

WWW_P※LCJS_CO※M-PLC-技-.术_网

TEMP_STR2.LEN:=STR_LEN;//转换后的字符串长度 
WWW_P※LCJS_CO※M-PLC-技-.术_网

WWW_PLCJS_COM-PLC-技.术_网

IF STR_LEN>1 THEN//转换字符串 
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

WWW_PLCJS@_COM%-PLC-技.术_网

   FOR I:=0 TO STR_LEN-1  BY 1 DO 
WWcW_PLCJS_COM-PLC-技.术_网

WWW_PLCJS@_COM%-PLC-技.术_网

       TEMP_STR2.DATA[I]:=TEMP_STR1.DATA[STR_LEN-I-1]; 
——可——编——程——控-制-器-技——术——门——户

WWW_PL※CJS_COM-PLC-技.术_网

   END_FOR;  
WWW_PL※CJS_COM-PLC-技.术_网

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

   STOD(TEMP_STR2,OUT1); 
WWW_PLCJS_COM-PLC-技.术_网

WWW_P※LCJS_CO※M-PLC-技-.术_网

ELSE 
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

——可——编——程——控-制-器-技——术——门——户

   OUT1:=IN1; 
WWcW_PLCJS_COM-PLC-技.术_网

WW.W_PLC※JS_C,OM-PL,C-技.术_网

END_IF; 
上一篇: AB PLC自学笔记(6)
下一: 没有了
评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行