我想声明一个带有初始化的指针数组
Apb : array [0..2] of pointer to bool := adr(r0), adr(r1), adr(r2);
其中 r0, r1, r2 在 Modbus 中声明为按位保持寄存器。我得到一个错误:错误的初始值。
如果:
Apb : array [0..2] of pointer to bool;
Apb[0]^ := r0;
一切都按我的意愿工作。
我认为 POU 变量声明不希望在其中调用函数,甚至不希望将变量分配给其他变量。
在声明中包含变量的唯一方法是使用 VAR_CONSTANT。你仍然需要做一些跑腿工作,但它可以让更大规模的换人更容易管理。
还有一种使用 pragma 使用动态值的方法(虽然我从来没有真正使用过 pragma,所以我不确定它有多强大)。
来自更标准的编程语言,它具有与 C 相似的规则和结构,但没有那么大的灵活性、可怕的语法,甚至没有类似于“void”类型的东西。我最终使用 python 模板来帮助生成 POU 变量声明头,因为允许的语法非常严格,导致声明过于冗长。