| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418 |
- using Prism.Mvvm;
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using TeamAAS_VP.Core.PLCs;
- using TeamAAS_VP.Interfaces;
- namespace TeamAAS_VP.Models.PLC
- {
- public class PlcPoint : BindableBase
- {
- private int _Number;
- /// <summary>
- /// 点位编号
- /// </summary>
- public int Number
- {
- get { return _Number; }
- set { SetProperty(ref _Number, value); }
- }
- private string _Label;
- /// <summary>
- /// 点位标签
- /// </summary>
- public string Label
- {
- get { return _Label; }
- set { SetProperty(ref _Label, value); }
- }
- private float _X_Position;
- /// <summary>
- /// X轴位置
- /// </summary>
- public float X_Position
- {
- get { return _X_Position; }
- set { SetProperty(ref _X_Position, value); }
- }
- private float _X_Velocity;
- /// <summary>
- /// X轴速度
- /// </summary>
- public float X_Velocity
- {
- get { return _X_Velocity; }
- set { SetProperty(ref _X_Velocity, value); }
- }
- private float _Y_Position;
- /// <summary>
- /// Y轴位置
- /// </summary>
- public float Y_Position
- {
- get { return _Y_Position; }
- set { SetProperty(ref _Y_Position, value); }
- }
- private float _Y_Velocity;
- /// <summary>
- /// Y轴速度
- /// </summary>
- public float Y_Velocity
- {
- get { return _Y_Velocity; }
- set { SetProperty(ref _Y_Velocity, value); }
- }
- private float _Z_Position_Start;
- /// <summary>
- /// Z轴起点位置
- /// </summary>
- public float Z_Position_Start
- {
- get { return _Z_Position_Start; }
- set { SetProperty(ref _Z_Position_Start, value); }
- }
- private float _Z_Velocity_Start;
- /// <summary>
- /// Z轴起点速度
- /// </summary>
- public float Z_Velocity_Start
- {
- get { return _Z_Velocity_Start; }
- set { SetProperty(ref _Z_Velocity_Start, value); }
- }
- private float _Z_Position_Stop;
- /// <summary>
- /// Z轴终点位置
- /// </summary>
- public float Z_Position_Stop
- {
- get { return _Z_Position_Stop; }
- set { SetProperty(ref _Z_Position_Stop, value); }
- }
- private float _Z_Velocity_Stop;
- /// <summary>
- /// Z轴终点速度
- /// </summary>
- public float Z_Velocity_Stop
- {
- get { return _Z_Velocity_Stop; }
- set { SetProperty(ref _Z_Velocity_Stop, value); }
- }
- private float _U_Position;
- /// <summary>
- /// U轴位置
- /// </summary>
- public float U_Position
- {
- get { return _U_Position; }
- set { SetProperty(ref _U_Position, value); }
- }
- private float _U_Velocity;
- /// <summary>
- /// U轴速度
- /// </summary>
- public float U_Velocity
- {
- get { return _U_Velocity; }
- set { SetProperty(ref _U_Velocity, value); }
- }
- private float _R_Position;
- /// <summary>
- /// R轴位置
- /// </summary>
- public float R_Position
- {
- get { return _R_Position; }
- set { SetProperty(ref _R_Position, value); }
- }
- private float _R_Velocity;
- /// <summary>
- /// R轴速度
- /// </summary>
- public float R_Velocity
- {
- get { return _R_Velocity; }
- set { SetProperty(ref _R_Velocity, value); }
- }
- private float _Torque;
- /// <summary>
- /// 扭矩值
- /// </summary>
- public float Torque
- {
- get { return _Torque; }
- set { SetProperty(ref _Torque, value); }
- }
- private Int16 _Feeder;
- /// <summary>
- /// Feeder编号
- /// </summary>
- public Int16 Feeder
- {
- get { return _Feeder; }
- set { SetProperty(ref _Feeder, value); }
- }
- private Int16 _ScrewProNum;
- /// <summary>
- /// 电批程序号
- /// </summary>
- public Int16 ScrewProNum
- {
- get { return _ScrewProNum; }
- set { SetProperty(ref _ScrewProNum, value); }
- }
- //描述
- private string _Description;
- /// <summary>
- /// 点位描述
- /// </summary>
- public string Description
- {
- get { return _Description; }
- set { SetProperty(ref _Description, value); }
- }
- private Guid _VisionProcessID;
- /// <summary>
- /// 视觉流程ID
- /// </summary>
- public Guid VisionProcessID
- {
- get { return _VisionProcessID; }
- set { SetProperty(ref _VisionProcessID, value); }
- }
- private string _VisionProcessName;
- /// <summary>
- /// 视觉流程名称
- /// </summary>
- public string VisionProcessName
- {
- get { return _VisionProcessName; }
- set { SetProperty(ref _VisionProcessName, value); }
- }
- private float _X_Offset;
- /// <summary>
- /// X轴补偿值
- /// </summary>
- public float X_Offset
- {
- get { return _X_Offset; }
- set { SetProperty(ref _X_Offset, value); }
- }
- private float _Y_Offset;
- /// <summary>
- /// Y轴补偿值
- /// </summary>
- public float Y_Offset
- {
- get { return _Y_Offset; }
- set { SetProperty(ref _Y_Offset, value); }
- }
- private float _Z_Start_Offset;
- /// <summary>
- /// Z轴起点补偿值
- /// </summary>
- public float Z_Start_Offset
- {
- get { return _Z_Start_Offset; }
- set { SetProperty(ref _Z_Start_Offset, value); }
- }
- private float _Z_Stop_Offset;
- /// <summary>
- /// Z轴终点补偿值
- /// </summary>
- public float Z_Stop_Offset
- {
- get { return _Z_Stop_Offset; }
- set { SetProperty(ref _Z_Stop_Offset, value); }
- }
- private float _U_Offset;
- /// <summary>
- /// U轴补偿值
- /// </summary>
- public float U_Offset
- {
- get { return _U_Offset; }
- set { SetProperty(ref _U_Offset, value); }
- }
- private float _R_Offset;
- /// <summary>
- /// R轴补偿值
- /// </summary>
- public float R_Offset
- {
- get { return _R_Offset; }
- set { SetProperty(ref _R_Offset, value); }
- }
- public PlcPoint()
- {
- Number = 0;
- X_Position = 0;
- X_Velocity = 0;
- Y_Position = 0;
- Y_Velocity = 0;
- Z_Position_Start = 0;
- Z_Velocity_Start = 0;
- Z_Position_Stop = 0;
- Z_Velocity_Stop = 0;
- U_Position = 0;
- U_Velocity = 0;
- R_Position = 0;
- R_Velocity = 0;
- Torque = 0;
- Feeder = 0;
- ScrewProNum = 0;
- Description = string.Empty;
- X_Offset = 0;
- Y_Offset = 0;
- Z_Start_Offset = 0;
- Z_Stop_Offset = 0;
- U_Offset = 0;
- R_Offset = 0;
- }
- public PlcPoint Clone()
- {
- return new PlcPoint
- {
- Number = this.Number,
- Label = this.Label,
- X_Position = this.X_Position,
- X_Velocity = this.X_Velocity,
- Y_Position = this.Y_Position,
- Y_Velocity = this.Y_Velocity,
- Z_Position_Start = this.Z_Position_Start,
- Z_Velocity_Start = this.Z_Velocity_Start,
- Z_Position_Stop = this.Z_Position_Stop,
- Z_Velocity_Stop = this.Z_Velocity_Stop,
- U_Position = this.U_Position,
- U_Velocity = this.U_Velocity,
- R_Position = this.R_Position,
- R_Velocity = this.R_Velocity,
- Torque = this.Torque,
- Feeder = this.Feeder,
- ScrewProNum = this.ScrewProNum,
- Description = this.Description,
- VisionProcessID = this.VisionProcessID,
- VisionProcessName = this.VisionProcessName,
- X_Offset = this.X_Offset,
- Y_Offset = this.Y_Offset,
- Z_Start_Offset = this.Z_Start_Offset,
- Z_Stop_Offset = this.Z_Stop_Offset,
- U_Offset = this.U_Offset,
- R_Offset = this.R_Offset
- };
- }
- /// <summary>
- /// 将点位数据写入到PLC地址
- /// </summary>
- /// <param name="plcAddress"></param>
- /// <param name="pLC"></param>
- /// <returns></returns>
- public async Task<bool> WriteToPlcAddress(PlcPointAddress plcAddress, OpcUaClientPLC pLC)
- {
- Dictionary<string, object> nodeValues = new Dictionary<string, object>();
- nodeValues.Add(string.Format(plcAddress.X_Position.Address, Number), X_Position + X_Offset);
- nodeValues.Add(string.Format(plcAddress.X_Velocity.Address, Number), X_Velocity);
- nodeValues.Add(string.Format(plcAddress.Y_Position.Address, Number), Y_Position + Y_Offset);
- nodeValues.Add(string.Format(plcAddress.Y_Velocity.Address, Number), Y_Velocity);
- nodeValues.Add(string.Format(plcAddress.Z_Position_Start.Address, Number), Z_Position_Start + Z_Start_Offset);
- nodeValues.Add(string.Format(plcAddress.Z_Velocity_Start.Address, Number), Z_Velocity_Start);
- nodeValues.Add(string.Format(plcAddress.Z_Position_Stop.Address, Number), Z_Position_Stop + Z_Stop_Offset);
- nodeValues.Add(string.Format(plcAddress.Z_Velocity_Stop.Address, Number), Z_Velocity_Stop);
- nodeValues.Add(string.Format(plcAddress.U_Position.Address, Number), U_Position + U_Offset);
- nodeValues.Add(string.Format(plcAddress.U_Velocity.Address, Number), U_Velocity);
- nodeValues.Add(string.Format(plcAddress.R_Position.Address, Number), R_Position + R_Offset);
- nodeValues.Add(string.Format(plcAddress.R_Velocity.Address, Number), R_Velocity);
- nodeValues.Add(string.Format(plcAddress.Torque.Address, Number), Torque);
- nodeValues.Add(string.Format(plcAddress.Feeder.Address, Number), Feeder);
- nodeValues.Add(string.Format(plcAddress.ScrewProNum.Address, Number), ScrewProNum);
- return await pLC.WriteNodesAsync(nodeValues);
- }
- /// <summary>
- /// 将点位数据写入到PLC地址--移除OffsetX,OffsetY,OffsetU
- /// </summary>
- /// <param name="plcAddress"></param>
- /// <param name="pLC"></param>
- /// <returns></returns>
- public async Task<bool> WriteToPlcAddressEx2(PlcPointAddress plcAddress, OpcUaClientPLC pLC)
- {
- Dictionary<string, object> nodeValues = new Dictionary<string, object>();
- nodeValues.Add(string.Format(plcAddress.X_Position.Address, Number), X_Position);
- nodeValues.Add(string.Format(plcAddress.X_Velocity.Address, Number), X_Velocity);
- nodeValues.Add(string.Format(plcAddress.Y_Position.Address, Number), Y_Position);
- nodeValues.Add(string.Format(plcAddress.Y_Velocity.Address, Number), Y_Velocity);
- nodeValues.Add(string.Format(plcAddress.Z_Position_Start.Address, Number), Z_Position_Start + Z_Start_Offset);
- nodeValues.Add(string.Format(plcAddress.Z_Velocity_Start.Address, Number), Z_Velocity_Start);
- nodeValues.Add(string.Format(plcAddress.Z_Position_Stop.Address, Number), Z_Position_Stop + Z_Stop_Offset);
- nodeValues.Add(string.Format(plcAddress.Z_Velocity_Stop.Address, Number), Z_Velocity_Stop);
- nodeValues.Add(string.Format(plcAddress.U_Position.Address, Number), U_Position);
- nodeValues.Add(string.Format(plcAddress.U_Velocity.Address, Number), U_Velocity);
- nodeValues.Add(string.Format(plcAddress.R_Position.Address, Number), R_Position + R_Offset);
- nodeValues.Add(string.Format(plcAddress.R_Velocity.Address, Number), R_Velocity);
- nodeValues.Add(string.Format(plcAddress.Torque.Address, Number), Torque);
- nodeValues.Add(string.Format(plcAddress.Feeder.Address, Number), Feeder);
- nodeValues.Add(string.Format(plcAddress.ScrewProNum.Address, Number), ScrewProNum);
- return await pLC.WriteNodesAsync(nodeValues);
- }
- /// <summary>
- /// 将点位数据写入到PLC地址
- /// </summary>
- /// <param name="plcAddress"></param>
- /// <param name="pLC"></param>
- /// <returns></returns>
- public async Task<bool> WriteToPlcAddressEx(PlcPointAddress plcAddress, OpcUaClientPLC pLC)
- {
- Dictionary<string, object> nodeValues = new Dictionary<string, object>();
- //nodeValues.Add(string.Format(plcAddress.X_Position.Address, Number), X_Position);
- //nodeValues.Add(string.Format(plcAddress.X_Velocity.Address, Number), X_Velocity);
- //nodeValues.Add(string.Format(plcAddress.Y_Position.Address, Number), Y_Position);
- //nodeValues.Add(string.Format(plcAddress.Y_Velocity.Address, Number), Y_Velocity);
- //nodeValues.Add(string.Format(plcAddress.Z_Position_Start.Address, Number), Z_Position_Start);
- //nodeValues.Add(string.Format(plcAddress.Z_Velocity_Start.Address, Number), Z_Velocity_Start);
- //nodeValues.Add(string.Format(plcAddress.Z_Position_Stop.Address, Number), Z_Position_Stop);
- //nodeValues.Add(string.Format(plcAddress.Z_Velocity_Stop.Address, Number), Z_Velocity_Stop);
- //nodeValues.Add(string.Format(plcAddress.U_Position.Address, Number), U_Position);
- //nodeValues.Add(string.Format(plcAddress.U_Velocity.Address, Number), U_Velocity);
- //nodeValues.Add(string.Format(plcAddress.R_Position.Address, Number), R_Position);
- //nodeValues.Add(string.Format(plcAddress.R_Velocity.Address, Number), R_Velocity);
- //nodeValues.Add(string.Format(plcAddress.Torque.Address, Number), Torque);
- nodeValues.Add(string.Format(plcAddress.Feeder.Address, Number), Feeder);
- nodeValues.Add(string.Format(plcAddress.ScrewProNum.Address, Number), ScrewProNum);
- return await pLC.WriteNodesAsync(nodeValues);
- }
- }
- }
|