想到前一段时间的一个贴子,讨论如何规划V区内存,有人抱怨为什么不支持自动编址。
其实,Smart200有一个地方支持自动编址,对比一下,自动编址的利与弊。
Smart200的局部变量L区长这样:

定义符号变量时,只需要给出符号名、选择数据类型,地址是自动分配的,且无法干预。
这一设计很省心,有高级语言(比如C)的变量定义风格。
本人猜测,是因为L区对外不可见,纯内部使用,所以,不必在意具体的址。
不过有人提出了不一样的看法。
比如,把LB0中存贮的Bype数据,转换为一个REAL值,基于符号的程序如下:
STL:
LD Always_On:SM0.0
BTI #L_B:LB0, #L_W:LW1 // Bype转INT
ITD #L_W:LW1, #L_DW:LD3 // INT转DINT
DTR #L_DW:LD3, #L_R:LD7 // DINT转Real
LAD

完成转换涉及到的存贮范围是LB0-LB10。
同样的操作,如果变量定义在V区,可以这样定义符号:

STL:
LD Always_On:SM0.0
BTI V_B0:VB0, V_W0:VW0 // Bype转INT
ITD V_W0:VW0, V_DW0:VD0 // INT转DINT
DTR V_DW0:VD0, V_DW0:VD0 // DINT转Real
LAD:

完成转换涉及的存贮范围是VB0-VB3。
原因在于,V区定义符号,不是自动编址的,且允许地址重叠,数据的不同部分,可以定义成不同的符号。
比如:
