发表于:2013/11/1 19:45:56
#0楼
氢气:其实ANY指针的值完全可以由用户自行生成,作为实参传给功能块的输入参数,这样就能实现“变址寻址”。例如使用SFC20将不同DB块的值传递给DB100:
L P##TempAny
LAR1
L W#16#1001 //数据类型BYTE
T W [AR1,P#0.0]
L W#16#10 //重复因子
T W [AR1,P#2.0]
L MW 10 //确定DB块
T W [AR1,P#4.0]
L DW#16#84000000 //DB存储区
T D [AR1,P#6.0]
CALL "BLKMOV"
SRCBLK :=#TempAny
RET_VAL:=MW12
DSTBLK :=P#DB100.DBX0.0 BYTE 10
这样,就实现了将某个DB块中前10个字节传送到DB100中,究竟是哪个DB,完全由MW10决定。
下面是我的回帖:
调用SFC 20,一般我们直接使用SRCBLK的指针格式的实参,DBx是数据块的地址:
CALL "BLKMOV"
SRCBLK :=P#DBx.DBX0.0 BYTE 10
RET_VAL:=MW12
DSTBLK :=P#DB100.DBX0.0 BYTE 10
氢气侠写的代码也可以实现同样的功能,但是工作量太大。
氢气侠的用法当然也有好处,程序不容易读懂,有一定程度的保密性。
氢气:我举这个例子目的是告诉大家ANY的用法,不止局限于以类似“P#DB1.DBX0.0 BYTE 10”这样的格式去使用它。而是要根据ANY数据类型的结构去打造自己的“ANY数据”,此数据在作为参数传递的同时,还可以用于间接寻址。例如上例中,数据源地址不是固定的,究竟是哪个DB块,由MW10决定,而MW10可以是HMI传递过来的数据。比如程序中有90个配方,分别存储与DB1~DB90中,究竟将哪个配方传送至DB100中使用,由MW10(HMI)决定。所以程序这样书写跟保密性无关。
另外ANY的魅力不仅在于“重构”,还在于将其“解析”(通常都是这种用法),“解析”后可以得到其中的地址、长度、数据类型等信息。
下面是我的回帖:
氢气侠的方法的确有很大的灵活性,佩服!
[/URL] [/URL]
L P##TempAny
LAR1
L W#16#1001 //数据类型BYTE
T W [AR1,P#0.0]
L W#16#10 //重复因子
T W [AR1,P#2.0]
L MW 10 //确定DB块
T W [AR1,P#4.0]
L DW#16#84000000 //DB存储区
T D [AR1,P#6.0]
CALL "BLKMOV"
SRCBLK :=#TempAny
RET_VAL:=MW12
DSTBLK :=P#DB100.DBX0.0 BYTE 10
这样,就实现了将某个DB块中前10个字节传送到DB100中,究竟是哪个DB,完全由MW10决定。
下面是我的回帖:
调用SFC 20,一般我们直接使用SRCBLK的指针格式的实参,DBx是数据块的地址:
CALL "BLKMOV"
SRCBLK :=P#DBx.DBX0.0 BYTE 10
RET_VAL:=MW12
DSTBLK :=P#DB100.DBX0.0 BYTE 10
氢气侠写的代码也可以实现同样的功能,但是工作量太大。
氢气侠的用法当然也有好处,程序不容易读懂,有一定程度的保密性。
氢气:我举这个例子目的是告诉大家ANY的用法,不止局限于以类似“P#DB1.DBX0.0 BYTE 10”这样的格式去使用它。而是要根据ANY数据类型的结构去打造自己的“ANY数据”,此数据在作为参数传递的同时,还可以用于间接寻址。例如上例中,数据源地址不是固定的,究竟是哪个DB块,由MW10决定,而MW10可以是HMI传递过来的数据。比如程序中有90个配方,分别存储与DB1~DB90中,究竟将哪个配方传送至DB100中使用,由MW10(HMI)决定。所以程序这样书写跟保密性无关。
另外ANY的魅力不仅在于“重构”,还在于将其“解析”(通常都是这种用法),“解析”后可以得到其中的地址、长度、数据类型等信息。
下面是我的回帖:
氢气侠的方法的确有很大的灵活性,佩服!
[/URL] [/URL]
[此贴子已经被作者于2013/11/1 20:49:58编辑过]
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/