发布于 2009-07-24 10:26:38
0楼
//看到你图片了,不知怎么贴图,只好给你写这么一堆,any型的没有数组这个概念,这么声明 ASCII : ANY;就可以了,另外DB块一定要有符号名,否则String格式无法识别
// 我事先建了一个DB20,符号名为str,在DB20里面建一个数组array[1..5] string[10]
//用scl声明一个fc20 如下:
FUNCTION FC 20 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
Any_IN : ANY ;
Str_IN1 : STRING [254 ];
ASCII : ANY;
Str_IN2 : STRING [254 ];
END_VAR
BEGIN
NETWORK
TITLE =
END_FUNCTION
//你怎么要用scl声明呢?直接在接口声明不是更简单
//用STL调用FC20,用LAD也一样
CALL FC 20
Any_IN :="str".str[1] //any p#db20.dbx0.0 --数组STRING[10]
Str_IN1:="str".str[2] //string p#db20.dbx12.0 --数组STRING[10] 从any型的地方copy过来,修改数组序号可以识别
ASCII :="str".str[4] //any p#db20.dbx36.0 --数组STRING[10] 把下面的地址p#db20.dbx36.0 byte 12 copy过来可以识别
Str_IN2:=p#db20.dbx36.0 byte 12 //string 直接写的地址,无法识别,你从any型的地方copy过来,修改数组序号就可以识别了
你试试吧,碰到这种问题我都这么解决,插入一个有any型接口参数sfc也可以,反正只是需要通过写any型让string识别出来
我的方法可能比较笨,不知道各位有何高招