Commit a6da74b6 张东亮

1楼和楼上都使用时,优先楼上

1 个父辈 bf803b1b
......@@ -8,6 +8,6 @@
<add key="Line_Config" value="LineConfig.csv"/>
<add key="ServiceBaseUrl" value="http://127.0.0.1:8887"/>
<add key="Lift_Ids" value="LIFT_D2,LIFT_C1"/>
<add key="Lift_Buffs" value="[{&quot;liftId&quot;:&quot;D2&quot;,&quot;Status&quot;:{&quot;floor&quot;:0,&quot;door&quot;:&quot;&quot;,&quot;sourceClient&quot;:&quot;&quot;,&quot;sourceFloor&quot;:0,&quot;sourcePoint&quot;:&quot;&quot;,&quot;destinationClient&quot;:&quot;&quot;,&quot;destinationFloor&quot;:0,&quot;destinationPoint&quot;:&quot;&quot;},&quot;State&quot;:0,&quot;RunState&quot;:0,&quot;Clients&quot;:[]},{&quot;liftId&quot;:&quot;C1&quot;,&quot;Status&quot;:{&quot;floor&quot;:0,&quot;door&quot;:&quot;&quot;,&quot;sourceClient&quot;:&quot;HY1F&quot;,&quot;sourceFloor&quot;:1,&quot;sourcePoint&quot;:&quot;4DLine5&quot;,&quot;destinationClient&quot;:&quot;ZJ4D&quot;,&quot;destinationFloor&quot;:4,&quot;destinationPoint&quot;:&quot;1CLine3&quot;},&quot;State&quot;:0,&quot;RunState&quot;:0,&quot;Clients&quot;:[{&quot;sourceClient&quot;:&quot;ZJ4D&quot;,&quot;hasIdleAgv&quot;:true,&quot;Online&quot;:true}]}]"/>
<add key="Lift_Buffs" value=""/>
</appSettings>
</configuration>
......@@ -272,7 +272,7 @@
//
// timer1
//
this.timer1.Interval = 1000;
this.timer1.Interval = 500;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// FrmIO
......@@ -284,6 +284,7 @@
this.Name = "FrmIO";
this.Text = "FrmIO";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmIO_FormClosing);
this.Load += new System.EventHandler(this.FrmIO_Load);
this.Shown += new System.EventHandler(this.FrmIOStatus_Shown);
this.tableLayoutPanel1.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
......
......@@ -71,12 +71,19 @@ namespace LiftController
cmbWriteIO.SelectedIndex = index;
}
}
bool inRead = false;
private void timer1_Tick(object sender, EventArgs e)
{
if (this.Visible)
// if (this.Visible)
if (inRead)
return;
try
{
inRead = true;
ReadIOList();
}
catch { }
finally { inRead = false; }
}
private void ReadIOList()
{
......@@ -88,7 +95,6 @@ namespace LiftController
{
control.IOValue = iov;
control.ShowData();
LogUtil.info($"IO状态DI更新:{key}={iov}");
}
}
foreach (string key in this.DOControlList.Keys)
......@@ -99,7 +105,6 @@ namespace LiftController
{
control.IOValue = iov;
control.ShowData();
LogUtil.info($"IO状态DO更新:{key}={iov}");
}
}
}
......@@ -191,7 +196,6 @@ namespace LiftController
}
private void FrmIOStatus_Shown(object sender, EventArgs e)
{
timer1.Start();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
......@@ -200,5 +204,10 @@ namespace LiftController
groupBox4.Enabled=chked;
LogUtil.info($"IO调试状态:{chked}");
}
private void FrmIO_Load(object sender, EventArgs e)
{
timer1.Start();
}
}
}
<?xml version="1.0"?>
<doc>
<assembly>
<name>Asa.IOModule.AIOBOX</name>
</assembly>
<members>
<member name="T:Asa.IOModule.AIOBOX">
<summary>
AIOBOX操作类
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX.SEND_SLEEP">
<summary>
每条命令发送的间隔
不能小于15,会出现IO接收不到的情况
小于30时,会出现接收数据连包的情况
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX.PORT">
<summary>
ModBus端口
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.DIO_Changed">
<summary>
自动读取DI委托
</summary>
<param name="box">AIOBOX</param>
<param name="sta">所有DI状态</param>
</member>
<member name="E:Asa.IOModule.AIOBOX.DI_Changed_Event">
<summary>
自动读取DI事件触发
</summary>
</member>
<member name="E:Asa.IOModule.AIOBOX.DO_Changed_Event">
<summary>
自动读取DO事件触发
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.AIO_Changed">
<summary>
自动读取AI委托
</summary>
<param name="box">AIOBOX</param>
<param name="val">所有AI的值</param>
</member>
<member name="E:Asa.IOModule.AIOBOX.AI_Changed_Event">
<summary>
自动读取AI事件触发
</summary>
</member>
<member name="E:Asa.IOModule.AIOBOX.AO_Changed_Event">
<summary>
自动读取AO事件触发
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.#ctor(System.String)">
<summary>
AIOBOX
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.IP">
<summary>
IP地址
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.IsConn">
<summary>
是否连接
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.SetInput(Asa.IOModule.Box_Type,System.Int32)">
<summary>
设置输入端
</summary>
<param name="type">类型</param>
<param name="count">数量</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.SetOutput(Asa.IOModule.Box_Type,System.Int32)">
<summary>
设置输出端
</summary>
<param name="type">类型</param>
<param name="count">数量</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoIP(System.String)">
<summary>
自动获取IP地址,未连接前使用,必须在同一网段
</summary>
<param name="localIP">本地IP地址</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.CheckIP(System.String)">
<summary>
检查IP地址
</summary>
<param name="ip"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.Connect">
<summary>
连接
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.Close">
<summary>
关闭连接
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadInput(System.Boolean,System.Int32)">
<summary>
自动读取输入端并触发事件(主动上传数据 = 禁止)
</summary>
<param name="read">是否自动读取</param>
<param name="sleep">间隔,必须大于等于15ms</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadInput(System.Boolean)">
<summary>
自动读取输入端并触发事件(主动上传数据 = 使能)
</summary>
<param name="read">是否自动读取</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadOutput(System.Boolean,System.Int32)">
<summary>
自动读取输出端,触发事件
</summary>
<param name="read">是否自动读取</param>
<param name="sleep">间隔,必须大于等于15ms</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta)">
<summary>
相反状态(ON/OFF)
</summary>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta@)">
<summary>
相反状态(ON/OFF)
</summary>
<param name="sta"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Int32)">
<summary>
读取单个DI输入状态(ON/OFF)
</summary>
<param name="add">输入地址,从0开始</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Int32,System.Int32)">
<summary>
读取多个DI输入状态(ON/OFF)
</summary>
<param name="add">起始地址,从0开始</param>
<param name="count">数量</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Int32)">
<summary>
读取单个AI模拟量的值
</summary>
<param name="add">模拟量地址,从0开始</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Int32,System.Int32)">
<summary>
读取多个AI模拟量的值
</summary>
<param name="add">起始地址,从0开始</param>
<param name="count">数量</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Int32)">
<summary>
读取单个DO输出状态(ON/OFF)
</summary>
<param name="add">输出地址,从0开始</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Int32,System.Int32)">
<summary>
读取多个DO输出状态(ON/OFF)
</summary>
<param name="add">起始地址,从0开始</param>
<param name="count">数量</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAO(System.Int32)">
<summary>
读取单个AO模拟量的值
</summary>
<param name="add">输出地址,从0开始</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAO(System.Int32,System.Int32)">
<summary>
读取多个AO模拟量的值
</summary>
<param name="add">起始地址,从0开始</param>
<param name="count">数量</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.WriteDO(System.Int32,Asa.IOModule.Box_Sta)">
<summary>
写入单个DO输出状态(ON/OFF)
</summary>
<param name="add">输出地址,从0开始</param>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.GetLocalIP">
<summary>
获取本地IPv4地址
</summary>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.Send">
<summary>
发送命令
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.Receive">
<summary>
接收命令
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadSingle(System.Byte[])">
<summary>
读取写入单个DO,功能码5
</summary>
<param name="buff"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Byte[])">
<summary>
读取所有DO状态,功能码1
</summary>
<param name="buff"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])">
<summary>
读取所有DI状态,功能码2
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Byte[])">
<summary>
读取所有AI的值,功能码4
</summary>
<param name="buff"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.Command">
<summary>
命令,前7个字节
</summary>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.TriggerDIO">
<summary>
触发DIO改变事件
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadInput">
<summary>
自动读取输入端线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadOutput">
<summary>
自动读取输出端线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.Listen">
<summary>
监听结果线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.TestMethod">
<summary>
测试方法锁
</summary>
</member>
<member name="T:Asa.IOModule.Box_Type">
<summary>
IO模块类型
</summary>
</member>
<member name="F:Asa.IOModule.Box_Type.DI">
<summary>
数字信号输入
</summary>
</member>
<member name="F:Asa.IOModule.Box_Type.DO">
<summary>
数字信号输出
</summary>
</member>
<member name="F:Asa.IOModule.Box_Type.AI">
<summary>
模拟量输入
</summary>
</member>
<member name="F:Asa.IOModule.Box_Type.AO">
<summary>
模拟量输出
</summary>
</member>
<member name="T:Asa.IOModule.Box_Sta">
<summary>
IO模块寄存器状态
</summary>
</member>
<member name="F:Asa.IOModule.Box_Sta.Off">
<summary>
断开,关闭,低电平
</summary>
</member>
<member name="F:Asa.IOModule.Box_Sta.On">
<summary>
闭合,打开,高电平
</summary>
</member>
</members>
</doc>
......@@ -32,9 +32,8 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Asa.IOModule.AIOBOX, Version=2.3.0.4, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>.\Asa.IOModule.AIOBOX.dll</HintPath>
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
<Reference Include="log4net">
<HintPath>.\log4net.dll</HintPath>
......
......@@ -85,12 +85,9 @@ namespace DeviceLibrary
//aioBox.LogPath(Application.StartupPath + @"\logs\aio\", LogType.OnlyError);
aioBox.IP = ioIp;
aioBox.SetInput(Asa.IOModule.Box_Type.DI, DILength);
aioBox.SetOutput(Asa.IOModule.Box_Type.DO, DOLength);
aioBox.SetType(Box_Type.DI, DILength, Box_Type.DO, DOLength);
//DI主动上传
aioBox.AutoReadInput(true,DIMS);
aioBox.AutoReadOutput(false, DOMS);
aioBox.Upload = true;
aioBox.DI_Changed_Event += AioBox_DI_Changed_Event; ;
......@@ -180,6 +177,7 @@ namespace DeviceLibrary
DIValueMap.Remove(ip);
}
DIValueMap.Add(ip, newList);
LogUtil.info($"DI状态变化【{ip}】:{string.Join("-", newList.ToArray())}");
}
}
}
......@@ -219,6 +217,7 @@ namespace DeviceLibrary
DOValueMap.Remove(ip);
}
DOValueMap.Add(ip, newList);
LogUtil.info($"DO状态变化【{ip}】:{string.Join("-", newList.ToArray())}");
}
}
}
......
......@@ -21,12 +21,11 @@ namespace DeviceLibrary
{
if (LineManager.Config.DOList.ContainsKey(ioType))
{
int trytimes = 5;
ConfigIO configIo = LineManager.Config.DOList[ioType];
instance.WriteSingleDO(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
instance.WriteSingleDO(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
Thread.Sleep(100);
Thread.Sleep(60);
if(!IOValue(ioType).Equals(ioValue))
instance.WriteSingleDO(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
}
else
{
......
此文件类型无法预览
......@@ -168,7 +168,7 @@ namespace DeviceLibrary.Models
return false;
}
if (!clientInfo.hasIdleAgv)
if (!clientInfo.sourceClient.Equals("NEOTEL-1F")&& !clientInfo.hasIdleAgv)
{
msg = $"目标AGV系统无可用Agv:{lift.destinationClient}";
return false;
......@@ -192,24 +192,34 @@ namespace DeviceLibrary.Models
}
else
{
if (IOManager.IOValue($"{liftId}{SettingString._Response}").Equals(IO_VALUE.HIGH))
//if (IOManager.IOValue($"{liftId}{SettingString._Response}").Equals(IO_VALUE.HIGH))
//{
// if (IOManager.IOValue($"{liftId}{SettingString._DoorOpen}").Equals(IO_VALUE.HIGH))
// {
// OpenAGVLeave(5);
// LogUtil.info($"{lift} 上一次异常退出,发送AGV离开清除异常状态!");
// return false;
// }
//}
if (OpenAGVRequest(true))
{
SetState(LiftState.Busy);
Status.Set(lift);
OpenAGVLeave(5);
msg = "ok";
return true;
}
else
{
if (IOManager.IOValue($"{liftId}{SettingString._DoorOpen}").Equals(IO_VALUE.HIGH))
{
OpenAGVLeave(5);
LogUtil.info($"{lift} 上一次异常退出,发送AGV离开清除异常状态!");
return false;
}
msg = "打开电梯请求超时";
}
SetState(LiftState.Busy);
Status.Set(lift);
OpenAGVRequest(true);
Thread.Sleep(2000);
msg = "ok";
return true;
}
}
msg = "电梯被占用";
else
{
msg = "电梯被占用";
}
return false;
}
......@@ -232,7 +242,7 @@ namespace DeviceLibrary.Models
SetState(LiftState.Idle);
//是否继续使用电梯
OpenAGVRequest(doorInfo.continueUse);
LogUtil.info($"AGV离开,{doorInfo.sourceFloor}[{doorInfo.sourceFloor}][{doorInfo.continueUse}]取出电梯[{liftId}]内的产品,清除电梯占用");
LogUtil.info($"AGV离开,【{doorInfo}】取出电梯内的产品,清除电梯占用");
}
if (IsSrcClient(doorInfo))
......@@ -244,7 +254,7 @@ namespace DeviceLibrary.Models
if (!Status.destinationFloor.Equals(-1))
{
RunToFloor(Status.destinationFloor, doorInfo);
LogUtil.info($"AGV离开,{doorInfo.sourceFloor}[{doorInfo.sourceFloor}]将产品送入电梯[{liftId}]");
LogUtil.info($"AGV离开,【{doorInfo}】将产品送入电梯");
}
}
return true;
......@@ -279,15 +289,36 @@ namespace DeviceLibrary.Models
IOManager.CIOMove($"{liftId}{SettingString._RunToFourth}", IO_VALUE.HIGH);
break;
}
Thread.Sleep(1000);
DateTime dateTime1 = DateTime.Now;
//等待运行信号亮
while (!CheckIsInRun())
{
if ((DateTime.Now - dateTime1).TotalSeconds > 10)
if ((DateTime.Now - dateTime1).TotalSeconds > 30)
{
LogUtil.error("检查AGV送料信号有效:等待电梯运行信号超时");
break;
}
switch (floor)
{
//case -1:
// IOManager.CIOMove($"{liftId}{SettingString._RunToNegativeFirst}", IO_VALUE.HIGH);
// break;
case 1:
IOManager.CIOMove($"{liftId}{SettingString._RunToFirst}", IO_VALUE.HIGH);
break;
//case 2:
// IOManager.CIOMove($"{liftId}{SettingString._RunToSecond}", IO_VALUE.HIGH);
// break;
case 3:
IOManager.CIOMove($"{liftId}{SettingString._RunToThird}", IO_VALUE.HIGH);
break;
case 4:
IOManager.CIOMove($"{liftId}{SettingString._RunToFourth}", IO_VALUE.HIGH);
break;
}
Thread.Sleep(1000);
}
LogUtil.info($"送料信号:运行到{floor}层");
......@@ -321,6 +352,9 @@ namespace DeviceLibrary.Models
IOManager.CIOMove($"{liftId}{SettingString._FourthCall}", IO_VALUE.HIGH);
break;
}
//Thread.Sleep(5000);
////关闭呼叫信号
//CloseCallFloor();
}
/// <summary>
/// AGV呼叫
......@@ -332,7 +366,7 @@ namespace DeviceLibrary.Models
if (CanControl(doorInfo))
{
FloorCall(doorInfo.sourceFloor);
LogUtil.info($"{doorInfo.sourceClient}呼叫电梯{liftId}运行到{doorInfo.sourceFloor}层");
LogUtil.info($"【{doorInfo}】呼叫电梯运行到{doorInfo.sourceFloor}层");
return true;
}
return false;
......@@ -395,7 +429,7 @@ namespace DeviceLibrary.Models
IOManager.CIOMove($"{liftId}{SettingString._RunToFirst}", IO_VALUE.LOW);
IOManager.CIOMove($"{liftId}{SettingString._RunToThird}", IO_VALUE.LOW);
IOManager.CIOMove($"{liftId}{SettingString._RunToFourth}", IO_VALUE.LOW);
LogUtil.info($"{doorInfo}:关闭所有送料信号");
LogUtil.info($"【{doorInfo}】:关闭所有送料信号");
}
/// <summary>
/// 等待运行信号亮或者关信号
......@@ -413,6 +447,10 @@ namespace DeviceLibrary.Models
{
return IOManager.IOValue($"{liftId}{SettingString._AGVLeave}").Equals(IO_VALUE.HIGH);
}
private bool CheckAgvRequest()
{
return IOManager.IOValue($"{liftId}{SettingString._AGVRequest}").Equals(IO_VALUE.HIGH);
}
private bool CheckIsInRun()
{
return IOManager.IOValue($"{liftId}{SettingString._InRun}").Equals(IO_VALUE.HIGH);
......@@ -425,65 +463,85 @@ namespace DeviceLibrary.Models
{
if (open)
{
IOManager.CIOMove($"{liftId}{SettingString._AGVLeave}", IO_VALUE.HIGH);
LogUtil.info($"{liftId}打开AGV离开信号");
IOManager.IOMove($"{liftId}{SettingString._AGVLeave}", IO_VALUE.HIGH);
LogUtil.info($"【{liftId}】打开AGV离开信号");
}
else
{
IOManager.CIOMove($"{liftId}{SettingString._AGVLeave}", IO_VALUE.LOW);
LogUtil.info($"{liftId}关闭AGV离开信号");
IOManager.IOMove($"{liftId}{SettingString._AGVLeave}", IO_VALUE.LOW);
LogUtil.info($"【{liftId}】关闭AGV离开信号");
}
}
private void OpenAGVLeave(int second)
{
Task.Factory.StartNew(() =>
Task task = Task.Factory.StartNew(() =>
{
OpenAGVLeave(true);
Task.Delay(second * 1000);
Thread.Sleep(second * 1000);
OpenAGVLeave(false);
});
task.Wait(20000);
}
private void CloseDoor()
{
Task task = Task.Factory.StartNew(() =>
{
OpenAGVLeave(true);
Thread.Sleep(3000);
DateTime dateTime = DateTime.Now;
//门关信号
while ((CheckDoorOpen() || !CheckAgvLeave()) && (DateTime.Now - dateTime).TotalMinutes < 1)
while (CheckDoorOpen() && (DateTime.Now - dateTime).TotalMinutes < 1)
{
if ((DateTime.Now - dateTime).TotalSeconds > 3)
{
IOManager.CIOMove($"{liftId}{SettingString._AGVLeave}", IO_VALUE.HIGH);
dateTime = DateTime.Now;
}
Thread.Sleep(3000);
Thread.Sleep(1000);
}
Thread.Sleep(3000);
dateTime = DateTime.Now;
while (!CheckAgvLeave() && (DateTime.Now - dateTime).TotalMinutes < 1)
{
IOManager.CIOMove($"{liftId}{SettingString._AGVLeave}", IO_VALUE.HIGH);
Thread.Sleep(500);
}
Thread.Sleep(5000);
OpenAGVLeave(false);
});
task.Wait(20000);
task.Wait(60000);
}
private void OpenAGVRequest(bool open)
private bool OpenAGVRequest(bool open)
{
DateTime dateTime = DateTime.Now;
bool rtn = false;
if (open)
{
IOManager.CIOMove($"{liftId}{SettingString._AGVRequest}", IO_VALUE.HIGH);
LogUtil.info("打开AGV请求信号");
IOManager.IOMove($"{liftId}{SettingString._AGVRequest}", IO_VALUE.HIGH);
while (!CheckAgvRequest() && (DateTime.Now - dateTime).TotalSeconds < 5)
{
IOManager.CIOMove($"{liftId}{SettingString._AGVRequest}", IO_VALUE.HIGH);
Thread.Sleep(500);
}
rtn = CheckAgvRequest();
LogUtil.info($"{liftId}打开AGV请求信号结果:{rtn}");
}
else
{
IOManager.CIOMove($"{liftId}{SettingString._AGVRequest}", IO_VALUE.LOW);
LogUtil.info("关闭AGV请求信号");
IOManager.IOMove($"{liftId}{SettingString._AGVRequest}", IO_VALUE.LOW);
while (CheckAgvRequest() && (DateTime.Now - dateTime).TotalSeconds < 5)
{
IOManager.CIOMove($"{liftId}{SettingString._AGVRequest}", IO_VALUE.LOW);
Thread.Sleep(500);
}
rtn = !CheckAgvRequest();
LogUtil.info($"{liftId}关闭AGV请求信号结果:{rtn}");
}
return rtn;
}
private void CloseCallFloor(DoorInfo doorInfo)
{
IOManager.CIOMove($"{liftId}{SettingString._FirstCall}", IO_VALUE.LOW);
IOManager.CIOMove($"{liftId}{SettingString._ThirdCall}", IO_VALUE.LOW);
IOManager.CIOMove($"{liftId}{SettingString._FourthCall}", IO_VALUE.LOW);
LogUtil.info($"{doorInfo}:关闭所有呼叫信号");
LogUtil.info($"【{doorInfo}】:关闭所有呼叫信号");
}
private void CloseCallFloor()
{
......
......@@ -29,7 +29,7 @@ namespace DeviceLibrary.Models.Service.Request
public bool continueUse {get;set;}=false;
public override string ToString()
{
return $"{sourceClient}[{sourceFloor}]:{liftId}";
return $"{sourceClient}[{sourceFloor}][continue={continueUse}]:{liftId}";
}
}
}
......@@ -56,7 +56,17 @@ namespace DeviceLibrary.Service
}
return result;
}
string preLogInfo = "";
string curLogInfo = "";
void LogInfo(string txt)
{
curLogInfo = txt;
if(!curLogInfo.Equals(preLogInfo))
{
Log.Info(curLogInfo);
preLogInfo = curLogInfo;
}
}
public Result sendIn(Stream stream)
{
Result result = new Result();
......@@ -72,7 +82,7 @@ namespace DeviceLibrary.Service
else
{
bool idle= Context.LiftContext.RequestSendIn(sendInInfo,out string msg);
Log.Info($"请求接口被调用:{sendInInfo},[{msg}]");
LogInfo($"请求接口被调用:{sendInInfo},[{msg}]");
result.msg = msg;
}
return result;
......
此文件类型无法预览
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!