跳转至

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 });

相关页面