Commit 7ff6809b ke.sun

伺服485通信修改

1 个父辈 4d3f3c12
......@@ -141,22 +141,22 @@ namespace OnlineStore.ACSingleStore
//验证运动是否完成
//CheckWait();
string portName = GetPortName();
int SlvAddr = GetSlaveAddr();
//string portName = GetPortName();
//int SlvAddr = GetSlaveAddr();
//判断私服是否打开、
if (ACServerManager.ServerOnStatus(portName, SlvAddr) )
{
lblServerOn.Text = "伺服ON";
int lOutPulse = ACServerManager.GetTargetPosition(portName, SlvAddr);
lblOutPulse.Text = string.Format("{0:d}", lOutPulse);
int lCountPulse = ACServerManager.GetActualtPosition(portName, SlvAddr);
lblCountPulse.Text = string.Format("{0:d}", lCountPulse);
}
else
{
lblServerOn.Text = "伺服OFF";
}
// //判断私服是否打开、
//if (ACServerManager.ServerOnStatus(portName, SlvAddr) )
//{
// lblServerOn.Text = "伺服ON";
// int lOutPulse = ACServerManager.GetTargetPosition(portName, SlvAddr);
// lblOutPulse.Text = string.Format("{0:d}", lOutPulse);
// int lCountPulse = ACServerManager.GetActualtPosition(portName, SlvAddr);
// lblCountPulse.Text = string.Format("{0:d}", lCountPulse);
//}
//else
//{
// lblServerOn.Text = "伺服OFF";
//}
//ReadPosistion();
if (store.storeRunStatus > StoreRunStatus.Wait)
......
......@@ -339,7 +339,7 @@ namespace OnlineStore.Common
if (_serialPort.IsOpen)
{
lock (lockObj)
lock (_serialPort)
{
try
{
......@@ -351,13 +351,18 @@ namespace OnlineStore.Common
{
ReceiveData = new byte[ReceiveLength];
}
int i = 0;
while (num++ < Overtime)
{
i++;
if (_serialPort.BytesToRead >= ReceiveData.Length)
break;
System.Threading.Thread.Sleep(1);
}
if (i >= 100)
{
LogUtil.info("等待超时");
}
if (_serialPort.BytesToRead >= ReceiveData.Length)
{
......
......@@ -13,7 +13,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
public partial class ACServerManager
{
private static bool IsShowMsg = false;
private static bool IsShowMsg = false ;
private static int SleepMSendons = 100;
public static bool OpenPort(string portName)
{
......@@ -155,7 +155,7 @@ namespace OnlineStore.DeviceLibrary
string data = "6173";
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, addr, data, length);
SendData(portName, dataArray);
SendData(portName, dataArray, 5);
}
public static void ServoOn(string portName, int slvAddr)
{
......
......@@ -32,13 +32,13 @@ namespace OnlineStore.DeviceLibrary
{
//运动
byte[] data = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, ACCMDManager.BlockNo, index.ToString(), 2);
SendData(portName, data);
SendData(portName, data);
Thread.Sleep(100);
CloseSTB(portName,slvAddr);
CloseSTB(portName, slvAddr);
Thread.Sleep(100);
OnlyOpenSTB(portName,slvAddr);
OnlyOpenSTB(portName, slvAddr);
}
public static void SendStrAndSleep(string portName, string str,int sleepS)
public static void SendStrAndSleep(string portName, string str, int sleepS)
{
byte[] data = SerialBean.StringToByte(str);
data[data.Length - 1] = 0x00;
......@@ -53,7 +53,7 @@ namespace OnlineStore.DeviceLibrary
data[data.Length - 1] = 0x00;
data[data.Length - 2] = 0x00;
data = ACCMDManager.buildCheckData(data, data.Length - 2);
SendData(portName, data);
SendData(portName, data);
}
private static void DataReceived(string portName, object sender, SerialDataReceivedEventArgs e, byte[] bits)
{
......@@ -64,7 +64,7 @@ namespace OnlineStore.DeviceLibrary
}
if (IsShowMsg)
{
LogUtil.info(DateTime.Now.ToLongTimeString() + " 收到数据:" + strSend + "\r\n");
LogUtil.info( "串口" + portName + " 收到数据:" + strSend + "");
}
string str = "";
string strFromat = "{0:X2}";
......@@ -100,8 +100,8 @@ namespace OnlineStore.DeviceLibrary
}
str = str.Replace(" ", "");
int value = Convert.ToInt32(str, 16);
LogUtil.info("转换后结果:" + value + "\r\n");
//this.richTextBox1.AppendText("转换后结果:" + value + "\r\n");
LogUtil.info("转换后结果:" + value + "");
//this.richTextBox1.AppendText("转换后结果:" + value + "");
//Console.WriteLine("转换后结果:" + value);
}
//MessageBox.Show("收到数据:"+value);
......@@ -117,7 +117,7 @@ namespace OnlineStore.DeviceLibrary
SaveData(portName, slvAddr, ACCMDManager.ServerOn_Addr, value);
}
}
else
else
if (PreReadCoilAddr.Equals(ACCMDManager.Alarm_Status))
{
if (lenth == 1)
......@@ -181,36 +181,65 @@ namespace OnlineStore.DeviceLibrary
{
return LastDataMap[slvAddr][regAddr];
}
} return null;
}
return null;
}
public static void SendData(string portName, byte[] data)
public static void SendData(string portName, byte[] data, int reviceLength)
{
if (data == null)
{
return;
}
byte[] returnData = SendCommand(portName, data, 100, reviceLength);
string strSend = "";
for (int i = 0; i < data.Length; i++)
for (int i = 0; i < returnData.Length; i++)
{
strSend += string.Format("{0:X2} ", data[i]);
strSend += string.Format("{0:X2} ", returnData[i]);
}
if (strSend.Equals(""))
if (IsShowMsg)
{
LogUtil.info( "串口" + portName + " 收到数据:" + strSend + "");
}
}
public static void SendData(string portName, byte[] data)
{
if (data == null)
{
return;
}
if (IsShowMsg)
//string strSend = "";
//for (int i = 0; i < data.Length; i++)
//{
// strSend += string.Format("{0:X2} ", data[i]);
//}
//if (strSend.Equals(""))
//{
// return;
//}
//if (IsShowMsg)
//{
// LogUtil.info( " 写入数据:" + strSend + "");
//}
//AcSerialBean bean = GetSerialBean(portName);
//if (bean == null)
//{
// LogUtil.debug("ACServerManager SendData 试图向未打开串口【" + portName + "】写入数据:" + strSend + "。");
// return;
//}
//bean.SendData(data, 0, data.Length);
byte[] returnData = SendCommand(portName, data, 100, 8);
string strSend = "";
for (int i = 0; i < returnData.Length; i++)
{
LogUtil.info(DateTime.Now.ToLongTimeString() + " 写入数据:" + strSend + "\r\n");
strSend += string.Format("{0:X2} ", returnData[i]);
}
AcSerialBean bean = GetSerialBean(portName);
if (bean == null)
if (IsShowMsg)
{
LogUtil.debug("ACServerManager SendData 试图向未打开串口【" + portName + "】写入数据:" + strSend + "。");
return;
LogUtil.info( "串口" + portName + " 收到数据:" + strSend + "");
}
bean.SendData(data, 0, data.Length);
}
/// <summary>
/// 发送数据并获取返回值
......@@ -239,7 +268,7 @@ namespace OnlineStore.DeviceLibrary
}
if (IsShowMsg)
{
LogUtil.info(DateTime.Now.ToLongTimeString() + " 写入数据:" + strSend + "\r\n");
LogUtil.info( "串口" + portName + " 写入数据:" + strSend + "");
}
AcSerialBean bean = GetSerialBean(portName);
if (bean == null)
......@@ -263,7 +292,7 @@ namespace OnlineStore.DeviceLibrary
{
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, cmd, addr, data, length);
SendData(portName, dataArray);
}
}
public static void SendStr(string portName, int slvAddr, string str)
{
//string str = txtSendStr.Text;
......@@ -271,7 +300,7 @@ namespace OnlineStore.DeviceLibrary
data[data.Length - 1] = 0x00;
data[data.Length - 2] = 0x00;
data = ACCMDManager.buildCheckData(data, data.Length - 2);
SendData(portName, data);
SendData(portName, data);
}
public static void Stop(string portName, int slvAddr)
......@@ -312,12 +341,12 @@ namespace OnlineStore.DeviceLibrary
OnlyOpenSTB(portName, slvAddr);
System.Threading.Thread.Sleep(100);
CloseSTB(portName, slvAddr);
}
}
public static void OnlyOpenSTB(string portName, int slvAddr)
{
string addr = ACCMDManager.STB_Addr;
string data = "FF00";
string data = "FF00";
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
......@@ -325,7 +354,7 @@ namespace OnlineStore.DeviceLibrary
public static void CloseSTB(string portName, int slvAddr)
{
string addr = ACCMDManager.STB_Addr;
string data = "0000";
string data = "0000";
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
......@@ -371,10 +400,10 @@ namespace OnlineStore.DeviceLibrary
for (int i = 0; i < reviceData.Length; i++)
{
strSend += string.Format("{0:X2} ", reviceData[i]);
}
}
if (IsShowMsg)
{
LogUtil.info(DateTime.Now.ToLongTimeString() + " 收到数据:" + strSend + "\r\n");
LogUtil.info( "串口" + portName + " 收到数据:" + strSend + "");
}
string strFromat = "{0:X2}";
byte slvAddrR = reviceData[0];
......@@ -388,7 +417,8 @@ namespace OnlineStore.DeviceLibrary
SaveData(portName, slvAddrR, Address, value);
return value;
}
} return -1;
}
return -1;
}
public static int GetTargetPosition(string portName, int slvAddr)
{
......@@ -421,7 +451,7 @@ namespace OnlineStore.DeviceLibrary
if (IsShowMsg)
{
LogUtil.info(DateTime.Now.ToLongTimeString() + " 收到数据:" + strSend + "\r\n");
LogUtil.info( "串口" + portName + " 收到数据:" + strSend + "");
}
string strFromat = "{0:X2}";
byte slvAddrR = reviceData[0];
......@@ -435,7 +465,8 @@ namespace OnlineStore.DeviceLibrary
SaveData(portName, slvAddrR, Address, value);
return value;
}
} return -1;
}
return -1;
}
public static int GetAlarmStatus(string portName, int slvAddr)
{
......@@ -445,7 +476,7 @@ namespace OnlineStore.DeviceLibrary
byte[] reviceData = SendCommand(portName, dataArray, 100, 6);
return GetCoilData(portName, reviceData, PreReadCoilAddr);
}
public static int GetBusyStatus(string portName, int slvAddr)
{
PreReadCoilAddr = ACCMDManager.BUSYStatus;
......
......@@ -29,12 +29,12 @@ AXIS,(轴二)升降轴轴,UpDown_Axis,1,COM4,0,,,,
AXIS,(轴三)进出轴,InOut_Axis,1,COM5,0,,,,
PRO,温湿度传感器地址,Temperate_ServerAddress,192.168.200.14,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,700000,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,702000,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,702000,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,705000,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,705000,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,700000,,,,,,
,进出轴进料口取料点 P2,InOutAxis_DoorPosition_P2,4000,,,,,,
,进出轴进料口取料点 P2,InOutAxis_DoorPosition_P2,6000,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,230000,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,1000,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,2000,,,,,,
PRO,押金轴(轴4)P1待机原位点,CompressAxis_P1_Position,360,,,,,,
,,,,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,0,,,,, ,
......@@ -43,37 +43,37 @@ PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,
PRO,温湿度传感器地址,TemperateServer_Port,9001,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,
PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,300,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,5000,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,5000,,,,,,
PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,100,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,3000,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,3000,,,,,,
PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,10,,,,,,
PRO,(轴一)旋转轴原点高速,MiddleAxis_HomeHighSpeed,60,,,,,,
PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,500,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,200,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,100,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,100,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,100,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,3000,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,3000,,,,,,
PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,100,,,,,,
PRO,(轴二)升降轴轴原点高速,UpdownAxis_HomeHighSpeed,200,,,,,,
PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,200,,,,,,
PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,200,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,3000,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,3000,,,,,,
PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,100,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,5000,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,5000,,,,,,
PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,20,,,,,,
PRO,(轴三)进出轴原点高速,InoutAxis_HomeHighSpeed,60,,,,,,
PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,200,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,200,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,150,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,150,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,80,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,150,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,80,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,80,,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,80,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,200,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,100,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,100,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,80,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,80,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,600,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,500,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,500,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,200,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,500,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,200,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,200,,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,200,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,400,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,400,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,150,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,100,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,100,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,10,,,,,,
......
位置,优先级,高度,宽度,料仓ID,中轴位置P2,升降轴库位出料前点P5,升降轴库位出料缓冲点P6,升降轴库位入料前点P3,升降轴库位入料缓冲点P4,进出轴库位点取料点P3,压紧轴压紧点P2,压紧轴压紧前点P3,进出轴进料口取料点P2,升降轴进料口出料前点P2,升降轴进料口取料缓冲点P7
1#AC1_1_2_2,149,65,325,1,165000,720000,723000,723000,720000,5000, ,0,4000,703000,703000
1#AC1_1_2_2,149,65,325,1,165000,1400000,1410000,1410000,1400000,20000,0,0,10000,703000,703000
1#AC1_1_2_3,148,65,325,1,165000,1020000,1023000,1023000,1020000,5000,0,0,4000,703000,703000
1#AC1_1_2_4,147,65,325,1,165000,720000,723000,723000,720000,5000,0,0,4000,703000,703000
1#AC1_1_2_5,146,65,325,1,165000,720000,723000,723000,720000,5000,0,0,4000,703000,703000
......
......@@ -152,6 +152,10 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = true;
}
}
else
{
}
}
}
else if (wait.WaitType == 2)
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!