|
|
@ -1,4 +1,5 @@
|
|
|
|
using GTN;
|
|
|
|
using GTN;
|
|
|
|
|
|
|
|
using gts;
|
|
|
|
using Rs.Framework;
|
|
|
|
using Rs.Framework;
|
|
|
|
using Rs.Motion.GugaoEcat;
|
|
|
|
using Rs.Motion.GugaoEcat;
|
|
|
|
using System;
|
|
|
|
using System;
|
|
|
@ -39,117 +40,117 @@ namespace Rs.Motion
|
|
|
|
ECatIOCard card1 = null;
|
|
|
|
ECatIOCard card1 = null;
|
|
|
|
ECatIOCard cardIn2= null;
|
|
|
|
ECatIOCard cardIn2= null;
|
|
|
|
|
|
|
|
|
|
|
|
//第一张卡
|
|
|
|
////第一张卡
|
|
|
|
|
|
|
|
|
|
|
|
string filename = "config/motion/io/ecatio_5_32_0.xml";
|
|
|
|
string filename = "config/motion/io/ecatio_5_32_0.xml";
|
|
|
|
if (!File.Exists(filename))
|
|
|
|
//if (!File.Exists(filename))
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
cardIn2 = new ECatIOCard();
|
|
|
|
// cardIn2 = new ECatIOCard();
|
|
|
|
|
|
|
|
|
|
|
|
cardIn2.Name = "EC4-3200A(1号卡)";
|
|
|
|
// cardIn2.Name = "EC4-3200A(1号卡)";
|
|
|
|
cardIn2.Init(32, 0, 5);
|
|
|
|
// cardIn2.Init(32, 0, 5);
|
|
|
|
bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, cardIn2);
|
|
|
|
// bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, cardIn2);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
else
|
|
|
|
//else
|
|
|
|
XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out cardIn2);
|
|
|
|
// XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out cardIn2);
|
|
|
|
if (cardIn2 != null)
|
|
|
|
//if (cardIn2 != null)
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
cardIn2.Vender = "Gugao";
|
|
|
|
// cardIn2.Vender = "Gugao";
|
|
|
|
ioCards.Add(cardIn2);
|
|
|
|
// ioCards.Add(cardIn2);
|
|
|
|
Add(cardIn2);
|
|
|
|
// Add(cardIn2);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
//第二张卡
|
|
|
|
////第二张卡
|
|
|
|
|
|
|
|
|
|
|
|
filename = "config/motion/io/ecatio_6_0_32.xml";
|
|
|
|
// filename = "config/motion/io/ecatio_6_0_32.xml";
|
|
|
|
if (!File.Exists(filename))
|
|
|
|
//if (!File.Exists(filename))
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1 = new ECatIOCard();
|
|
|
|
// card1 = new ECatIOCard();
|
|
|
|
card1.Name = "EC4-3200A(1号卡)";
|
|
|
|
// card1.Name = "EC4-3200A(1号卡)";
|
|
|
|
card1.Init(0, 32, 6);
|
|
|
|
// card1.Init(0, 32, 6);
|
|
|
|
bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
// bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
else
|
|
|
|
//else
|
|
|
|
XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
// XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
if (card1 != null)
|
|
|
|
//if (card1 != null)
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1.Vender = "Gugao";
|
|
|
|
// card1.Vender = "Gugao";
|
|
|
|
ioCards.Add(card1);
|
|
|
|
// ioCards.Add(card1);
|
|
|
|
Add(card1);
|
|
|
|
// Add(card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
//第三张卡
|
|
|
|
////第三张卡
|
|
|
|
|
|
|
|
|
|
|
|
filename = "config/motion/io/ecatio_7_16_16.xml";
|
|
|
|
//filename = "config/motion/io/ecatio_7_16_16.xml";
|
|
|
|
if (!File.Exists(filename))
|
|
|
|
//if (!File.Exists(filename))
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1 = new ECatIOCard();
|
|
|
|
// card1 = new ECatIOCard();
|
|
|
|
card1.Name = "EC4-1616(3号卡)";
|
|
|
|
// card1.Name = "EC4-1616(3号卡)";
|
|
|
|
card1.Init(16, 16, 7);
|
|
|
|
// card1.Init(16, 16, 7);
|
|
|
|
bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
// bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
else
|
|
|
|
//else
|
|
|
|
XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
// XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
if (card1 != null)
|
|
|
|
//if (card1 != null)
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1.Vender = "Gugao";
|
|
|
|
// card1.Vender = "Gugao";
|
|
|
|
ioCards.Add(card1);
|
|
|
|
// ioCards.Add(card1);
|
|
|
|
Add(card1);
|
|
|
|
// Add(card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
//第四张卡
|
|
|
|
////第四张卡
|
|
|
|
|
|
|
|
|
|
|
|
filename = "config/motion/io/ecatio_8_32_0.xml";
|
|
|
|
//filename = "config/motion/io/ecatio_8_32_0.xml";
|
|
|
|
if (!File.Exists(filename))
|
|
|
|
//if (!File.Exists(filename))
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1 = new ECatIOCard();
|
|
|
|
// card1 = new ECatIOCard();
|
|
|
|
card1.Name = "EC4-3200A(4号卡)";
|
|
|
|
// card1.Name = "EC4-3200A(4号卡)";
|
|
|
|
card1.Init(32, 0, 8);
|
|
|
|
// card1.Init(32, 0, 8);
|
|
|
|
bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
// bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
else
|
|
|
|
//else
|
|
|
|
XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
// XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
if (card1 != null)
|
|
|
|
//if (card1 != null)
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1.Vender = "Gugao";
|
|
|
|
// card1.Vender = "Gugao";
|
|
|
|
ioCards.Add(card1);
|
|
|
|
// ioCards.Add(card1);
|
|
|
|
Add(card1);
|
|
|
|
// Add(card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
//第五张卡
|
|
|
|
////第五张卡
|
|
|
|
filename = "config/motion/io/ecatio_9_0_32.xml";
|
|
|
|
//filename = "config/motion/io/ecatio_9_0_32.xml";
|
|
|
|
if (!File.Exists(filename))
|
|
|
|
//if (!File.Exists(filename))
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1 = new ECatIOCard();
|
|
|
|
// card1 = new ECatIOCard();
|
|
|
|
card1.Name = "EC4-0032(5号卡)";
|
|
|
|
// card1.Name = "EC4-0032(5号卡)";
|
|
|
|
card1.Init(0, 32, 9);
|
|
|
|
// card1.Init(0, 32, 9);
|
|
|
|
bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
// bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
else
|
|
|
|
//else
|
|
|
|
XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
// XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
if (card1 != null)
|
|
|
|
//if (card1 != null)
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1.Vender = "Gugao";
|
|
|
|
// card1.Vender = "Gugao";
|
|
|
|
ioCards.Add(card1);
|
|
|
|
// ioCards.Add(card1);
|
|
|
|
Add(card1);
|
|
|
|
// Add(card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
//第六张卡
|
|
|
|
////第六张卡
|
|
|
|
filename = "config/motion/io/ecatio_10_16_16.xml";
|
|
|
|
//filename = "config/motion/io/ecatio_10_16_16.xml";
|
|
|
|
if (!File.Exists(filename))
|
|
|
|
//if (!File.Exists(filename))
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1 = new ECatIOCard();
|
|
|
|
// card1 = new ECatIOCard();
|
|
|
|
card1.Name = "EC4-1616(6号卡)";
|
|
|
|
// card1.Name = "EC4-1616(6号卡)";
|
|
|
|
card1.Init(16, 16, 10);
|
|
|
|
// card1.Init(16, 16, 10);
|
|
|
|
bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
// bool suc = XmlSerializerHelper.Instance.Serialize<ECatIOCard>(filename, card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
else
|
|
|
|
//else
|
|
|
|
XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
// XmlSerializerHelper.Instance.Deserialize<ECatIOCard>(filename, out card1);
|
|
|
|
if (card1 != null)
|
|
|
|
//if (card1 != null)
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
card1.Vender = "Gugao";
|
|
|
|
// card1.Vender = "Gugao";
|
|
|
|
ioCards.Add(card1);
|
|
|
|
// ioCards.Add(card1);
|
|
|
|
Add(card1);
|
|
|
|
// Add(card1);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GLinkIOCard iocard = null;
|
|
|
|
GLinkIOCard iocard = null;
|
|
|
@ -159,6 +160,8 @@ namespace Rs.Motion
|
|
|
|
{
|
|
|
|
{
|
|
|
|
iocard = new GLinkIOCard();
|
|
|
|
iocard = new GLinkIOCard();
|
|
|
|
iocard.Name = "GLink0";
|
|
|
|
iocard.Name = "GLink0";
|
|
|
|
|
|
|
|
iocard.CardType = 0;
|
|
|
|
|
|
|
|
iocard.IsEtherCat = false;
|
|
|
|
iocard.Init(16, 16, 0);
|
|
|
|
iocard.Init(16, 16, 0);
|
|
|
|
bool suc = XmlSerializerHelper.Instance.Serialize<GLinkIOCard>(filename, iocard);
|
|
|
|
bool suc = XmlSerializerHelper.Instance.Serialize<GLinkIOCard>(filename, iocard);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -168,15 +171,15 @@ namespace Rs.Motion
|
|
|
|
{
|
|
|
|
{
|
|
|
|
iocard.Vender = "Gugao";
|
|
|
|
iocard.Vender = "Gugao";
|
|
|
|
ioCards.Add(iocard);
|
|
|
|
ioCards.Add(iocard);
|
|
|
|
foreach (var item in iocard.DIn)
|
|
|
|
//foreach (var item in iocard.DIn)
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
item.IsReverse = false;
|
|
|
|
// item.IsReverse = false;
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var item in iocard.DOut)
|
|
|
|
//foreach (var item in iocard.DOut)
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
item.IsReverse = true;
|
|
|
|
// item.IsReverse = true;
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
Add(iocard);
|
|
|
|
Add(iocard);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -203,17 +206,30 @@ namespace Rs.Motion
|
|
|
|
if(ioDic.ContainsKey(name))
|
|
|
|
if(ioDic.ContainsKey(name))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
IIO io = ioDic[name];
|
|
|
|
IIO io = ioDic[name];
|
|
|
|
if(io.Card.Vender=="Gugao"&&io.Card.IsEtherCat)
|
|
|
|
if(io.Card.CardType==1)//总线
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ECatIO eio = (ECatIO)io;
|
|
|
|
if(io.Card.IsEtherCat)
|
|
|
|
apiResult = mc_ecat.GTN_EcatIOBitReadInput(eio.Core, eio.SlaveNo, eio.Offset, eio.Index, out byte pValue);
|
|
|
|
{
|
|
|
|
if (apiResult == 0)
|
|
|
|
ECatIO eio = (ECatIO)io;
|
|
|
|
return pValue;
|
|
|
|
apiResult = mc_ecat.GTN_EcatIOBitReadInput(eio.Core, eio.SlaveNo, eio.Offset, eio.Index, out byte pValue);
|
|
|
|
|
|
|
|
if (apiResult == 0)
|
|
|
|
|
|
|
|
return pValue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GLinkIO eio = (GLinkIO)io;
|
|
|
|
|
|
|
|
apiResult = mc_ecat.GTN_GetDi(1, mc_ecat.MC_GPI, out Int32 value);
|
|
|
|
|
|
|
|
if (apiResult == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
byte pValue = (byte)(~(value >> eio.Index) & 0x01);
|
|
|
|
|
|
|
|
return pValue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(io.Card.Vender == "Gugao" && !io.Card.IsEtherCat)
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GLinkIO eio = (GLinkIO)io;
|
|
|
|
GLinkIO eio = (GLinkIO)io;
|
|
|
|
apiResult = mc_ecat.GTN_GetDi(1, mc_ecat.MC_GPI, out Int32 value);
|
|
|
|
apiResult = mc_pulse.GT_GetDi((short)io.CardID,mc_pulse.MC_GPI, out int value);
|
|
|
|
if (apiResult == 0)
|
|
|
|
if (apiResult == 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
byte pValue = (byte)(~(value >> eio.Index) & 0x01);
|
|
|
|
byte pValue = (byte)(~(value >> eio.Index) & 0x01);
|
|
|
@ -230,18 +246,30 @@ namespace Rs.Motion
|
|
|
|
if (ioDic.ContainsKey(name))
|
|
|
|
if (ioDic.ContainsKey(name))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
IIO io = ioDic[name];
|
|
|
|
IIO io = ioDic[name];
|
|
|
|
if (io.Card.Vender == "Gugao" && io.Card.IsEtherCat)
|
|
|
|
if (io.Card.CardType==1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ECatIO eio = (ECatIO)io;
|
|
|
|
if(io.Card.IsEtherCat)
|
|
|
|
apiResult = mc_ecat.GTN_EcatIOBitReadOutput(eio.Core, eio.SlaveNo, eio.Offset, eio.Index, out byte pValue);
|
|
|
|
{
|
|
|
|
if (apiResult == 0)
|
|
|
|
ECatIO eio = (ECatIO)io;
|
|
|
|
return pValue;
|
|
|
|
apiResult = mc_ecat.GTN_EcatIOBitReadOutput(eio.Core, eio.SlaveNo, eio.Offset, eio.Index, out byte pValue);
|
|
|
|
|
|
|
|
if (apiResult == 0)
|
|
|
|
|
|
|
|
return pValue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GLinkIO eio = (GLinkIO)io;
|
|
|
|
|
|
|
|
apiResult = mc_ecat.GTN_GetDo(1, mc_ecat.MC_GPO, out Int32 value);
|
|
|
|
|
|
|
|
if (apiResult == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
byte pValue = (byte)(~(value >> eio.Index) & 0x01);
|
|
|
|
|
|
|
|
return pValue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (io.Card.Vender == "Gugao" && !io.Card.IsEtherCat)
|
|
|
|
else if (io.Card.Vender == "Gugao" && !io.Card.IsEtherCat)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GLinkIO eio = (GLinkIO)io;
|
|
|
|
GLinkIO eio = (GLinkIO)io;
|
|
|
|
apiResult = mc_ecat.GTN_GetDo(1, mc_ecat.MC_GPO, out Int32 value);
|
|
|
|
apiResult = mc_pulse.GT_GetDo(io.CardID, mc_pulse.MC_GPO, out Int32 value);
|
|
|
|
|
|
|
|
|
|
|
|
if (apiResult == 0)
|
|
|
|
if (apiResult == 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
byte pValue = (byte)(~(value >> eio.Index) & 0x01);
|
|
|
|
byte pValue = (byte)(~(value >> eio.Index) & 0x01);
|
|
|
@ -269,17 +297,25 @@ namespace Rs.Motion
|
|
|
|
{
|
|
|
|
{
|
|
|
|
value = (byte)(~(value & 0x01) & 0x01);//取反最后一位
|
|
|
|
value = (byte)(~(value & 0x01) & 0x01);//取反最后一位
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(io.Card.Vender=="Gugao" && io.Card.IsEtherCat)
|
|
|
|
if(io.Card.CardType==1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ECatIO eio = (ECatIO)io;
|
|
|
|
if(io.Card.IsEtherCat)
|
|
|
|
apiResult = mc_ecat.GTN_EcatIOBitWriteOutput(eio.Core, eio.SlaveNo, eio.Offset, (short)eio.Index, value);
|
|
|
|
{
|
|
|
|
if (apiResult == 0)
|
|
|
|
ECatIO eio = (ECatIO)io;
|
|
|
|
return 0;
|
|
|
|
apiResult = mc_ecat.GTN_EcatIOBitWriteOutput(eio.Core, eio.SlaveNo, eio.Offset, (short)eio.Index, value);
|
|
|
|
|
|
|
|
if (apiResult == 0)
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GLinkIO gio = (GLinkIO)io;
|
|
|
|
|
|
|
|
mc_ecat.GTN_SetDoBit(1, mc_ecat.MC_GPO, (short)(gio.Index + 1), value);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (io.Card.Vender == "Gugao" && !io.Card.IsEtherCat)
|
|
|
|
else if (io.Card.Vender == "Gugao" && !io.Card.IsEtherCat)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GLinkIO gio = (GLinkIO)io;
|
|
|
|
GLinkIO gio = (GLinkIO)io;
|
|
|
|
mc_ecat.GTN_SetDoBit(1, mc_ecat.MC_GPO, (short)(gio.Index+1), value);
|
|
|
|
mc_pulse.GT_SetDoBit(gio.CardID, mc_pulse.MC_GPO, (short)(gio.Index + 1), value);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|