Commit 064c0c51 authored by 潘栩锋's avatar 潘栩锋 🚴

1. 实际测试PLC,上料全部寄存读取,只需要0.07s

parent 52095453
......@@ -9,7 +9,7 @@ using System.Collections.ObjectModel;
using FLY.FeedbackRenZiJia.Common;
using FLY.Thick.Base.IService;
using FLY.FeedbackRenZiJia.IService;
using System.Net;
namespace FLY.FeedbackRenZiJia.Client
{
......@@ -24,6 +24,11 @@ namespace FLY.FeedbackRenZiJia.Client
#region IFeedbackHeat 成员
#region 参数
/// <summary>
/// 作为客户端模式
/// </summary>
public bool IsClient { get; set; }
public IPEndPoint PLCep { get; set; }
/// <summary>
/// 自动控制使能
......
......@@ -9,13 +9,19 @@ using FLY.Thick.Base.IService;
using FObjBase;
using FLY.Thick.RemoteHistory;
using System.Text.RegularExpressions;
using System.Net;
namespace FLY.FeedbackRenZiJia.IService
{
public interface IFeedbackHeat : INotifyPropertyChanged
{
#region 参数
/// <summary>
/// 作为客户端模式
/// </summary>
bool IsClient { get; set; }
IPEndPoint PLCep { get; set; }
/// <summary>
/// 自控使能, 不保存!!!
/// </summary>
......
......@@ -14,6 +14,7 @@ using FLY.Thick.Base.IService;
using FLY.FeedbackRenZiJia.IService;
using FLY.OBJComponents.Server;
using FLY.OBJComponents.Common;
using System.Net;
namespace FLY.FeedbackRenZiJia.Server
{
......@@ -29,7 +30,11 @@ namespace FLY.FeedbackRenZiJia.Server
#region IFeedbackHeat 成员
#region 参数
/// <summary>
/// 作为客户端模式
/// </summary>
public bool IsClient { get; set; }
public IPEndPoint PLCep { get; set; }
/// <summary>
/// 自动控制使能
/// </summary>
......@@ -79,7 +84,7 @@ namespace FLY.FeedbackRenZiJia.Server
/// <summary>
/// 当前
/// </summary>
public int[] Currs { get; set; }
//public int[] Currs { get; set; }
#endregion
......@@ -130,9 +135,9 @@ namespace FLY.FeedbackRenZiJia.Server
#endregion
#endregion
private IPLCLink hmi;
private IPLCLink plc;
private FLY.Thick.Blowing.IService.IBlowing renzijia;
private FLY.Thick.Blowing.IService.IBlowingDetect mBDetect;
private UInt16 CurrsUpdate=0;
......@@ -156,14 +161,17 @@ namespace FLY.FeedbackRenZiJia.Server
public FeedbackHeat()
{
hmi = new HMI();
hmi.PropertyChanged += new PropertyChangedEventHandler(hmi_PropertyChanged);
Misc.BindingOperations.SetBinding(hmi, "HasElectricity", this, "HasElectricity");
Misc.BindingOperations.SetBinding(hmi, "HasFan", this, "HasFan");
PLCep = Misc.StringConverter.ToIPEndPoint("192.168.251.9:502");
Load();
if (IsClient)
plc = new PLCLink(PLCep);
else
plc = new HMI();
plc.PropertyChanged += new PropertyChangedEventHandler(hmi_PropertyChanged);
Misc.BindingOperations.SetBinding(plc, "HasElectricity", this, "HasElectricity");
Misc.BindingOperations.SetBinding(plc, "HasFan", this, "HasFan");
InitBuf();
......@@ -230,7 +238,7 @@ namespace FLY.FeedbackRenZiJia.Server
mHeatCheck.Init(mHeatCell);
mHeatCheck.PropertyChanged += new PropertyChangedEventHandler(mHeatCheck_PropertyChanged);
Misc.BindingOperations.SetBinding(hmi, "HasElectricity", mHeatCheck, "HasElectricity");
Misc.BindingOperations.SetBinding(plc, "HasElectricity", mHeatCheck, "HasElectricity");
Misc.BindingOperations.SetBinding(this, "HasCheck", mHeatCheck, "Has");
Misc.BindingOperations.SetBinding(mHeatCheck, "Enable", this, "CheckEnable", Misc.BindingOperations.BindingMode.TwoWay);
Misc.BindingOperations.SetBinding(mHeatCheck, "CheckNo", this, "CheckNo");
......@@ -374,8 +382,8 @@ namespace FLY.FeedbackRenZiJia.Server
void InitBuf()
{
hmi.ChannelCnt = (UInt16)ChannelCnt;
Currs = new int[ChannelCnt];
plc.ChannelCnt = (UInt16)ChannelCnt;
//Currs = new int[ChannelCnt];
mHeatChanged.Init(ChannelCnt);
mHeatBuf.Init(NBolts, ChannelCnt);
mHeatCell.Init2(NBolts, ChannelCnt);
......@@ -386,44 +394,20 @@ namespace FLY.FeedbackRenZiJia.Server
}
void hmi_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "CurrUpdate")
if (e.PropertyName == "Errno")
{
if (hmi.CurrUpdate != CurrsUpdate)
if (plc.Errno == -1)
{
CurrsUpdate = hmi.CurrUpdate;
bool isupdate = false;
IEnumerable<UInt16> list = hmi.GetCurr();
//更新了
for (int i = 0; i < ChannelCnt && i< list.Count(); i++)
{
if (Currs[i] != list.ElementAt(i))
{
Currs[i] = list.ElementAt(i);
isupdate = true;
}
}
if (isupdate)
{
NotifyPropertyChanged("Currs");
//把Currs 复制到 HeatCell.Heats
mHeatCell.ModifyHeats(Currs);
}
}
}
else if (e.PropertyName == "Errno")
{
if (hmi.Errno == -1)
IsConnectedWithPLC = false;
}
else
{
IsConnectedWithPLC = true;
//刚成功连接上
//把Currs 复制到 HeatCell.Heats
//mHeatCell.ModifyHeats(Currs);
//刚成功连接上
//重新复制数据到 PLC
RecoverPLC();
}
}
}
......@@ -643,10 +627,11 @@ namespace FLY.FeedbackRenZiJia.Server
}
UInt16[] last_heat;
UInt16 last_heatupdate;
void Output(int[] heats)
{
List<UInt16> list = new List<UInt16>();
for (int i = 0; i < ChannelCnt; i++)
{
UInt16 heat = (UInt16)heats[i];
......@@ -656,13 +641,33 @@ namespace FLY.FeedbackRenZiJia.Server
heat = 100;
list.Add(heat);
}
hmi.SetHeat(list);
UInt16 heatupdate = (UInt16)(hmi.HeatUpdate + 1);
plc.SetHeat(list);
last_heat = list.ToArray();
UInt16 heatupdate = (UInt16)(plc.HeatUpdate + 1);
if (heatupdate == 0)
heatupdate = 1;
hmi.HeatUpdate = heatupdate;
plc.HeatUpdate = heatupdate;
last_heatupdate = heatupdate;
}
void RecoverPLC()
{
plc.ChannelCnt = (UInt16)ChannelCnt;
if (last_heat != null)
{
plc.SetHeat(last_heat);
plc.HeatUpdate = last_heatupdate;
}
else
{
//设置全部0进去
plc.SetHeat(new UInt16[ChannelCnt]);
plc.HeatUpdate = plc.HeatUpdate;
}
}
void Add(DateTime time, DateTime endtime, Misc.DIRECTION direction, TimeSpan period, int rotateCnt,
int orgboltno, double rAngle, double filmLength,
int[] frame)
......
......@@ -79,10 +79,11 @@ namespace FLY.FeedbackRenZiJia.Server
#endregion
#region 状态
public int Errno { get; set; }
public int Errno { get; set; } = -1;
#endregion
bool IsRunning;
public PLCLink(IPEndPoint ep)
{
mclient = new Modbus.WithThread.ClientTCP(ep);
......@@ -106,6 +107,8 @@ namespace FLY.FeedbackRenZiJia.Server
List<RegWrite> rws = new List<RegWrite>();
private ushort _channelCnt;
private ushort _heatUpdate;
private UInt16[] heats=null;
private void PLCLink_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
......@@ -163,13 +166,16 @@ namespace FLY.FeedbackRenZiJia.Server
stopwatch.Restart();
if (!UpdateReadData())
return;//连接断开,终止更新线程
break;//连接断开,终止更新线程
Errno = 0;
}
//输出写入数据
if (!UpdateWriteData())
return;//连接断开,终止更新线程
break;//连接断开,终止更新线程
Thread.Sleep(100);
}
Errno = -1;
IsRunning = false;
}
......@@ -220,7 +226,7 @@ namespace FLY.FeedbackRenZiJia.Server
{
rws.Add(regWrite);
}
heats = buf;
}
/// <summary>
......@@ -229,7 +235,12 @@ namespace FLY.FeedbackRenZiJia.Server
/// <returns></returns>
public IEnumerable<UInt16> GetCurr()
{
return null;
UInt16[] curr = new UInt16[ChannelCnt];
if (ChannelCnt != 0 && heats!=null)
{
Array.Copy(heats, curr, Math.Min(ChannelCnt, heats.Count()));
}
return curr;
}
}
}
......@@ -10,8 +10,8 @@ namespace FLY.Modbus
/// <summary>
/// 现在工作中的读取计划任务
/// </summary>
protected List<Plan> plan = new List<Plan>();
public List<Plan> plan = new List<Plan>();
/// <summary>
/// 当true, plan_buffer -> plan
/// </summary>
......
......@@ -118,7 +118,7 @@ namespace FLY.Modbus
{
Pack_Proto p = new Pack_Proto();
int rlen;
if (!p.TryParse(inBuf, startIndex, out rlen))
if (!p.TryParse(inBuf, startIndex, inBuf.Length, out rlen))
{
//处理失败
return startIndex;
......
......@@ -15,7 +15,7 @@ namespace FLY.Modbus
/// 一次读取的数据量
/// </summary>
const int MaxRegsOfOneRead = 100;
const int MaxCoilsOfOneRead = 9000;
const int MaxCoilsOfOneRead = 900;
#region 数据变化通知
/// <summary>
......
......@@ -65,7 +65,7 @@ namespace FLY.Modbus
return buf.ToArray();
}
public bool TryParse(byte[] value, int startIndex, out int rlen)
public bool TryParse(byte[] value, int startIndex, int value_len, out int rlen)
{
//格式——————————————
//MBAP
......@@ -82,7 +82,7 @@ namespace FLY.Modbus
rlen = 0;
int cnt = 7 + 1;
if (value.Count() < cnt)
if (value_len < cnt)
return false;
int index = startIndex;
tranid = COMMON.ToUInt16_Big_endian(value, index);
......@@ -94,7 +94,7 @@ namespace FLY.Modbus
index += 2;
cnt += len - 2;
if (value.Count() < cnt)
if (value_len < cnt)
return false;
unitid = value[index];
......
......@@ -19,7 +19,7 @@ namespace FLY.Modbus.WithThread
/// <summary>
/// 通信超时, 默认是 1s
/// </summary>
public TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(1);
public TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(2);
/// <summary>
/// socket 错误信息,带时间
/// </summary>
......@@ -61,47 +61,60 @@ namespace FLY.Modbus.WithThread
public ClientTCP(IPEndPoint ep)
{
RemoteEP = ep;
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Connect(true);
}
bool isconnecting = false;
void Connect(bool isImmediately)
/// <summary>
/// 工作中
/// </summary>
public bool IsRunning { get; private set; }
/// <summary>
/// 用于停止Task
/// </summary>
CancellationTokenSource cts;
/// <summary>
/// 建立连接
/// </summary>
public void Connect()
{
if (isconnecting)
if (IsRunning)
return;
isconnecting = true;
Task task = new Task((state) =>
IsRunning = true;
IsConnected = false;
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
cts = new CancellationTokenSource();
Task.Factory.StartNew(() =>
{
bool isImme = (bool)state;
if (!isImme)//不需要立刻连接,等待3秒后重试
Thread.Sleep(3000);
while (!IsConnected)
while (true)
{
lock (this)
if (cts.IsCancellationRequested)//被主动申请断开
break;
try
{
try
{
sock.Connect(RemoteEP);
IsConnected = true;
}
catch(Exception e)
{
ErrMsg = e.Message;
}
sock.Connect(RemoteEP);
IsConnected = true;
break;
}
if (!IsConnected)
Thread.Sleep(3000);
catch(Exception e)
{
ErrMsg = e.Message;
}
//连接失败,等待再尝试
Thread.Sleep(1000);
}
isconnecting = false;
}, isImmediately);
task.Start();
});
}
/// <summary>
/// 停止
/// </summary>
public void Stop()
{
if (!IsRunning)
return;
IsRunning = false;
sock.Close();
IsConnected = false;
cts.Cancel();
}
bool TranExecute(Pack_Proto request, out Pack_Proto reponse)
{
......@@ -126,36 +139,27 @@ namespace FLY.Modbus.WithThread
goto _end;
}
byte[] recvBytes = new byte[sock.ReceiveBufferSize];//回复的指令不可能大于2K
sock.ReceiveTimeout = (int)Timeout.TotalMilliseconds;
int offset = 0;
//读取数据
while (true)
{
byte[] recvBytes = new byte[2048];//回复的指令不可能大于2K
sock.ReceiveTimeout = (int)Timeout.TotalMilliseconds;
int offset = 0;
int size = recvBytes.Length - offset;
if (size <= 0)
{
//异常
ErrMsg = "TimeOut";
IsConnected = false;
goto _end;
}
int bytes=0;
try
{
int size = recvBytes.Length - offset;
if (size <= 0)
{
//异常
ErrMsg = "TimeOut";
IsConnected = false;
goto _end;
}
int bytes = sock.Receive(recvBytes, offset, recvBytes.Length, 0);//从客户端接受信息
//可能会分了多次接收
if (!reponse.TryParse(recvBytes, 0, out int rlen))
{
//处理失败,数据不够,继续接收
offset = bytes;
}
else
{
break;
}
bytes = sock.Receive(recvBytes, offset, size, SocketFlags.None);//从客户端接受信息,可能会分了多次接收
}
catch (SocketException e)
{
......@@ -164,12 +168,34 @@ namespace FLY.Modbus.WithThread
IsConnected = false;
goto _end;
}
if (bytes == 0)
{
//超时,或已经断开连接
ErrMsg = "TimeOut";
IsConnected = false;
goto _end;
}
if (!reponse.TryParse(recvBytes, 0, bytes, out int rlen))
{
//处理失败,数据不够,继续接收
offset = bytes;
}
else
{
break;
}
}
}
_end:
if (!IsConnected)
{
Connect(false);
sock.Close();
if (IsRunning)
{
IsRunning = false;
Connect();
}
return false;
}
else
......
......@@ -28,8 +28,11 @@ namespace FLY.Modbus.WithThread
/// 工作中
/// </summary>
public bool IsRunning { get; private set; }
/// <summary>
/// 异常次数
/// </summary>
public int ErrorCnt { get; private set; }
class RegWrite
{
public PLCAddressArea dataArea;
......@@ -58,8 +61,6 @@ namespace FLY.Modbus.WithThread
{
mclient = clienttcp;
mclient.PropertyChanged += Mclient_PropertyChanged;
Start();
}
......@@ -90,35 +91,55 @@ namespace FLY.Modbus.WithThread
}
}
}
void Start()
public void Start()
{
if (!mclient.IsRunning)
{
mclient.Connect();
}
else
{
if (IsRunning)
return;
IsRunning = true;
Task.Factory.StartNew(OnPoll_update);
}
}
/// <summary>
/// 停止
/// </summary>
public void Stop()
{
if (IsRunning)
if (!IsRunning)
return;
Task.Factory.StartNew(OnPoll_update);
mclient.Stop();
}
void OnPoll_update()
{
IsRunning = true;
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (mclient.IsConnected)
{
if (stopwatch.ElapsedMilliseconds >= UpdateInterval)
{
//检查上次更新周期是否完成
ActUpdateInterval = stopwatch.Elapsed;
TimeSpan elapsed = stopwatch.Elapsed;
ActUpdateInterval = elapsed;
stopwatch.Restart();
if (!UpdateReadData())
return;//连接断开,终止更新线程
break;//连接断开,终止更新线程
}
//输出写入数据
if (!UpdateWriteData())
return;//连接断开,终止更新线程
Thread.Sleep(0);
break;//连接断开,终止更新线程
Thread.Sleep(10);
}
IsRunning = false;
ErrorCnt++;
}
/// <summary>
......@@ -132,11 +153,10 @@ namespace FLY.Modbus.WithThread
areaManager.MakePlanReal();
}
int curr_area_idx = 0;
while (true)
//int curr_area_idx = 0;
foreach (var areaManager in mAreaManager)
{
Plan p_doing = mAreaManager[curr_area_idx].GetNextPlan();
if (p_doing != null)
foreach(Plan p_doing in areaManager.plan)
{
switch (p_doing.area)
{
......@@ -156,17 +176,42 @@ namespace FLY.Modbus.WithThread
break;
}
}
else
{
//读完
curr_area_idx++;
if (curr_area_idx >= mAreaManager.Count())
{
//读完一轮了
return true;
}
}
}
return true;
// while (true)
//{
// Plan p_doing = mAreaManager[curr_area_idx].GetNextPlan();
// if (p_doing != null)
// {
// switch (p_doing.area)
// {
// case PLCAddressArea.Coil:
// {
// if (!mclient.Do_01(p_doing.addr, p_doing.num, out IEnumerable<bool> values))
// return false;
// SetModbusData(PLCAddressArea.Coil, p_doing.addr, values);
// }
// break;
// case PLCAddressArea.Register:
// {
// if (!mclient.Do_03(p_doing.addr, p_doing.num, out IEnumerable<UInt16> values))
// return false;
// SetModbusData(PLCAddressArea.Register, p_doing.addr, values);
// }
// break;
// }
// }
// else
// {
// //读完
// curr_area_idx++;
// if (curr_area_idx >= mAreaManager.Count())
// {
// //读完一轮了
// return true;
// }
// }
//}
}
/// <summary>
......@@ -404,6 +449,10 @@ namespace FLY.Modbus.WithThread
dr.isNeedUpdate = true;
}
}
//foreach (DataToRegs dr in DRmap)
//{
// dr.isNeedUpdate = true;
//}
DRNeedUpdateCnt = DRmap.Count((dr) => dr.isNeedUpdate);
foreach (var areaManager in mAreaManager)
......
......@@ -69,6 +69,10 @@ namespace FLY.OBJComponents.Server
FObjBase.PollModule.Current.Poll_Config(FObjBase.PollModule.POLL_CONFIG.ADD,
OnPoll_plans, TimeSpan.FromSeconds(1));
//启动!!!!
foreach (var plc in PLCs)
plc.Start();
}
private void Obj_PropertyChanged(object sender, PropertyChangedEventArgs e)
......
<Window x:Class="FLY.Weight.UI.Server.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" ResizeMode="NoResize" SizeToContent="WidthAndHeight" >
Title="MainWindow" ResizeMode="NoResize" SizeToContent="WidthAndHeight" MinHeight="80" MinWidth="200">
<Grid>
<Grid x:Name="grid_plc"/>
<Grid x:Name="grid_plcos"/>
<Grid x:Name="grid_WeightSystem"/>
<StackPanel Orientation="Vertical" Margin="5">
<StackPanel Orientation="Horizontal" >
<ItemsControl x:Name="itemcontrol">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal" >
<StackPanel Orientation="Vertical" Margin="4" >
<TextBlock Text="更新速度" />
<TextBlock FontSize="20">
<Run Text="{Binding ActUpdateInterval,StringFormat=\{0:sfff\}, Mode=OneWay}" />
<Run Text="ms" FontSize="15"/>
</TextBlock>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" >
<TextBlock Text="PLC连接状态" />
<TextBlock Text="{Binding IsRunning}" FontSize="20"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" >
<TextBlock Text="异常次数" />
<TextBlock Text="{Binding ErrorCnt}" FontSize="20"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" >
<TextBlock Text="寄存器更新数" />
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding DRNeedUpdateCnt}" FontSize="20"/>
<TextBlock Text="/"/>
<TextBlock Text="{Binding DRCnt}" FontSize="20"/>
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!--<StackPanel Orientation="Horizontal" >
<StackPanel Orientation="Vertical" Margin="4" DataContext="{Binding DataContext,ElementName=grid_plc}">
<TextBlock Text="更新速度" />
<TextBlock Text="{Binding ActUpdateInterval}" FontSize="20"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" DataContext="{Binding DataContext,ElementName=grid_plcos}">
<TextBlock Text="PLC连接状态" />
<TextBlock Text="{Binding IsConnectedWithPLC}" FontSize="20"/>
<TextBlock Text="{Binding IsRunning}" FontSize="20"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" DataContext="{Binding DataContext,ElementName=grid_plc}">
<TextBlock Text="寄存器更新数" />
......@@ -26,7 +58,7 @@
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>-->
</StackPanel>
</Grid>
......
......@@ -40,12 +40,13 @@ namespace FLY.Weight.UI.Server
mTDGage = new TDGage("Gage1");
this.DataContext = mTDGage.mData.Items[0];
//this.DataContext = mTDGage.mData.Items[0];
FLY.OBJComponents.Server.PLCProxySystem plsos =
mTDGage.mData.PLCos as FLY.OBJComponents.Server.PLCProxySystem;
grid_plcos.DataContext = plsos;
grid_plc.DataContext = plsos.PLCs[0];
grid_WeightSystem.DataContext = mTDGage.mData;
//grid_plcos.DataContext = plsos;
//grid_plc.DataContext = plsos.PLCs[0];
//grid_WeightSystem.DataContext = mTDGage.mData;
this.itemcontrol.ItemsSource = plsos.PLCs;
}
}
}
......@@ -184,6 +184,7 @@ namespace FLY.Weight.Server
this.PropertyChanged += WeightSystem_PropertyChanged;
FObjBase.PollModule.Current.Poll_Config(PollModule.POLL_CONFIG.ADD, OnPoll_SaveMix, TimeSpan.FromSeconds(1));
}
void OnPoll_SaveMix()
{
......@@ -566,7 +567,14 @@ namespace FLY.Weight.Server
var plc = new Modbus.WithThread.ModbusMapper_Client(new Modbus.WithThread.ClientTCP(device.EP));
plcos.PLCs.Add(plc);
}
//测试---
//只加载第1个
{
//var plc = new Modbus.WithThread.ModbusMapper_Client(new Modbus.WithThread.ClientTCP(plcgroup.Devices[1].EP));
//plcos.PLCs.Add(plc);
//plc = new Modbus.WithThread.ModbusMapper_Client(new Modbus.WithThread.ClientTCP(plcgroup.Devices[1].EP));
//plcos.PLCs.Add(plc);
}
List<int> bincnts = new List<int>();
Regex r = new Regex(@"Items\[([0-9])\]");
Regex r2 = new Regex("MixPSet_([1-9])");
......@@ -631,6 +639,9 @@ namespace FLY.Weight.Server
foreach (var plc in plcos.PLCs)
plc.Build();
}
public event PropertyChangedEventHandler PropertyChanged;
......
......@@ -65,6 +65,7 @@ namespace FLY.Winder.Server
InitError();
plcos.Init();
}
#region 报警
class ErrorAction
......
<?xml version="1.0" encoding="utf-8"?>
<PLCGroup>
<Devices>
<PLCDevice EP="127.168.50.2:502" />
<PLCDevice EP="127.168.50.1:502" />
<PLCDevice EP="127.168.50.3:502" />
</Devices>
<Variables>
<PLCVariable DeviceIndex="1" Mode="0" Addr="970" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="AlarmIsOn" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="970" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="AlarmIsOn" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="970" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="AlarmIsOn" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="971" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsAlarmReseted" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="971" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsAlarmReseted" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="971" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsAlarmReseted" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6320" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="CumulativeProduction" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6320" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="CumulativeProduction" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6320" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="CumulativeProduction" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="184" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixBucketWeight" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="184" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixBucketWeight" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="184" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixBucketWeight" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="20" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="BucketValveIsOpen" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="20" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="BucketValveIsOpen" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="20" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="BucketValveIsOpen" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="35" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="MixIsOn" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="35" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="MixIsOn" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="35" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="MixIsOn" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="160" Type="Int32" Scale="0.001" OwnerName="Items[0]" PropertyName="BinWeight" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="160" Type="Int32" Scale="0.001" OwnerName="Items[1]" PropertyName="BinWeight" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="160" Type="Int32" Scale="0.001" OwnerName="Items[2]" PropertyName="BinWeight" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2398" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="CurrentFlow" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2398" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="CurrentFlow" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2398" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="CurrentFlow" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2144" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="FlowSetting" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2144" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="FlowSetting" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2144" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="FlowSetting" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3702" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="ScrewPDisp" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3704" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="ScrewPDisp" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3706" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="ScrewPDisp" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3802" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="ScrewPSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3804" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="ScrewPSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3806" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="ScrewPSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2320" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="ScrewMotorFreq" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2320" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="ScrewMotorFreq" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2320" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="ScrewMotorFreq" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2308" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="ScrewManualFreq" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2308" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="ScrewManualFreq" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2308" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="ScrewManualFreq" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="910" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="ScrewIsAutoMode" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="910" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="ScrewIsAutoMode" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="910" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="ScrewIsAutoMode" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="150" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="ScrewMotorIsOn" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="150" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="ScrewMotorIsOn" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="150" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="ScrewMotorIsOn" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="490" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsMixSave" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="490" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsMixSave" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="490" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsMixSave" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="1000" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="MixPSet_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="1000" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="MixPSet_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="1000" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="MixPSet_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="1001" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="MixPSet_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="1001" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="MixPSet_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="1001" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="MixPSet_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="1002" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="MixPSet_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="1002" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="MixPSet_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="1002" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="MixPSet_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="1003" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="MixPSet_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="1003" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="MixPSet_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="1003" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="MixPSet_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6304" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixPDisp_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6304" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixPDisp_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6304" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixPDisp_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6308" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixPDisp_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6308" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixPDisp_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6308" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixPDisp_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6312" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixPDisp_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6312" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixPDisp_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6312" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixPDisp_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6316" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixPDisp_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6316" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixPDisp_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6316" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixPDisp_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6080" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixSet_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6080" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixSet_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6080" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixSet_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="5080" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixSet_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="5080" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixSet_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="5080" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixSet_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="4080" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixSet_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="4080" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixSet_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="4080" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixSet_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3080" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixSet_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3080" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixSet_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3080" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixSet_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6084" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixDisp_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6084" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixDisp_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6084" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixDisp_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="5084" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixDisp_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="5084" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixDisp_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="5084" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixDisp_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="4084" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixDisp_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="4084" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixDisp_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="4084" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixDisp_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3084" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixDisp_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3084" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixDisp_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3084" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixDisp_4" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="64513" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="MixLight_1" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="64513" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="MixLight_1" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="64513" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="MixLight_1" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="64514" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="MixLight_2" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="64514" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="MixLight_2" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="64514" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="MixLight_2" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="64515" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="MixLight_3" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="64515" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="MixLight_3" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="64515" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="MixLight_3" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="64516" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="MixLight_4" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="64516" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="MixLight_4" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="64516" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="MixLight_4" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="64517" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="MixUnload" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="64517" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="MixUnload" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="64517" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="MixUnload" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6012" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixSet" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6012" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixSet" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6012" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6300" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixDisp" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6300" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixDisp" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6300" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixDisp" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6322" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixCum_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6322" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixCum_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6322" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixCum_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6326" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixCum_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6326" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixCum_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6326" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixCum_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6330" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixCum_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6330" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixCum_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6330" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixCum_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6334" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixCum_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6334" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixCum_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6334" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixCum_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6324" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixCumPercent_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6324" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixCumPercent_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6324" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixCumPercent_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6328" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixCumPercent_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6328" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixCumPercent_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6328" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixCumPercent_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6332" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixCumPercent_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6332" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixCumPercent_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6332" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixCumPercent_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6336" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="MixCumPercent_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6336" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="MixCumPercent_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6336" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="MixCumPercent_4" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="156" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="ClearProduction" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="156" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="ClearProduction" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="156" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="ClearProduction" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="3000" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="FlowCalMethodIsA" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="3000" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="FlowCalMethodIsA" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="3000" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="FlowCalMethodIsA" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2170" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="FlowDisp" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2170" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="FlowDisp" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2170" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="FlowDisp" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2002" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="FilterParam" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2002" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="FilterParam" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2002" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="FilterParam" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2610" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="SwitchLv" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2610" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="SwitchLv" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2610" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="SwitchLv" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2040" Type="UInt16" Scale="0.01" OwnerName="Items[0]" PropertyName="UpDownGain" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2040" Type="UInt16" Scale="0.01" OwnerName="Items[1]" PropertyName="UpDownGain" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2040" Type="UInt16" Scale="0.01" OwnerName="Items[2]" PropertyName="UpDownGain" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2034" Type="UInt16" Scale="0.01" OwnerName="Items[0]" PropertyName="PGain" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2034" Type="UInt16" Scale="0.01" OwnerName="Items[1]" PropertyName="PGain" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2034" Type="UInt16" Scale="0.01" OwnerName="Items[2]" PropertyName="PGain" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2004" Type="UInt16" Scale="1" OwnerName="Items[0]" PropertyName="ITime" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2004" Type="UInt16" Scale="1" OwnerName="Items[1]" PropertyName="ITime" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2004" Type="UInt16" Scale="1" OwnerName="Items[2]" PropertyName="ITime" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2050" Type="UInt16" Scale="0.01" OwnerName="Items[0]" PropertyName="AdjustFactor" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2050" Type="UInt16" Scale="0.01" OwnerName="Items[1]" PropertyName="AdjustFactor" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2050" Type="UInt16" Scale="0.01" OwnerName="Items[2]" PropertyName="AdjustFactor" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2022" Type="Int16" Scale="1" OwnerName="Items[0]" PropertyName="AdjustUpper" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2022" Type="Int16" Scale="1" OwnerName="Items[1]" PropertyName="AdjustUpper" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2022" Type="Int16" Scale="1" OwnerName="Items[2]" PropertyName="AdjustUpper" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2023" Type="Int16" Scale="1" OwnerName="Items[0]" PropertyName="AdjustLower" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2023" Type="Int16" Scale="1" OwnerName="Items[1]" PropertyName="AdjustLower" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2023" Type="Int16" Scale="1" OwnerName="Items[2]" PropertyName="AdjustLower" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2662" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="StableLvSwitch" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2662" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="StableLvSwitch" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2662" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="StableLvSwitch" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2762" Type="UInt16" Scale="1" OwnerName="Items[0]" PropertyName="PIDLimit" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2762" Type="UInt16" Scale="1" OwnerName="Items[1]" PropertyName="PIDLimit" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2762" Type="UInt16" Scale="1" OwnerName="Items[2]" PropertyName="PIDLimit" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2000" Type="UInt16" Scale="1" OwnerName="Items[0]" PropertyName="SampleTime" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2000" Type="UInt16" Scale="1" OwnerName="Items[1]" PropertyName="SampleTime" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2000" Type="UInt16" Scale="1" OwnerName="Items[2]" PropertyName="SampleTime" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2030" Type="Int16" Scale="1" OwnerName="Items[0]" PropertyName="PIDResult" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2030" Type="Int16" Scale="1" OwnerName="Items[1]" PropertyName="PIDResult" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2030" Type="Int16" Scale="1" OwnerName="Items[2]" PropertyName="PIDResult" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2058" Type="Int16" Scale="1" OwnerName="Items[0]" PropertyName="PIDAdjust" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2058" Type="Int16" Scale="1" OwnerName="Items[1]" PropertyName="PIDAdjust" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2058" Type="Int16" Scale="1" OwnerName="Items[2]" PropertyName="PIDAdjust" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2700" Type="UInt16" Scale="1" OwnerName="Items[0]" PropertyName="ScrewCurrentSpeed" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2700" Type="UInt16" Scale="1" OwnerName="Items[1]" PropertyName="ScrewCurrentSpeed" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2700" Type="UInt16" Scale="1" OwnerName="Items[2]" PropertyName="ScrewCurrentSpeed" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2003" Type="UInt16" Scale="0.01" OwnerName="Items[0]" PropertyName="PGainDisp" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2003" Type="UInt16" Scale="0.01" OwnerName="Items[1]" PropertyName="PGainDisp" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2003" Type="UInt16" Scale="0.01" OwnerName="Items[2]" PropertyName="PGainDisp" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2520" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="UnloadingTime" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2520" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="UnloadingTime" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2520" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="UnloadingTime" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2521" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="ZeroStableTime" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2521" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="ZeroStableTime" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2521" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="ZeroStableTime" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2374" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="FlowSwitchEnable" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2374" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="FlowSwitchEnable" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2374" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="FlowSwitchEnable" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2132" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="SampleTimeSet" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2132" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="SampleTimeSet" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2132" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="SampleTimeSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2324" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="ScrewMotorRatedFreq" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2324" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="ScrewMotorRatedFreq" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2324" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="ScrewMotorRatedFreq" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="1184" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="WeightStableTime" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="1184" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="WeightStableTime" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="1184" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="WeightStableTime" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2182" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="MaterialLowLimitSet" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2182" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="MaterialLowLimitSet" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2182" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="MaterialLowLimitSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2140" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="AlarmDeviationSet" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2140" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="AlarmDeviationSet" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2140" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="AlarmDeviationSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2620" Type="UInt16" Scale="0.01" OwnerName="Items[0]" PropertyName="WeightCorrectFactor" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2620" Type="UInt16" Scale="0.01" OwnerName="Items[1]" PropertyName="WeightCorrectFactor" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2620" Type="UInt16" Scale="0.01" OwnerName="Items[2]" PropertyName="WeightCorrectFactor" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2184" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="LackErrorSet" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2184" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="LackErrorSet" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2184" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="LackErrorSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3680" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="MixingTimeSet" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3680" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="MixingTimeSet" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3680" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="MixingTimeSet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2510" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="FeedingDeviation_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2510" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="FeedingDeviation_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2510" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="FeedingDeviation_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2512" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="FeedingDeviation_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2512" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="FeedingDeviation_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2512" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="FeedingDeviation_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2514" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="FeedingDeviation_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2514" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="FeedingDeviation_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2514" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="FeedingDeviation_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2516" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="FeedingDeviation_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2516" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="FeedingDeviation_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2516" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="FeedingDeviation_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6026" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="FeedSet_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6026" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="FeedSet_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6026" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="FeedSet_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="5026" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="FeedSet_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="5026" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="FeedSet_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="5026" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="FeedSet_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="4026" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="FeedSet_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="4026" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="FeedSet_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="4026" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="FeedSet_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3026" Type="float" Scale="1" OwnerName="Items[0]" PropertyName="FeedSet_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3026" Type="float" Scale="1" OwnerName="Items[1]" PropertyName="FeedSet_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3026" Type="float" Scale="1" OwnerName="Items[2]" PropertyName="FeedSet_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2500" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="InitTime_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2500" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="InitTime_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2500" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="InitTime_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2501" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="InitTime_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2501" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="InitTime_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2501" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="InitTime_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2502" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="InitTime_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2502" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="InitTime_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2502" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="InitTime_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2503" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="InitTime_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2503" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="InitTime_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2503" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="InitTime_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="6090" Type="UInt16" Scale="0.001" OwnerName="Items[0]" PropertyName="MinTime_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="6090" Type="UInt16" Scale="0.001" OwnerName="Items[1]" PropertyName="MinTime_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="6090" Type="UInt16" Scale="0.001" OwnerName="Items[2]" PropertyName="MinTime_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="5090" Type="UInt16" Scale="0.001" OwnerName="Items[0]" PropertyName="MinTime_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="5090" Type="UInt16" Scale="0.001" OwnerName="Items[1]" PropertyName="MinTime_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="5090" Type="UInt16" Scale="0.001" OwnerName="Items[2]" PropertyName="MinTime_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="4090" Type="UInt16" Scale="0.001" OwnerName="Items[0]" PropertyName="MinTime_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="4090" Type="UInt16" Scale="0.001" OwnerName="Items[1]" PropertyName="MinTime_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="4090" Type="UInt16" Scale="0.001" OwnerName="Items[2]" PropertyName="MinTime_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3090" Type="UInt16" Scale="0.001" OwnerName="Items[0]" PropertyName="MinTime_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3090" Type="UInt16" Scale="0.001" OwnerName="Items[1]" PropertyName="MinTime_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3090" Type="UInt16" Scale="0.001" OwnerName="Items[2]" PropertyName="MinTime_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2504" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="StableTime_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2504" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="StableTime_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2504" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="StableTime_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2505" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="StableTime_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2505" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="StableTime_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2505" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="StableTime_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2506" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="StableTime_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2506" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="StableTime_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2506" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="StableTime_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="2507" Type="UInt16" Scale="0.1" OwnerName="Items[0]" PropertyName="StableTime_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="2507" Type="UInt16" Scale="0.1" OwnerName="Items[1]" PropertyName="StableTime_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="2507" Type="UInt16" Scale="0.1" OwnerName="Items[2]" PropertyName="StableTime_4" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3580" Type="UInt16" Scale="1" OwnerName="Items[0]" PropertyName="BinAlarmSet_1" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3580" Type="UInt16" Scale="1" OwnerName="Items[1]" PropertyName="BinAlarmSet_1" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3580" Type="UInt16" Scale="1" OwnerName="Items[2]" PropertyName="BinAlarmSet_1" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3582" Type="UInt16" Scale="1" OwnerName="Items[0]" PropertyName="BinAlarmSet_2" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3582" Type="UInt16" Scale="1" OwnerName="Items[1]" PropertyName="BinAlarmSet_2" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3582" Type="UInt16" Scale="1" OwnerName="Items[2]" PropertyName="BinAlarmSet_2" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3584" Type="UInt16" Scale="1" OwnerName="Items[0]" PropertyName="BinAlarmSet_3" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3584" Type="UInt16" Scale="1" OwnerName="Items[1]" PropertyName="BinAlarmSet_3" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3584" Type="UInt16" Scale="1" OwnerName="Items[2]" PropertyName="BinAlarmSet_3" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3586" Type="UInt16" Scale="1" OwnerName="Items[0]" PropertyName="BinAlarmSet_4" />
<PLCVariable DeviceIndex="0" Mode="4" Addr="3586" Type="UInt16" Scale="1" OwnerName="Items[1]" PropertyName="BinAlarmSet_4" />
<PLCVariable DeviceIndex="2" Mode="4" Addr="3586" Type="UInt16" Scale="1" OwnerName="Items[2]" PropertyName="BinAlarmSet_4" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="500" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfLack_1" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="500" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfLack_1" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="500" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfLack_1" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="501" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfLack_2" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="501" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfLack_2" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="501" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfLack_2" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="502" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfLack_3" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="502" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfLack_3" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="502" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfLack_3" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="503" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfLack_4" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="503" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfLack_4" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="503" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfLack_4" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="510" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfAdd_1" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="510" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfAdd_1" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="510" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfAdd_1" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="511" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfAdd_2" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="511" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfAdd_2" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="511" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfAdd_2" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="512" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfAdd_3" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="512" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfAdd_3" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="512" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfAdd_3" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="513" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfAdd_4" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="513" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfAdd_4" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="513" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfAdd_4" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="681" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfScrewLack" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="681" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfScrewLack" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="681" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfScrewLack" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="684" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfScrewFlow" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="684" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfScrewFlow" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="684" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfScrewFlow" />
<PLCVariable DeviceIndex="1" Mode="1" Addr="63490" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfBlender" />
<PLCVariable DeviceIndex="0" Mode="1" Addr="63490" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfBlender" />
<PLCVariable DeviceIndex="2" Mode="1" Addr="63490" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfBlender" />
<PLCVariable DeviceIndex="1" Mode="1" Addr="63491" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfScram" />
<PLCVariable DeviceIndex="0" Mode="1" Addr="63491" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfScram" />
<PLCVariable DeviceIndex="2" Mode="1" Addr="63491" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfScram" />
<PLCVariable DeviceIndex="1" Mode="1" Addr="63492" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfBlender2" />
<PLCVariable DeviceIndex="0" Mode="1" Addr="63492" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfBlender2" />
<PLCVariable DeviceIndex="2" Mode="1" Addr="63492" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfBlender2" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="1300" Type="bool" Scale="1" OwnerName="Items[0]" PropertyName="IsErrorOfMixerMotor" />
<PLCVariable DeviceIndex="0" Mode="0" Addr="1300" Type="bool" Scale="1" OwnerName="Items[1]" PropertyName="IsErrorOfMixerMotor" />
<PLCVariable DeviceIndex="2" Mode="0" Addr="1300" Type="bool" Scale="1" OwnerName="Items[2]" PropertyName="IsErrorOfMixerMotor" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3800" Type="UInt16" Scale="0.1" OwnerName="Accessory" PropertyName="TotalFlowSetting" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="3700" Type="UInt16" Scale="0.1" OwnerName="Accessory" PropertyName="TotalFlow" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="600" Type="float" Scale="1" OwnerName="Accessory" PropertyName="TotalProduction" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13302" Type="float" Scale="1" OwnerName="Accessory" PropertyName="WheelPerimeter" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13304" Type="float" Scale="1" OwnerName="Accessory" PropertyName="WheelPulse" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13320" Type="float" Scale="1" OwnerName="Accessory" PropertyName="Density" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="3" Type="bool" Scale="1" OwnerName="Accessory" PropertyName="IsRimNoRecycle" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13596" Type="float" Scale="1" OwnerName="Accessory" PropertyName="RimCharge" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13328" Type="float" Scale="1" OwnerName="Accessory" PropertyName="Thickness" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13338" Type="float" Scale="1" OwnerName="Accessory" PropertyName="CurrentVelocity" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13988" Type="UInt16" Scale="0.1" OwnerName="Accessory" PropertyName="CurrentVelocitySet" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13318" Type="float" Scale="1" OwnerName="Accessory" PropertyName="TotalFilmWidth" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13492" Type="float" Scale="1" OwnerName="Accessory" PropertyName="RimWidth" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13494" Type="float" Scale="1" OwnerName="Accessory" PropertyName="ActFilmWidth" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13394" Type="float" Scale="1" OwnerName="Accessory" PropertyName="SetThickness" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13414" Type="float" Scale="1" OwnerName="Accessory" PropertyName="TargetVelocity" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13640" Type="float" Scale="1" OwnerName="Accessory" PropertyName="ACurrentLen" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13524" Type="float" Scale="1" OwnerName="Accessory" PropertyName="ACurrent" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13890" Type="float" Scale="1" OwnerName="Accessory" PropertyName="ALast" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13642" Type="float" Scale="1" OwnerName="Accessory" PropertyName="BCurrentLen" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13514" Type="float" Scale="1" OwnerName="Accessory" PropertyName="BCurrent" />
<PLCVariable DeviceIndex="1" Mode="4" Addr="13888" Type="float" Scale="1" OwnerName="Accessory" PropertyName="BLast" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="2" Type="bool" Scale="1" OwnerName="Accessory" PropertyName="AClear" />
<PLCVariable DeviceIndex="1" Mode="0" Addr="1" Type="bool" Scale="1" OwnerName="Accessory" PropertyName="BClear" />
</Variables>
</PLCGroup>
\ No newline at end of file
$root_path = $PSScriptRoot
$src_path = $root_path + "\WS_local_test.xml"
$dest_dir = $root_path + "\..\..\..\..\Project.FLY.Weight\FLY.Weight.UI.Server\bin\Debug\Gage1"
$dest_path = $dest_dir + "\WS.xml"
if(-not (Test-Path $dest_dir))
{
echo $dest_dir
mkdir $dest_dir
}
echo WS.xml
cp $src_path $dest_path
echo Ƴɹ
pause
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment