Commit 4ec025a9 LN

增加升降轴调位置功能

1 个父辈 c47fe5e0
此文件类型无法预览
此文件类型无法预览
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ACServoDriveTest</RootNamespace>
<AssemblyName>ACServoDriveTest</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
......@@ -22,6 +22,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
......@@ -31,6 +32,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
......
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>
......@@ -593,7 +593,7 @@
this.txtAddr.Name = "txtAddr";
this.txtAddr.Size = new System.Drawing.Size(103, 21);
this.txtAddr.TabIndex = 95;
this.txtAddr.Text = "1";
this.txtAddr.Text = "4";
//
// label18
//
......
......@@ -47,7 +47,7 @@ namespace ACServoDriveTest.Properties {
}
/// <summary>
/// 使用此强类型资源类,为所有资源查找
/// 重写当前线程的 CurrentUICulture 属性
/// 重写当前线程的 CurrentUICulture 属性。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
......
......@@ -12,7 +12,7 @@ namespace ACServoDriveTest.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.6.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
......
......@@ -19,7 +19,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DefineConstants>TRACE;DEBUG;PositionTool</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
......@@ -92,6 +92,12 @@
<DependentUpon>FrmStoreBox.cs</DependentUpon>
</Compile>
<Compile Include="ManagerUtil.cs" />
<Compile Include="positionTool\FrmPositionTool.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="positionTool\FrmPositionTool.Designer.cs">
<DependentUpon>FrmPositionTool.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ResourceCulture.cs" />
......@@ -110,6 +116,9 @@
<EmbeddedResource Include="FrmStoreBox.resx">
<DependentUpon>FrmStoreBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="positionTool\FrmPositionTool.resx">
<DependentUpon>FrmPositionTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resource.en-US.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
......
......@@ -8,7 +8,7 @@ using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms;
namespace OnlineStore.AutoInOutStore
{
......@@ -46,7 +46,7 @@ namespace OnlineStore.AutoInOutStore
public static readonly ILog LOGGER = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
......@@ -93,10 +93,24 @@ namespace OnlineStore.AutoInOutStore
}
if (!isShow)
{
XmlConfigurator.Configure();
XmlConfigurator.Configure();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmStoreBox());
#if PositionTool
{
string PortName = "COM3";
int slvAddr = 4;
string ioIP = "192.168.200.13";
int ioIndex = 0;
Application.Run(new FrmPositionTool(PortName,slvAddr,ioIP,ioIndex));
}
#else
{
Application.Run(new FrmStoreBox());
}
#endif
}
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
......

using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;
......@@ -13,14 +15,16 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OnlineStore.ACSingleStore
namespace OnlineStore.AutoInOutStore
{
public partial class FrmPositionTool : Form
public partial class FrmPositionTool : FrmBase
{
private string LogName = "升降轴位置调试:";
private string PortName = "";
private int SlvAddr = 0;
private string IoIp = "";
private int IoIndex = 0;
public string Axis_Brake = IO_Type.Axis_Brake;
private System.Timers.Timer toolTimer = new System.Timers.Timer();
public FrmPositionTool(string protName, int slvAddr,string ioIp, int ioIndex)
{
......@@ -34,11 +38,13 @@ namespace OnlineStore.ACSingleStore
toolTimer.Interval = 300;
toolTimer.AutoReset = true;
toolTimer.Elapsed += ToolTimer_Elapsed;
FrmPositionTool.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
ACServerManager.IsShowMsg = true;
ACServerManager.IsShowMsg = false;
LogUtil.logBox = this.richTextBox1;
//ACServerManager.richeBox = this.richTextBox1;
formStatus(false);
......@@ -47,8 +53,13 @@ namespace OnlineStore.ACSingleStore
txtAddr.Text = SlvAddr.ToString();
txtIOIndex .Text= IoIndex.ToString();
txtIoIp.Text = IoIp.ToString();
if (IOManager.instance == null)
{
IOManager.Init();
}
IOManager.instance.ConnectionIOList(new List<string> { IoIp });
timer1.Start();
}
private void btnServoOn_Click(object sender, EventArgs e)
{
......@@ -66,14 +77,34 @@ namespace OnlineStore.ACSingleStore
Thread.Sleep(100);
ACServerManager.AlarmClear(PortName, SlvAddr);
ACServerManager.ServoOn(PortName, SlvAddr);
try
{
IOManager.IOMove(Axis_Brake, IO_VALUE.HIGH);
}catch(Exception ex)
{
}
}
private void btnServoOff_Click(object sender, EventArgs e)
{
toolTimer.Stop();
StopTimer();
// toolTimer.Stop();
ACServerManager.SuddenStop(PortName, SlvAddr);
Thread.Sleep(100);
try
{
IOManager.IOMove(Axis_Brake, IO_VALUE.LOW);
}
catch (Exception ex)
{
}
ACServerManager.ServoOff(PortName, SlvAddr);
formStatus(false );
}
private void formStatus(bool p)
......@@ -81,7 +112,7 @@ namespace OnlineStore.ACSingleStore
txtPortName.Enabled = !p;
txtAddr.Enabled = !p;
txtIOIndex.Enabled = !p;
txtIoIp.Enabled = !p;
// txtIoIp.Enabled = !p;
btnAbsMove.Enabled = p;
btnSdStop.Enabled = p;
......@@ -112,7 +143,14 @@ namespace OnlineStore.ACSingleStore
int speed = Convert.ToInt32(txtSpeed.Text);
ACServerManager.SpeedMove(PortName, SlvAddr, speed);
}
private int TargetPostion = 0;
private void btnGetActualPosition_Click(object sender, EventArgs e)
{
int value = ACServerManager.GetTargetPosition(PortName, SlvAddr);
txtTargetPosition.Text = value.ToString();
value = ACServerManager.GetActualtPosition(PortName, SlvAddr);
txtActualPosition.Text = value.ToString();
}
private void btnAbsMove_Click(object sender, EventArgs e)
{
int speed = Convert.ToInt32(txtSpeed.Text);
......@@ -125,8 +163,21 @@ namespace OnlineStore.ACSingleStore
txtSpeed.Focus();
return;
}
LastValue = IO_VALUE.LOW;
string fileName = txtFileName.Text;
string filePath = Application.StartupPath + @"\" + fileName;
if (File.Exists(filePath))
{
DialogResult result = MessageBox.Show("文件【"+filePath+"】已存在,是否确定覆盖?","", MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if (!result.Equals(DialogResult.OK))
{
return;
}
}
PositionList = new List<int>();
LogUtil.info(LogName + "伺服开始运动,速度【"+speed+"】位置【"+position+"】启动定时器 ");
ACServerManager.AbsMove(PortName, SlvAddr, position,speed);
toolTimer.Start();
ACServerManager.AbsMove(PortName, SlvAddr, position);
}
private void btnSdStop_Click(object sender, EventArgs e)
......@@ -135,19 +186,85 @@ namespace OnlineStore.ACSingleStore
ACServerManager.SuddenStop(PortName, SlvAddr);
}
private IO_VALUE GetSingleValue()
{
return IOManager.instance.GetDIValue(IoIp, 0, (ushort)IoIndex);
}
private void btnGetActualPosition_Click(object sender, EventArgs e)
private int TargetPostion = 0;
private bool isInProcesss = false;
private DateTime LastTime = DateTime.Now;
private List<int> PositionList = new List<int>();
private IO_VALUE LastValue = IO_VALUE.LOW;
private void ToolTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
int value = ACServerManager.GetTargetPosition(PortName, SlvAddr);
txtTargetPosition.Text = value.ToString();
value = ACServerManager.GetActualtPosition(PortName, SlvAddr);
txtActualPosition.Text = value.ToString();
TimeSpan span = DateTime.Now - LastTime;
if (isInProcesss && span.TotalSeconds < 1)
{
return;
}
isInProcesss = true;
try
{
int moveS = ACServerManager.GetBusyStatus(PortName, SlvAddr);
if (moveS.Equals(1))
{
IO_VALUE currValue = GetSingleValue();
if (LastValue.Equals(IO_VALUE.LOW) && currValue.Equals(IO_VALUE.HIGH))
{
int currPos = ACServerManager.GetActualtPosition(PortName, SlvAddr);
txtActualPosition.Text = currPos.ToString();
PositionList.Add(currPos);
int num = PositionList.Count;
LogUtil.info(LogName + "收到信号,【"+ num + "】【" + currPos+"】");
LastValue = IO_VALUE.HIGH;
}
LastValue = currValue;
}
else
{
StopTimer();
}
}catch(Exception ex)
{
LogUtil.error(LogName+"ToolTimer_Elapsed" + ex.ToString());
}
isInProcesss = false;
}
private bool isInProcesss = false;
private void ToolTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
private void StopTimer()
{
toolTimer.Stop();
if (PositionList.Count <= 0)
{
return;
}
LogUtil.info(LogName + "伺服已停止运动,停止定时器,记录数据");
string resultstr = "";
int index = 1;
foreach (int p in PositionList)
{
resultstr += index + "," + p + "\r\n";
index++;
}
string fileName = txtFileName.Text;
string filePath = Application.StartupPath + @"\" + fileName;
try
{
// Clipboard.SetDataObject(resultstr);
File.WriteAllText(filePath, resultstr);
LogUtil.error(LogName + "保存位置到文件【" + filePath + "】成功");
}
catch (Exception ex)
{
LogUtil.error(LogName + "保存位置到文件【" + filePath + "】出错:" + ex.ToString());
}
}
private int getDataIndex = 0;
......@@ -155,22 +272,37 @@ namespace OnlineStore.ACSingleStore
{
try
{
getDataIndex++;
{
ioStatusControl1.IOValue = (int)GetSingleValue();
ioStatusControl1.ShowData();
}
catch (Exception ex)
{
}
}
try
{
}
catch (Exception ex)
private void FrmPositionTool_FormClosing(object sender, FormClosingEventArgs e)
{
timer1.Stop();
if (btnServoOff.Enabled)
{
btnServoOff_Click(null, null);
}
ACServerManager.CloseAllPort();
IOManager.instance.CloseAllConnection();
}
private void btnOpenFolder_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("Explorer.exe", Application.StartupPath);
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
......@@ -19,7 +19,7 @@ namespace OnlineStore.Common
public static System.Windows.Forms.RichTextBox logBox = null;
public static int showCount = 20;
public static int showCount = 100;
public static bool debug_opened = false;
......
......@@ -18,7 +18,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DefineConstants>TRACE;DEBUG;PositionTool</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
......@@ -36,6 +36,9 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
<Reference Include="CodeLibrary">
<HintPath>..\..\dll\CodeLibrary.dll</HintPath>
</Reference>
......@@ -61,11 +64,8 @@
<Compile Include="acSingleStore\AutomaticBaiting_Partial.cs" />
<Compile Include="acSingleStore\StoreManager.cs" />
<Compile Include="acSingleStore\AutomaticBaiting.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\BLL2.cs" />
<Compile Include="DeviceLibrary\halcon\CodeManager.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\AIOBOXManager.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\BLL.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\Common.cs" />
<Compile Include="DeviceLibrary\IO\IOManager.cs" />
<Compile Include="DeviceLibrary\IO\KangNaiDe\KNDManager.cs" />
<Compile Include="DeviceLibrary\IO\KangNaiDe\MasterTcpClient.cs" />
......
......@@ -11,7 +11,31 @@ namespace OnlineStore.DeviceLibrary
public abstract class IOManager
{
public static IOManager instance = null;
protected static ushort GetDILength(string ioIp)
{
try
{
return StoreManager.Config.GetDILength(ioIp);
}
catch (Exception ex)
{
}
return 16;
}
protected static ushort GetDOLength(string ioIp)
{
try
{
return StoreManager.Config.GetDOLength(ioIp);
}
catch (Exception ex)
{
}
return 16;
}
public abstract void ConnectionIOList(List<string> dIODeviceNameList);
......
......@@ -125,7 +125,7 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(10);
//读取所有的DO
ReadMultipleDO(ioIp, DefualtSlaveID, DoStartAddress, StoreManager.Config.GetDOLength(ioIp));
ReadMultipleDO(ioIp, DefualtSlaveID, DoStartAddress, GetDOLength(ioIp));
}
catch (Exception error)
......@@ -245,7 +245,7 @@ namespace OnlineStore.DeviceLibrary
foreach (string key in mastMap.Keys)
{
byte[] data = new byte[] { 0, 0 };
WriteMultipleDO(key, DefualtSlaveID, DoStartAddress, StoreManager.Config.GetDOLength(key), data);
WriteMultipleDO(key, DefualtSlaveID, DoStartAddress, GetDOLength(key), data);
}
}
......@@ -263,7 +263,7 @@ namespace OnlineStore.DeviceLibrary
}
public static void CloseAllDO(string ioIp, byte slaveId)
{
ushort length = StoreManager.Config.GetDOLength(ioIp);
ushort length = GetDOLength(ioIp);
byte[] bytes = new byte[length];
for (int i = 0; i < length; i++)
{
......@@ -448,7 +448,7 @@ namespace OnlineStore.DeviceLibrary
{
try
{
ushort DILength = StoreManager.Config.GetDILength(ioIp);
ushort DILength =GetDILength(ioIp);
string finalData = "";
if (values.Length == 2 && DILength.Equals(16))
{
......@@ -496,9 +496,10 @@ namespace OnlineStore.DeviceLibrary
}
}
private static void SaveDOData(string ioIp, ushort ID, byte[] values)
{
ushort DoLength = StoreManager.Config.GetDOLength(ioIp);
ushort DoLength = GetDOLength(ioIp);
string finalData = "";
if (values.Length == 2 && DoLength.Equals(16))
{
......
......@@ -83,7 +83,7 @@ namespace OnlineStore.DeviceLibrary
int ACBaudRate = ConfigAppSettings.GetIntValue(Setting_Init.ACBaudRate);
if (ACBaudRate <= 0)
{
ACBaudRate = 9600;
ACBaudRate = 115200;
}
AcSerialBean bean = new AcSerialBean(portName, ACBaudRate, Parity.Even, 8, StopBits.One);
bool result = bean.openPort();
......
......@@ -1624,16 +1624,16 @@ namespace OnlineStore.DeviceLibrary
boxStatus.SetMsg(obj.WarnMsg, obj.MsgCode, obj.MsgParam);
lineOperation.SetMsg(obj.WarnMsg, obj.MsgCode, obj.MsgParam);
}
if (lineOperation.msg.Equals(""))
if (lineOperation.msg.Equals("") && (!AutomaticBaiting.CodeMsg.Equals("")))
{
boxStatus.SetMsg(AutomaticBaiting.CodeMsg, ResourceControl.NoCodeMsg );
boxStatus.SetMsg(AutomaticBaiting.CodeMsg, ResourceControl.NoCodeMsg);
lineOperation.SetMsg(AutomaticBaiting.CodeMsg, ResourceControl.NoCodeMsg);
AutomaticBaiting.CodeMsg = "";
}
if (lineOperation.msg.Equals(""))
if (lineOperation.msg.Equals("") && (!CodeOrInoutMsg.Equals("")))
{
boxStatus.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
lineOperation.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
boxStatus.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
lineOperation.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
CodeOrInoutMsg = "";
}
if (CodeOrInoutMsg.Equals(""))
......
......@@ -583,7 +583,7 @@ namespace OnlineStore.DeviceLibrary
if (IOManager.IOValue(IO_Type.SafetyLightCurtains).Equals(IO_VALUE.HIGH))
{
InStoreLog("送出料盘:SI_13 叉子从库位返回,进出轴到P1(待机点) ");
CodeOrInoutMsg = "";
CodeOrInoutMsg = "";
// 5= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态)
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PositionNum : "";
lastPosId = "";
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!