Variables 变量
通过 Controller.Variables 访问全局 double 变量数组和虚拟 I/O。
ControllerVariableContainer 属性
| 属性 | 类型 | 说明 |
|---|---|---|
Global |
DoubleVariableContainer |
全局 double 变量容器($global[n]) |
VirtualIO |
VirtualIO |
虚拟 I/O(数字量/寄存器) |
批量读写(当前版本的推荐方式)
VariableCollection<T> 提供批量读写接口。当前版本按名称/下标的单个变量访问(索引器 this[string] / this[int])依赖的变量名解析尚未实装,调用会抛出 NotSupportedException;请使用 GetMultiple / SetMultiple 批量接口。
// 批量读取:从索引 0 开始读取 5 个全局变量
double[] values = controller.Variables.Global.Doubles.GetMultiple(0, 5);
// 批量写入
controller.Variables.Global.Doubles.SetMultiple(0, new double[] { 1.0, 2.0, 3.0 });
// 变量数量
int count = controller.Variables.Global.Doubles.Count;
VirtualIO
VirtualIO 提供对虚拟数字量 I/O 和虚拟寄存器 I/O 的访问,同样以 GetMultiple / SetMultiple 批量读写:
| 容器 | 类型 | 说明 |
|---|---|---|
VirtualIO.Binary.Inputs |
VariableCollection<bool> |
虚拟二进制输入(按位组织) |
VirtualIO.Binary.Outputs |
VariableCollection<bool> |
虚拟二进制输出 |
VirtualIO.Register.Inputs |
VariableCollection<double> |
虚拟寄存器输入 |
VirtualIO.Register.Outputs |
VariableCollection<double> |
虚拟寄存器输出 |
// 读取虚拟二进制输入(前 16 位)
bool[] bi = controller.Variables.VirtualIO.Binary.Inputs.GetMultiple(0, 16);
// 写入虚拟二进制输出
controller.Variables.VirtualIO.Binary.Outputs.SetMultiple(0, new bool[] { true, false });
// 读写虚拟寄存器
double[] ri = controller.Variables.VirtualIO.Register.Inputs.GetMultiple(0, 4);
controller.Variables.VirtualIO.Register.Outputs.SetMultiple(0, new double[] { 3.14159 });
示例
// 设置全局变量
controller.Variables.Global.Doubles.SetMultiple(0, new double[] { 100.0, 20.0, 0.0 });
// 读取
double[] vals = controller.Variables.Global.Doubles.GetMultiple(0, 3);
double pos = vals[0];
// 虚拟数字量输出
controller.Variables.VirtualIO.Binary.Outputs.SetMultiple(0, new bool[] { true });
// 虚拟寄存器输出
controller.Variables.VirtualIO.Register.Outputs.SetMultiple(0, new double[] { 3.14159 });