我正在与PLC合作,作为练习,我在C中编写了一个小程序,以帮助我更好地理解C,PLC和梯形逻辑到C的转换。
我正在使用的PLC具有固定的存储空间,变量存储在" V存储器"位置。例如我将温度值31存储在名为V3700的内存位置。因此,只要我需要操作温度,我就会在程序中使用V3700。为了模拟PLC存储空间,我只使用一个名为Vmem [65536]的数组。
PLC使用八进制寻址。所以在上面的例子中,V3700是八进制的,所以它实际上是0x7C0或1984(十进制)。
我想做的是简化写作Vmem[x]
,因此我不必使用括号。 e.g:
//current method to store 31 to V3700
Vmem[3700] = 31;
//How I want to address the array
V3700 = 31;
//Another example
if(V3700 > 5) printf("V3700 is greater than 5.\n");
有什么方法可以缩写数组名称和地址吗?即使八进制部分太多而十进制值都可以工作,我也可以。我知道我可以#define
我正在使用Ubuntu 12.04和GCC 4.6.3进行开发。
答案 0 :(得分:6)
没有比
更简单的方法#define V3700 (Vmem[3700])
如果你有很多这种情况,你可以编写一个程序,生成一个包含所有define语句的标题,以节省你全部输入。