Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
ACSingleStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 9895791e
由
几米阳光
编写于
2019-03-12 17:09:17 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.测高AI模块BUG修改。
2.出库增加缓存功能,若出库失败也放入缓存。
1 个父辈
082ccb10
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
57 行增加
和
58 行删除
source/DeviceLibrary/KangNaiDe/AITcpClient.cs
source/DeviceLibrary/KangNaiDe/KNDAIManager.cs
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean.cs
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean_Partial.cs
source/DeviceLibrary/store/KTK_DeviceBase.cs
source/DeviceLibrary/KangNaiDe/AITcpClient.cs
查看文件 @
9895791
...
...
@@ -69,7 +69,7 @@ namespace OnlineStore.DeviceLibrary
// ------------------------------------------------------------------------
/// <summary>Response data event. This event is called when new data arrives</summary>
public
delegate
void
ResponseData
(
string
ip
,
ushort
id
,
byte
function
,
byte
[]
data
,
byte
[]
reviceData
);
public
delegate
void
ResponseData
(
string
ip
,
ushort
id
,
byte
function
,
byte
[]
data
,
byte
[]
reviceData
);
/// <summary>Response data event. This event is called when new data arrives</summary>
public
event
ResponseData
OnResponseData
;
/// <summary>Exception data event. This event is called when the data is incorrect</summary>
...
...
@@ -185,14 +185,14 @@ namespace OnlineStore.DeviceLibrary
byte
[]
_length
=
BitConverter
.
GetBytes
((
short
)
1
);
data
[
10
]
=
_length
[
0
];
// Number of data to read
data
[
11
]
=
_length
[
1
];
// Number of data to read
WriteAsyncData
(
data
,
id
);
WriteAsyncData
(
data
,
id
);
}
public
void
ReadAllAI
(
ushort
id
,
string
startAddress
,
int
length
,
byte
slaveId
)
{
//0x 000100000006FF0302580010
byte
function
=
0x03
;
byte
[]
data
=
CreateData
(
id
,
startAddress
,
(
ushort
)
length
,
function
,
slaveId
);
byte
[]
data
=
CreateData
(
id
,
startAddress
,
(
ushort
)
length
,
function
,
slaveId
);
WriteAsyncData
(
data
,
id
);
}
...
...
@@ -207,11 +207,12 @@ namespace OnlineStore.DeviceLibrary
data
[
6
]
=
SlaveID
;
// Slave address //必须设置为"1": 2012.04-24 覃发光;
data
[
7
]
=
function
;
// Function code
byte
[]
_adr
=
AcSerialBean
.
StringToByte
(
startAddress
);
if
(
_adr
.
Length
.
Equals
(
2
))
if
(
_adr
.
Length
.
Equals
(
2
))
{
data
[
8
]
=
_adr
[
0
];
// Start address
data
[
9
]
=
_adr
[
1
];
// Start address
}
else
if
(
_adr
.
Length
.
Equals
(
1
))
}
else
if
(
_adr
.
Length
.
Equals
(
1
))
{
data
[
8
]
=
0x00
;
data
[
9
]
=
_adr
[
0
];
// Start address
...
...
@@ -241,37 +242,35 @@ namespace OnlineStore.DeviceLibrary
private
void
ReviceDataProcess
()
{
int
lengthIndex
=
5
;
byte
[]
rdata
=
Receive
();
if
(
rdata
!
=
null
)
if
(
rdata
=
=
null
)
{
return
;
}
string
str
=
""
;
foreach
(
byte
by
in
rdata
)
{
str
=
str
+
" "
+
by
;
//if (str.Length > 200)
//{
// break;
//}
}
int
lengthIndex
=
5
;
//这里rdata就是接收到的数据,
IPEndPoint
clientipe
=
(
IPEndPoint
)
socketClient
.
RemoteEndPoint
;
//ushort id = BitConverter.ToUInt16(rdata, 0);
//byte function = rdata[7];
byte
dataLength
=
rdata
[
lengthIndex
];
int
allLength
=
lengthIndex
+
1
+
dataLength
;
if
(
rdata
.
Length
>
allLength
)
if
(
rdata
.
Length
<=
allLength
)
{
//LogUtil.info(clientipe.ToString() + "收到数据(需要分包):" + str);
LogUtil
.
debug
(
LOGGER
,
clientipe
.
ToString
()
+
"收到数据(无需分包):"
+
str
);
ushort
id
=
BitConverter
.
ToUInt16
(
rdata
,
0
);
byte
function
=
rdata
[
7
];
DataProcess
(
clientipe
.
ToString
(),
id
,
function
,
rdata
);
return
;
}
int
currStartIndex
=
0
;
for
(
int
i
=
0
;
i
<
100
;
i
++)
{
try
{
for
(
int
i
=
0
;
i
<
100
;
i
++)
{
if
(
rdata
.
Length
<
currStartIndex
+
lengthIndex
)
{
LogUtil
.
error
(
clientipe
.
ToString
()
+
"收到数据:"
+
str
+
"分包出错 ["
+
currStartIndex
+
"]"
);
...
...
@@ -281,7 +280,6 @@ namespace OnlineStore.DeviceLibrary
{
dataLength
=
rdata
[
currStartIndex
+
lengthIndex
];
allLength
=
lengthIndex
+
1
+
dataLength
;
byte
[]
thisData
=
new
byte
[
allLength
];
Array
.
Copy
(
rdata
,
currStartIndex
,
thisData
,
0
,
allLength
);
ushort
id
=
BitConverter
.
ToUInt16
(
thisData
,
0
);
...
...
@@ -296,27 +294,20 @@ namespace OnlineStore.DeviceLibrary
currStartIndex
=
currStartIndex
+
allLength
;
}
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
clientipe
.
ToString
()
+
"收到数据:"
+
str
+
"分包出错 ["
+
currStartIndex
+
"]:"
+
ex
.
ToString
());
}
}
}
else
{
LogUtil
.
debug
(
LOGGER
,
clientipe
.
ToString
()
+
"收到数据(无需分包):"
+
str
);
ushort
id
=
BitConverter
.
ToUInt16
(
rdata
,
0
);
byte
function
=
rdata
[
7
];
DataProcess
(
clientipe
.
ToString
(),
id
,
function
,
rdata
);
}
}
}
private
void
DataProcess
(
string
clientIp
,
ushort
id
,
byte
function
,
byte
[]
rdata
)
{
byte
[]
data
;
if
(
rdata
.
Length
<=
9
)
{
return
;
}
if
((
function
>=
fctWriteSingleCoil
)
&&
(
function
!=
fctReadWriteMultipleRegister
))
{
data
=
new
byte
[
2
];
...
...
@@ -432,14 +423,7 @@ namespace OnlineStore.DeviceLibrary
{
try
{
//发送的数据打印出来
string
str
=
""
;
foreach
(
byte
by
in
write_data
)
{
str
=
str
+
" "
+
by
;
}
//LogUtil.info( clientipe.ToString()+"发送数据:" + str);
//LogUtil.info( clientipe.ToString()+"发送数据:" + AcSerialBean.byteToHexStr(write_data));
socketClient
.
BeginSend
(
write_data
,
0
,
write_data
.
Length
,
SocketFlags
.
None
,
new
AsyncCallback
(
OnSend
),
null
);
//socketClient.BeginReceive(tcpSocketReviceBuffer, 0, tcpSocketReviceBuffer.Length, SocketFlags.None, new AsyncCallback(OnReceive), socketClient);
ReviceDataProcess
();
...
...
@@ -453,7 +437,7 @@ namespace OnlineStore.DeviceLibrary
}
catch
(
Exception
ex
)
{
LOGGER
.
Error
(
"出错:"
+
ex
.
ToString
());
LOGGER
.
Error
(
"出错:"
+
ex
.
ToString
());
}
}
...
...
source/DeviceLibrary/KangNaiDe/KNDAIManager.cs
查看文件 @
9895791
...
...
@@ -68,11 +68,11 @@ namespace OnlineStore.DeviceLibrary
MBmaster
.
OnException
+=
new
AITcpClient
.
ExceptionData
(
MBmaster_OnException
);
MBmaster
.
autoConnectOfBreak
=
false
;
mastMap
.
Add
(
ioIp
,
MBmaster
);
LogUtil
.
info
(
LOGGER
,
"连接AI模块["
+
ioIp
+
"]成功"
);
Thread
.
Sleep
(
10
);
WriteAIScope
(
ioIp
,
1
);
Thread
.
Sleep
(
10
);
ReadAll
(
ioIp
);
LogUtil
.
info
(
LOGGER
,
"连接AI模块["
+
ioIp
+
"]成功"
);
}
catch
(
Exception
error
)
{
...
...
@@ -158,7 +158,7 @@ namespace OnlineStore.DeviceLibrary
isProcess
=
false
;
}
private
static
void
WriteAIScope
(
string
ioIp
,
int
value
)
private
static
void
WriteAIScope
(
string
ioIp
,
int
value
)
{
// 0 表示 0 - 10V, 1 表示 0 - 5V
WriteAIScope
(
ioIp
,
DefualtSlaveID
,
"03EA"
,
value
);
...
...
@@ -202,17 +202,17 @@ namespace OnlineStore.DeviceLibrary
}
mastMap
.
Clear
();
}
public
static
double
ConvertAI
(
double
aiValue
,
double
defaultValue
)
public
static
double
ConvertAI
(
double
aiValue
,
double
defaultValue
)
{
double
xishu
=
(
double
)
ConfigAppSettings
.
GetNumValue
(
Setting_Init
.
AI_ConvertPosition
);
double
result
=
Math
.
Round
((
aiValue
-
defaultValue
)/
xishu
,
2
);
double
xishu
=
(
double
)
ConfigAppSettings
.
GetNumValue
(
Setting_Init
.
AI_ConvertPosition
);
double
result
=
Math
.
Round
((
aiValue
-
defaultValue
)
/
xishu
,
2
);
return
result
;
}
public
static
double
GetAIValue
(
string
ioiP
,
int
index
)
{
double
aiValue
=
GetAIValue
(
ioiP
,
DefualtSlaveID
,
index
-
1
);
double
aiValue
=
GetAIValue
(
ioiP
,
DefualtSlaveID
,
index
-
1
);
return
Math
.
Round
(
aiValue
,
2
);
return
Math
.
Round
(
aiValue
,
2
);
}
public
static
double
GetAIValue
(
string
ioIP
,
byte
slaveId
,
int
index
)
...
...
@@ -284,7 +284,7 @@ namespace OnlineStore.DeviceLibrary
}
try
{
if
(
StoreManager
.
Store
.
KNDIOValue
(
IO_Type
.
TrayCheck_Door
).
Equals
(
IO_VALUE
.
HIGH
))
if
(
StoreManager
.
Store
!=
null
&&
StoreManager
.
Store
.
KNDIOValue
(
IO_Type
.
TrayCheck_Door
).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
StoreManager
.
Config
.
AIDI1_Addr
>
0
&&
StoreManager
.
Config
.
AIDI2_Addr
>
0
)
{
//每次上传后验证下
...
...
@@ -298,7 +298,7 @@ namespace OnlineStore.DeviceLibrary
// ConnectionIP(ioIp);
}
}
else
if
(
StoreManager
.
Config
.
AIDI3_Addr
>
0
&&
StoreManager
.
Config
.
AIDI4_Addr
>
0
)
else
if
(
StoreManager
.
Config
.
AIDI3_Addr
>
0
&&
StoreManager
.
Config
.
AIDI4_Addr
>
0
)
{
//每次上传后验证下
int
v1
=
(
int
)
GetAIValue
(
ioIp
,
StoreManager
.
Config
.
AIDI3_Addr
);
int
v2
=
(
int
)
GetAIValue
(
ioIp
,
StoreManager
.
Config
.
AIDI4_Addr
);
...
...
@@ -311,6 +311,7 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
catch
(
Exception
ex
)
{
...
...
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean.cs
查看文件 @
9895791
...
...
@@ -1225,7 +1225,12 @@ namespace OnlineStore.DeviceLibrary
if
(
currInOutFixture
.
WareNum
.
Equals
(
""
))
{
LogUtil
.
info
(
LOGGER
,
StoreName
+
"开始执行排队中的出库【"
+
currInOutFixture
.
ToStr
()
+
"】"
);
StartOutStoreMove
(
new
InOutStoreParam
(
""
,
currInOutFixture
.
PosId
,
currInOutFixture
.
plateH
,
currInOutFixture
.
plateW
));
bool
result
=
StartOutStoreMove
(
new
InOutStoreParam
(
""
,
currInOutFixture
.
PosId
,
currInOutFixture
.
plateH
,
currInOutFixture
.
plateW
));
if
(!
result
)
{
LogUtil
.
info
(
LOGGER
,
StoreName
+
" 执行排队中的出库【"
+
currInOutFixture
.
ToStr
()
+
"】失败,重新加入等待队列"
);
AddWaitOutInfo
(
currInOutFixture
);
}
}
}
}
...
...
@@ -1950,13 +1955,20 @@ namespace OnlineStore.DeviceLibrary
}
else
{
FixtureCodeInfo
currInOutFixture
=
new
FixtureCodeInfo
(
0
,
""
,
posId
,
plateW
,
plateH
);
if
(
CanStarInOut
())
{
StartOutStoreMove
(
new
InOutStoreParam
(
""
,
posId
,
position
));
bool
result
=
StartOutStoreMove
(
new
InOutStoreParam
(
""
,
posId
,
position
));
if
(!
result
)
{
LogUtil
.
info
(
LOGGER
,
StoreName
+
" 执行出库【"
+
currInOutFixture
.
ToStr
()
+
"】失败,加入等待队列"
);
AddWaitOutInfo
(
currInOutFixture
);
}
}
else
{
LogUtil
.
error
(
LOGGER
,
"收到服务器出库命令:出库【"
+
posId
+
"】失败,当前在忙碌中"
);
LogUtil
.
error
(
LOGGER
,
"执行出库【"
+
currInOutFixture
.
ToStr
()
+
"】失败,当前在忙碌中,加入等待队列"
);
AddWaitOutInfo
(
currInOutFixture
);
}
}
...
...
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean_Partial.cs
查看文件 @
9895791
...
...
@@ -517,7 +517,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 开始出库运动
/// </summary>
public
override
void
StartOutStoreMove
(
InOutStoreParam
param
)
public
override
bool
StartOutStoreMove
(
InOutStoreParam
param
)
{
startOutStoreTime
=
DateTime
.
Now
;
string
posId
=
param
!=
null
?
param
.
PositionNum
:
""
;
...
...
@@ -526,12 +526,12 @@ namespace OnlineStore.DeviceLibrary
if
(!
LoadParamPosition
(
param
))
{
LogUtil
.
error
(
LOGGER
,
StoreName
+
" 启动出库【"
+
posId
+
"】出错,找不到库位信息"
);
return
;
return
false
;
}
if
(
KNDIOValue
(
IO_Type
.
TrayCheck_Fixture
).
Equals
(
IO_VALUE
.
HIGH
))
{
LogUtil
.
error
(
LOGGER
,
StoreName
+
" 启动出库【"
+
posId
+
"】出错,叉子料盘检测有料"
);
return
;
return
false
;
}
storeStatus
=
StoreStatus
.
OutStoreExecute
;
LogUtil
.
info
(
LOGGER
,
StoreName
+
"启动出库【"
+
posId
+
"】 "
,
storeMoveColor
);
...
...
@@ -552,11 +552,13 @@ namespace OnlineStore.DeviceLibrary
OutStoreLog
(
"出库:SO_01 定位气缸下降"
);
LocationDownAndWait
();
}
return
true
;
}
else
{
LogUtil
.
error
(
LOGGER
,
StoreName
+
" 启动出库出错,当前状态,storeStatus="
+
storeRunStatus
);
}
return
false
;
}
protected
override
void
OutStoreProcess
()
{
...
...
source/DeviceLibrary/store/KTK_DeviceBase.cs
查看文件 @
9895791
...
...
@@ -89,7 +89,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 开始出库运动
/// </summary>
public
abstract
void
StartOutStoreMove
(
InOutStoreParam
param
);
public
abstract
bool
StartOutStoreMove
(
InOutStoreParam
param
);
protected
abstract
void
OutStoreProcess
();
#
endregion
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论