Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
ACSingleStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 45d9167d
由
LN
编写于
2019-07-23 16:55:47 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
IO修改。启动键改为复位按钮。
1 个父辈
91286ccb
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
712 行增加
和
166 行删除
dll/Asa.IOModule.AIOBOX.dll
dll/Asa.IOModule.AIOBOX.xml
source/ACSingleStore/FrmIOStatus.cs
source/DeviceLibrary/DeviceLibrary.csproj
source/DeviceLibrary/IO/AIOBOX/AIOBOXManager.cs
source/DeviceLibrary/IO/KangNaiDe/KNDManager.cs
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean.cs
dll/Asa.IOModule.AIOBOX.dll
0 → 100644
查看文件 @
45d9167
此文件类型无法预览
dll/Asa.IOModule.AIOBOX.xml
0 → 100644
查看文件 @
45d9167
<?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.suspend"
>
<summary>
暂停次数
WriteDO 命令非常多时,暂停一次发送 ReadDI 或 ReadDO
</summary>
</member>
<member
name=
"F:Asa.IOModule.AIOBOX.SEND_SLEEP"
>
<summary>
每条命令发送的间隔
不能小于15,会出现IO接收不到的情况
小于30时,会出现接收数据连包的情况
</summary>
</member>
<member
name=
"F:Asa.IOModule.AIOBOX.NET_SLEEP"
>
<summary>
监听网络接收数据的间隔
必须小于SEND_SLEEP
</summary>
</member>
<member
name=
"F:Asa.IOModule.AIOBOX.TRIG_SLEEP"
>
<summary>
触发DIO状态事件的间隔
</summary>
</member>
<member
name=
"T:Asa.IOModule.AIOBOX.DI_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=
"T:Asa.IOModule.AIOBOX.DO_Changed"
>
<summary>
自动读取DO委托
</summary>
<param
name=
"box"
>
AIOBOX
</param>
<param
name=
"sta"
>
所有DO状态
</param>
</member>
<member
name=
"E:Asa.IOModule.AIOBOX.DO_Changed_Event"
>
<summary>
自动读取DO事件触发
</summary>
</member>
<member
name=
"T:Asa.IOModule.AIOBOX.AI_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=
"T:Asa.IOModule.AIOBOX.AO_Changed"
>
<summary>
自动读取AO委托
</summary>
<param
name=
"box"
>
AIOBOX
</param>
<param
name=
"val"
>
所有AO的值
</param>
</member>
<member
name=
"E:Asa.IOModule.AIOBOX.AO_Changed_Event"
>
<summary>
自动读取AO事件触发
</summary>
</member>
<member
name=
"T:Asa.IOModule.AIOBOX.Log_Out"
>
<summary>
日志输出
</summary>
<param
name=
"box"
></param>
<param
name=
"s"
></param>
</member>
<member
name=
"E:Asa.IOModule.AIOBOX.Log_Out_Event"
>
<summary>
日志输出事件
</summary>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.#ctor"
>
<summary>
AIOBOX
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.IP"
>
<summary>
IP地址
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.Port"
>
<summary>
ModBus端口
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.IsConn"
>
<summary>
是否连接
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.ErrInfo"
>
<summary>
错误信息
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.LogOut"
>
<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.Connect"
>
<summary>
连接
</summary>
<returns></returns>
</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.AutoReadOutput(System.Boolean,System.Int32)"
>
<summary>
自动读取输出端,触发事件
</summary>
<param
name=
"read"
>
是否自动读取
</param>
<param
name=
"sleep"
>
间隔,必须大于10ms
</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.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>
<returns></returns>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])"
>
<summary>
读取所有DI状态,功能码2
</summary>
<returns></returns>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.ReadAI(System.Byte[])"
>
<summary>
读取所有AI的值,功能码4
</summary>
<param
name=
"buff"
></param>
<returns></returns>
</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.LogPrint"
>
<summary>
日志输出线程
</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=
"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>
<member
name=
"T:Asa.IOModule.Reg"
>
<summary>
IO模块寄存器
</summary>
</member>
<member
name=
"F:Asa.IOModule.Reg.ID"
>
<summary>
标识
</summary>
</member>
<member
name=
"F:Asa.IOModule.Reg.Text"
>
<summary>
文本,仅用于显示
</summary>
</member>
<member
name=
"F:Asa.IOModule.Reg.Address"
>
<summary>
寄存器地址
</summary>
</member>
<member
name=
"F:Asa.IOModule.Reg.Status"
>
<summary>
当前的状态
</summary>
</member>
<member
name=
"M:Asa.IOModule.Reg.#ctor(Asa.IOModule.Box_Addr)"
>
<summary>
寄存器,文本空,状态OFF
</summary>
<param
name=
"address"
>
地址
</param>
</member>
<member
name=
"M:Asa.IOModule.Reg.#ctor(System.String,Asa.IOModule.Box_Addr)"
>
<summary>
寄存器,状态OFF
</summary>
<param
name=
"text"
>
文本
</param>
<param
name=
"addr"
>
地址
</param>
</member>
<member
name=
"M:Asa.IOModule.Reg.#ctor(System.Int32,System.String,Asa.IOModule.Box_Addr)"
>
<summary>
寄存器,状态OFF
</summary>
<param
name=
"id"
>
标志
</param>
<param
name=
"text"
>
文本
</param>
<param
name=
"addr"
>
地址
</param>
</member>
<member
name=
"M:Asa.IOModule.Reg.#ctor(System.String,Asa.IOModule.Box_Addr,Asa.IOModule.Box_Sta)"
>
<summary>
寄存器
</summary>
<param
name=
"text"
>
文本
</param>
<param
name=
"addr"
>
地址
</param>
<param
name=
"status"
>
状态
</param>
</member>
<member
name=
"M:Asa.IOModule.Reg.#ctor(System.Int32,System.String,Asa.IOModule.Box_Addr,Asa.IOModule.Box_Sta)"
>
<summary>
寄存器
</summary>
<param
name=
"id"
>
标志
</param>
<param
name=
"text"
>
文本
</param>
<param
name=
"address"
>
地址
</param>
<param
name=
"status"
>
状态
</param>
</member>
<member
name=
"T:Asa.IOModule.Box_Addr"
>
<summary>
IO模块寄存器地址
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_1"
>
<summary>
输入点,DI01
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_2"
>
<summary>
输入点,DI02
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_3"
>
<summary>
输入点,DI03
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_4"
>
<summary>
输入点,DI04
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_5"
>
<summary>
输入点,DI05
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_6"
>
<summary>
输入点,DI06
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_7"
>
<summary>
输入点,DI07
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_8"
>
<summary>
输入点,DI08
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_9"
>
<summary>
输入点,DI09
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_10"
>
<summary>
输入点,DI10
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_11"
>
<summary>
输入点,DI11
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_12"
>
<summary>
输入点,DI12
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_13"
>
<summary>
输入点,DI13
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_14"
>
<summary>
输入点,DI14
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_15"
>
<summary>
输入点,DI15
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DI_16"
>
<summary>
输入点,DI16
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_1"
>
<summary>
输出点,DO01
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_2"
>
<summary>
输出点,DO02
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_3"
>
<summary>
输出点,DO03
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_4"
>
<summary>
输出点,DO04
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_5"
>
<summary>
输出点,DO05
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_6"
>
<summary>
输出点,DO06
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_7"
>
<summary>
输出点,DO07
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_8"
>
<summary>
输出点,DO08
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_9"
>
<summary>
输出点,DO09
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_10"
>
<summary>
输出点,DO10
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_11"
>
<summary>
输出点,DO11
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_12"
>
<summary>
输出点,DO12
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_13"
>
<summary>
输出点,DO13
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_14"
>
<summary>
输出点,DO14
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_15"
>
<summary>
输出点,DO15
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.DO_16"
>
<summary>
输出点,DO16
</summary>
</member>
<member
name=
"F:Asa.IOModule.Box_Addr.NONE"
>
<summary>
无
</summary>
</member>
<member
name=
"T:Asa.IOModule.DI_Addr"
>
<summary>
输入端地址
</summary>
</member>
<member
name=
"T:Asa.IOModule.DO_Addr"
>
<summary>
输入端地址
</summary>
</member>
</members>
</doc>
source/ACSingleStore/FrmIOStatus.cs
查看文件 @
45d9167
...
@@ -210,34 +210,14 @@ namespace OnlineStore.ACSingleStore
...
@@ -210,34 +210,14 @@ namespace OnlineStore.ACSingleStore
}
foreach
(
string
key
in
this
.
DOControlList
.
Keys
)
}
foreach
(
string
key
in
this
.
DOControlList
.
Keys
)
{
{
IOTextControl
control
=
DOControlList
[
key
];
IOTextControl
control
=
DOControlList
[
key
];
int
iov
=
(
int
)
KND
Manager
.
DOValue
(
key
);
int
iov
=
(
int
)
IO
Manager
.
DOValue
(
key
);
if
(
iov
!=
control
.
IOValue
)
if
(
iov
!=
control
.
IOValue
)
{
{
control
.
IOValue
=
iov
;
control
.
IOValue
=
iov
;
control
.
ShowData
();
control
.
ShowData
();
}
}
}
}
//double ai1Value = KNDAIManager.GetAIValue(boxBean.Config.AIDevice_IP, StoreManager.Config.AIDI1_Addr);
//double ai2Value = KNDAIManager.GetAIValue(boxBean.Config.AIDevice_IP, StoreManager.Config.AIDI2_Addr);
//double ai3Value = KNDAIManager.GetAIValue(boxBean.Config.AIDevice_IP, StoreManager.Config.AIDI3_Addr);
//double ai4Value = KNDAIManager.GetAIValue(boxBean.Config.AIDevice_IP, StoreManager.Config.AIDI4_Addr);
////double ai3Value = KNDAIManager.GetAIValue(boxBean.Config.AIDevice_IP, 3);
//txtAI1.Text = ai1Value.ToString();
//txtAI2.Text = ai2Value.ToString();
//txtAI3.Text = ai3Value.ToString();
//txtAI4.Text = ai4Value.ToString();
////txtAI3.Text = ai3Value.ToString();
//txtAIResult1.Text = KNDAIManager.ConvertAI(ai1Value,boxBean.Config.AIDI1_DefaultPosition).ToString();
//txtAIResult2.Text = KNDAIManager.ConvertAI(ai2Value, boxBean.Config.AIDI2_DefaultPosition).ToString();
//txtAIResult3.Text = KNDAIManager.ConvertAI(ai3Value, boxBean.Config.AIDI3_DefaultPosition).ToString();
//txtAIResult4.Text = KNDAIManager.ConvertAI(ai4Value, boxBean.Config.AIDI4_DefaultPosition).ToString();
////txtAIResult3.Text = KNDAIManager.ConvertAI(ai3Value, boxBean.Config.AIDI3_DefaultPosition).ToString();
//txtHeight.Text = boxBean.GetHeight().ToString();
//txtSize.Text = boxBean.GetSize().ToString();
}
}
private
void
btnReadAllDi_Click
(
object
sender
,
EventArgs
e
)
private
void
btnReadAllDi_Click
(
object
sender
,
EventArgs
e
)
...
@@ -246,7 +226,7 @@ namespace OnlineStore.ACSingleStore
...
@@ -246,7 +226,7 @@ namespace OnlineStore.ACSingleStore
IO_VALUE
value
=
(
IO_VALUE
)
cmbWriteValue
.
SelectedIndex
;
IO_VALUE
value
=
(
IO_VALUE
)
cmbWriteValue
.
SelectedIndex
;
int
time
=
FormUtil
.
GetIntValue
(
txtWriteTime
);
int
time
=
FormUtil
.
GetIntValue
(
txtWriteTime
);
int
slaveId
=
FormUtil
.
GetIntValue
(
txtSlaveId
);
int
slaveId
=
FormUtil
.
GetIntValue
(
txtSlaveId
);
KNDManager
.
ReadMultipleDI
(
deviceName
,
(
byte
)
slaveId
,
(
ushort
)
KNDManager
.
DIStartAddress
,
16
);
IOManager
.
instance
.
ReadAllDI
(
deviceName
,
(
byte
)
slaveId
);
}
}
private
void
btnReadAllDo_Click
(
object
sender
,
EventArgs
e
)
private
void
btnReadAllDo_Click
(
object
sender
,
EventArgs
e
)
{
{
...
@@ -255,7 +235,7 @@ namespace OnlineStore.ACSingleStore
...
@@ -255,7 +235,7 @@ namespace OnlineStore.ACSingleStore
IO_VALUE
value
=
(
IO_VALUE
)
cmbWriteValue
.
SelectedIndex
;
IO_VALUE
value
=
(
IO_VALUE
)
cmbWriteValue
.
SelectedIndex
;
int
time
=
FormUtil
.
GetIntValue
(
txtWriteTime
);
int
time
=
FormUtil
.
GetIntValue
(
txtWriteTime
);
int
slaveId
=
FormUtil
.
GetIntValue
(
txtSlaveId
);
int
slaveId
=
FormUtil
.
GetIntValue
(
txtSlaveId
);
KNDManager
.
ReadMultipleDO
(
deviceName
,
(
byte
)
slaveId
,
(
ushort
)
KNDManager
.
DoStartAddress
,
16
);
IOManager
.
instance
.
ReadAllDO
(
deviceName
,
(
byte
)
slaveId
);
}
}
private
void
btnOpenDoor_Click
(
object
sender
,
EventArgs
e
)
private
void
btnOpenDoor_Click
(
object
sender
,
EventArgs
e
)
{
{
...
...
source/DeviceLibrary/DeviceLibrary.csproj
查看文件 @
45d9167
...
@@ -36,6 +36,9 @@
...
@@ -36,6 +36,9 @@
<Prefer32Bit>false</Prefer32Bit>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
<Reference Include="CodeLibrary">
<Reference Include="CodeLibrary">
<HintPath>..\..\..\RC32-SZBOSCH-ACSingleStore\dll\CodeLibrary.dll</HintPath>
<HintPath>..\..\..\RC32-SZBOSCH-ACSingleStore\dll\CodeLibrary.dll</HintPath>
</Reference>
</Reference>
...
@@ -60,9 +63,6 @@
...
@@ -60,9 +63,6 @@
<Compile Include="acSingleStore\AC_SA_BoxBean_Partial.cs" />
<Compile Include="acSingleStore\AC_SA_BoxBean_Partial.cs" />
<Compile Include="acSingleStore\StoreManager.cs" />
<Compile Include="acSingleStore\StoreManager.cs" />
<Compile Include="IO\AIOBOX\AIOBOXManager.cs" />
<Compile Include="IO\AIOBOX\AIOBOXManager.cs" />
<Compile Include="IO\AIOBOX\BLL.cs" />
<Compile Include="IO\AIOBOX\BLL2.cs" />
<Compile Include="IO\AIOBOX\Common.cs" />
<Compile Include="IO\IOManager.cs" />
<Compile Include="IO\IOManager.cs" />
<Compile Include="IO\KangNaiDe\KNDManager.cs" />
<Compile Include="IO\KangNaiDe\KNDManager.cs" />
<Compile Include="IO\KangNaiDe\MasterTcpClient.cs" />
<Compile Include="IO\KangNaiDe\MasterTcpClient.cs" />
...
...
source/DeviceLibrary/IO/AIOBOX/AIOBOXManager.cs
查看文件 @
45d9167
...
@@ -3,7 +3,7 @@ using System;
...
@@ -3,7 +3,7 @@ using System;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Linq
;
using
System.Reflection
;
using
System.Reflection
;
using
System.Text
;
using
System.Text
;
using
System.Threading
;
using
System.Threading
;
using
OnlineStore.Common
;
using
OnlineStore.Common
;
using
OnlineStore.LoadCSVLibrary
;
using
OnlineStore.LoadCSVLibrary
;
...
@@ -16,20 +16,20 @@ namespace OnlineStore.DeviceLibrary
...
@@ -16,20 +16,20 @@ namespace OnlineStore.DeviceLibrary
{
{
//public static uint DefaultDICount = 16;
//public static uint DefaultDICount = 16;
//public static uint DefaultDOCount = 16;
//public static uint DefaultDOCount = 16;
public
readonly
ILog
LOGGER
=
LogManager
.
GetLogger
(
MethodBase
.
GetCurrentMethod
().
DeclaringType
);
public
readonly
ILog
LOGGER
=
LogManager
.
GetLogger
(
MethodBase
.
GetCurrentMethod
().
DeclaringType
);
public
Dictionary
<
string
,
AIOBOX
2
>
AIOMap
=
new
Dictionary
<
string
,
AIOBOX2
>();
public
Dictionary
<
string
,
AIOBOX
>
AIOMap
=
new
Dictionary
<
string
,
AIOBOX
>();
public
Dictionary
<
string
,
List
<
Box_Sta
>>
DIValueMap
=
new
Dictionary
<
string
,
List
<
Box_Sta
>>();
public
Dictionary
<
string
,
List
<
Box_Sta
>>
DIValueMap
=
new
Dictionary
<
string
,
List
<
Box_Sta
>>();
public
Dictionary
<
string
,
List
<
Box_Sta
>>
DOValueMap
=
new
Dictionary
<
string
,
List
<
Box_Sta
>>();
public
Dictionary
<
string
,
List
<
Box_Sta
>>
DOValueMap
=
new
Dictionary
<
string
,
List
<
Box_Sta
>>();
private
object
DIMapLock
=
""
;
private
object
DIMapLock
=
""
;
private
object
DOMapLock
=
""
;
private
object
DOMapLock
=
""
;
public
System
.
Timers
.
Timer
timer
=
null
;
private
object
DILock
=
""
;
private
object
DILock
=
""
;
private
object
DOLock
=
""
;
private
object
DOLock
=
""
;
public
void
ConnectionIP
(
string
ioIp
)
public
void
ConnectionIP
(
string
ioIp
)
{
{
AIOBOX
2
aioBox
=
null
;
AIOBOX
aioBox
=
null
;
if
(
AIOMap
.
ContainsKey
(
ioIp
))
if
(
AIOMap
.
ContainsKey
(
ioIp
))
{
{
aioBox
=
AIOMap
[
ioIp
];
aioBox
=
AIOMap
[
ioIp
];
...
@@ -43,16 +43,16 @@ namespace OnlineStore.DeviceLibrary
...
@@ -43,16 +43,16 @@ namespace OnlineStore.DeviceLibrary
}
}
if
(
DIValueMap
.
ContainsKey
(
ioIp
))
if
(
DIValueMap
.
ContainsKey
(
ioIp
))
{
{
DIValueMap
.
Remove
(
ioIp
);
DIValueMap
.
Remove
(
ioIp
);
}
}
if
(
DOValueMap
.
ContainsKey
(
ioIp
))
if
(
DOValueMap
.
ContainsKey
(
ioIp
))
{
{
DOValueMap
.
Remove
(
ioIp
);
DOValueMap
.
Remove
(
ioIp
);
}
}
try
try
{
{
// Create new modbus master and add event functions
// Create new modbus master and add event functions
aioBox
=
new
AIOBOX
2
();
aioBox
=
new
AIOBOX
();
aioBox
.
IP
=
ioIp
;
aioBox
.
IP
=
ioIp
;
int
DIMS
=
ConfigAppSettings
.
GetIntValue
(
"DIMS"
);
int
DIMS
=
ConfigAppSettings
.
GetIntValue
(
"DIMS"
);
if
(
DIMS
<
20
)
if
(
DIMS
<
20
)
...
@@ -64,32 +64,27 @@ namespace OnlineStore.DeviceLibrary
...
@@ -64,32 +64,27 @@ namespace OnlineStore.DeviceLibrary
{
{
DOMS
=
200
;
DOMS
=
200
;
}
}
// bool rtn = aioBox.AutoIP(ioIp);
aioBox
.
AutoReadDI
(
true
,
DIMS
);
int
DILength
=
StoreManager
.
Config
.
GetDILength
(
ioIp
);
aioBox
.
AutoReadDO
(
true
,
DOMS
);
int
DOLength
=
StoreManager
.
Config
.
GetDOLength
(
ioIp
);
aioBox
.
SetInput
(
Asa
.
IOModule
.
Box_Type
.
DI
,
DILength
);
aioBox
.
SetOutput
(
Asa
.
IOModule
.
Box_Type
.
DO
,
DOLength
);
aioBox
.
AutoReadInput
(
true
,
DIMS
);
aioBox
.
AutoReadOutput
(
true
,
DOMS
);
aioBox
.
LogOut
=
true
;
aioBox
.
LogOut
=
true
;
//aioBox.Reconnect_Event += AioBox_Reconnect_Event;
if
(
StoreManager
.
Config
.
GetDILength
(
ioIp
).
Equals
(
8
))
{
aioBox
.
Type
=
Box_Type
.
DIO_16
;
}
else
{
aioBox
.
Type
=
Box_Type
.
DIO_32
;
}
aioBox
.
DI_Changed_Event
+=
AioBox_DI_Changed_Event
;
;
aioBox
.
DI_Changed_Event
+=
AioBox_DI_Changed_Event
;
;
aioBox
.
DO_Changed_Event
+=
AioBox_DO_Changed_Event
;
aioBox
.
DO_Changed_Event
+=
AioBox_DO_Changed_Event
;
aioBox
.
Log_Out_Event
+=
AioBox_Log_Out_Event
;
//
aioBox.Log_Out_Event += AioBox_Log_Out_Event;
//aioBox.Log_RxTx_Event += AioBox_Log_RxTx_Event;
//aioBox.Log_RxTx_Event += AioBox_Log_RxTx_Event;
AIOMap
.
Add
(
ioIp
,
aioBox
);
AIOMap
.
Add
(
ioIp
,
aioBox
);
LogUtil
.
info
(
"开始连接IO模块["
+
ioIp
+
"]["
+
DIMS
+
"]["
+
DOMS
+
"],尝试重连三次"
);
LogUtil
.
info
(
"开始连接IO模块["
+
ioIp
+
"]["
+
DIMS
+
"]["
+
DOMS
+
"],尝试重连三次"
);
for
(
int
i
=
1
;
i
<=
3
;
i
++)
for
(
int
i
=
1
;
i
<=
3
;
i
++)
{
{
bool
result
=
aioBox
.
Connect
();
bool
result
=
aioBox
.
Connect
();
if
(
result
)
if
(
result
)
{
{
LogUtil
.
info
(
"第【"
+
i
+
"】次连接IO模块【"
+
ioIp
+
"】成功:"
+
aioBox
.
ErrInfo
);
LogUtil
.
info
(
"第【"
+
i
+
"】次连接IO模块【"
+
ioIp
+
"】成功:"
+
aioBox
.
ErrInfo
);
Thread
.
Sleep
(
10
);
Thread
.
Sleep
(
10
);
//读取所有的DO
//读取所有的DO
ReadAllDI
(
ioIp
,
0
);
ReadAllDI
(
ioIp
,
0
);
...
@@ -101,14 +96,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -101,14 +96,7 @@ namespace OnlineStore.DeviceLibrary
}
}
Thread
.
Sleep
(
10
);
Thread
.
Sleep
(
10
);
}
}
if
(
timer
==
null
)
{
timer
=
new
System
.
Timers
.
Timer
();
timer
.
Interval
=
5000
;
timer
.
AutoReset
=
true
;
timer
.
Elapsed
+=
timer_Elapsed
;
timer
.
Enabled
=
true
;
}
}
}
catch
(
Exception
error
)
catch
(
Exception
error
)
{
{
...
@@ -116,7 +104,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -116,7 +104,7 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
private
void
AioBox_Reconnect_Event
(
AIOBOX
2
box
,
int
times
,
ref
bool
conn
,
Dictionary
<
string
,
string
>
dict
)
private
void
AioBox_Reconnect_Event
(
AIOBOX
box
,
int
times
,
ref
bool
conn
,
Dictionary
<
string
,
string
>
dict
)
{
{
conn
=
true
;
conn
=
true
;
string
msg
=
"重连AIO块【"
+
box
.
IP
+
"】次数:"
+
times
+
"【"
+
box
.
ErrInfo
+
"】,连接信息如下\r\n"
;
string
msg
=
"重连AIO块【"
+
box
.
IP
+
"】次数:"
+
times
+
"【"
+
box
.
ErrInfo
+
"】,连接信息如下\r\n"
;
...
@@ -129,20 +117,9 @@ namespace OnlineStore.DeviceLibrary
...
@@ -129,20 +117,9 @@ namespace OnlineStore.DeviceLibrary
}
}
private
DateTime
lastLogTime
=
DateTime
.
Now
;
private
DateTime
lastLogTime
=
DateTime
.
Now
;
//private void AioBox_Log_RxTx_Event(AIOBOX2 box, string[] s)
//{
// TimeSpan span = DateTime.Now - lastLogTime;
// //if (span.TotalMinutes > 1)
// {
// lastLogTime = DateTime.Now;
// foreach (string str in s)
// {
// LogUtil.AIOLog.Debug("[" + box.IP + "]" + str);
// }
// }
//}
private
void
AioBox_Log_Out_Event
(
AIOBOX2
box
,
string
[]
s
)
private
void
AioBox_Log_Out_Event
(
AIOBOX
box
,
string
[]
s
)
{
{
foreach
(
string
str
in
s
)
foreach
(
string
str
in
s
)
{
{
...
@@ -150,7 +127,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -150,7 +127,7 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
private
void
AioBox_DI_Changed_Event
(
AIOBOX
2
box
,
Box_Sta
[]
sta
)
private
void
AioBox_DI_Changed_Event
(
AIOBOX
box
,
Box_Sta
[]
sta
)
{
{
try
try
{
{
...
@@ -161,10 +138,11 @@ namespace OnlineStore.DeviceLibrary
...
@@ -161,10 +138,11 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
error
(
"AioBox_DI_Changed_Event出错:"
+
ex
.
ToString
());
LogUtil
.
error
(
"AioBox_DI_Changed_Event出错:"
+
ex
.
ToString
());
}
}
}
}
private
void
AioBox_DO_Changed_Event
(
AIOBOX
2
box
,
Box_Sta
[]
sta
)
private
void
AioBox_DO_Changed_Event
(
AIOBOX
box
,
Box_Sta
[]
sta
)
{
{
try
try
{
{
UpdateAllDO
(
box
.
IP
,
sta
);
UpdateAllDO
(
box
.
IP
,
sta
);
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
...
@@ -208,17 +186,24 @@ namespace OnlineStore.DeviceLibrary
...
@@ -208,17 +186,24 @@ namespace OnlineStore.DeviceLibrary
DIValueMap
.
Add
(
ip
,
newList
);
DIValueMap
.
Add
(
ip
,
newList
);
}
}
}
}
}
}
}
}
private
void
UpdateAllDO
(
string
ip
,
Box_Sta
[]
sta
)
private
void
UpdateAllDO
(
string
ip
,
Box_Sta
[]
sta
)
{
{
if
(
sta
!=
null
&&
sta
.
Length
>=
StoreManager
.
Config
.
GetDOLength
(
ip
))
if
(
sta
!=
null
&&
sta
.
Length
>=
StoreManager
.
Config
.
GetDOLength
(
ip
))
{
{
bool
needUpdate
=
false
;
bool
needUpdate
=
false
;
List
<
Box_Sta
>
newList
=
new
List
<
Box_Sta
>();
List
<
Box_Sta
>
newList
=
new
List
<
Box_Sta
>();
newList
.
AddRange
(
sta
);
newList
.
AddRange
(
sta
);
List
<
Box_Sta
>
oldList
=
null
;
List
<
Box_Sta
>
oldList
=
null
;
DOValueMap
.
TryGetValue
(
ip
,
out
oldList
);
DOValueMap
.
TryGetValue
(
ip
,
out
oldList
);
//string result = "UpdateAllDO ip[" + ip + "], sta :";
//for (int i = 0; i < newList.Count; i++)
//{
// result += newList[i] + ",";
//}
//LogUtil.info(result);
if
(
oldList
==
null
||
oldList
.
Count
.
Equals
(
newList
.
Count
).
Equals
(
false
))
if
(
oldList
==
null
||
oldList
.
Count
.
Equals
(
newList
.
Count
).
Equals
(
false
))
{
{
needUpdate
=
true
;
needUpdate
=
true
;
...
@@ -246,85 +231,65 @@ namespace OnlineStore.DeviceLibrary
...
@@ -246,85 +231,65 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
}
}
//else
//{
// if (sta == null)
// {
// LogUtil.error("UpdateAllDO ip[" + ip + "], sta=null");
// }
// else
// {
// LogUtil.error(" UpdateAllDO ip[" + ip + "], sta.Length=" + sta.Length);
// }
//}
}
}
private
void
timer_Elapsed
(
object
sender
,
System
.
Timers
.
ElapsedEventArgs
e
)
{
try
{
//List<string> list = new List<string>(AIOMap.Keys);
//foreach (string io in list)
//{
// //判断是否连接,如果没有连接自动重连
// AIOBOX2 client = AIOMap[io];
// if (!client.IsConn)
// {
// //重连
// bool result = client.Connect();
// if (result)
// {
// LogUtil.info("重连O模块【" + client.IP + "】成功:" + client.ErrInfo);
// }
// else
// {
// LogUtil.error("重连O模块【" + client.IP + "】失败:" + client.ErrInfo);
// }
// }
//}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
LOGGER
,
"出错啦:"
+
ex
.
ToString
());
}
Thread
.
Sleep
(
1
);
}
public
override
void
ConnectionIOList
(
List
<
string
>
DIONameList
)
public
override
void
ConnectionIOList
(
List
<
string
>
DIONameList
)
{
{
foreach
(
string
ip
in
DIONameList
)
foreach
(
string
ip
in
DIONameList
)
{
{
ConnectionIP
(
ip
);
ConnectionIP
(
ip
);
}
}
}
}
//关闭所有的DO
//关闭所有的DO
public
override
void
CloseAllDO
()
public
override
void
CloseAllDO
()
{
{
foreach
(
AIOBOX
2
aio
in
AIOMap
.
Values
)
foreach
(
AIOBOX
aio
in
AIOMap
.
Values
)
{
{
ushort
length
=
StoreManager
.
Config
.
GetD
I
Length
(
aio
.
IP
);
ushort
length
=
StoreManager
.
Config
.
GetD
O
Length
(
aio
.
IP
);
for
(
ushort
i
=
0
;
i
<
length
;
i
++)
for
(
ushort
i
=
0
;
i
<
length
;
i
++)
{
{
ushort
u
=(
ushort
)(
i
+
length
);
// ushort u = (ushort)(i + length);
Box_Addr
addr
=
GetAddr
(
u
);
// ushort u = (ushort)(i );
aio
.
WriteDO
(
addr
,
Box_Sta
.
Off
);
// Box_Addr addr = GetAddr(u);
}
aio
.
WriteDO
(
i
,
Box_Sta
.
Off
);
}
}
}
}
}
public
override
void
CloseAllConnection
()
public
override
void
CloseAllConnection
()
{
{
foreach
(
AIOBOX
2
aio
in
AIOMap
.
Values
)
foreach
(
AIOBOX
aio
in
AIOMap
.
Values
)
{
{
aio
.
Close
();
aio
.
Close
();
}
}
AIOMap
.
Clear
();
AIOMap
.
Clear
();
timer
.
Stop
();
timer
=
null
;
}
}
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
)
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
)
{
{
try
try
{
{
AIOBOX
2
aioBox
=
getAIO
(
ioIp
);
AIOBOX
aioBox
=
getAIO
(
ioIp
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
Box_Addr
add
=
GetAddr
(
StartAddress
);
//
Box_Addr add = GetAddr(StartAddress);
for
(
int
i
=
1
;
i
<=
3
;
i
++)
for
(
int
i
=
1
;
i
<=
3
;
i
++)
{
{
bool
result
=
aioBox
.
WriteDO
(
GetAddr
(
StartAddress
)
,
GetBox_Sta
(
onOff
));
bool
result
=
aioBox
.
WriteDO
(
StartAddress
,
GetBox_Sta
(
onOff
));
if
(!
result
)
if
(!
result
)
{
{
LogUtil
.
error
(
"AIO WriteSingleDO ["
+
StartAddress
+
"] 第"
+
i
+
"次失败:"
+
aioBox
.
ErrInfo
);
LogUtil
.
error
(
"AIO WriteSingleDO ["
+
StartAddress
+
"] 第"
+
i
+
"次失败:"
+
aioBox
.
ErrInfo
);
...
@@ -337,25 +302,25 @@ namespace OnlineStore.DeviceLibrary
...
@@ -337,25 +302,25 @@ namespace OnlineStore.DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"
ReadSingleDO出错
没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
LOGGER
,
"
WriteSingleDO出错
没有连接IO模块:"
+
ioIp
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LOGGER
.
Error
(
"出错啦:"
+
ex
.
ToString
());
LOGGER
.
Error
(
"出错啦:"
+
ex
.
ToString
());
}
}
}
}
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
,
int
mSeconds
)
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
,
int
mSeconds
)
{
{
try
try
{
{
AIOBOX
2
aioBox
=
getAIO
(
ioIp
);
AIOBOX
aioBox
=
getAIO
(
ioIp
);
Box_Sta
currBox_Sta
=
GetBox_Sta
(
onOff
);
Box_Sta
currBox_Sta
=
GetBox_Sta
(
onOff
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
Box_Addr
add
=
GetAddr
(
StartAddress
);
//
Box_Addr add = GetAddr(StartAddress);
aioBox
.
WriteDO
(
GetAddr
(
StartAddress
),
currBox_Sta
);
aioBox
.
WriteDO
(
StartAddress
,
currBox_Sta
);
//写入之后,等待指定间隔后回写
//写入之后,等待指定间隔后回写
System
.
Timers
.
Timer
mytimer
=
new
System
.
Timers
.
Timer
(
mSeconds
);
System
.
Timers
.
Timer
mytimer
=
new
System
.
Timers
.
Timer
(
mSeconds
);
...
@@ -363,7 +328,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -363,7 +328,7 @@ namespace OnlineStore.DeviceLibrary
{
{
try
try
{
{
aioBox
.
WriteDO
(
GetAddr
(
StartAddress
)
,
aioBox
.
ReverseStatus
(
currBox_Sta
));
aioBox
.
WriteDO
(
StartAddress
,
aioBox
.
ReverseStatus
(
currBox_Sta
));
LogUtil
.
debug
(
LOGGER
,
"**********定时回写入 IO【"
+
ioIp
+
","
+
StartAddress
+
",值"
+
aioBox
.
ReverseStatus
(
currBox_Sta
)
+
"】:"
);
LogUtil
.
debug
(
LOGGER
,
"**********定时回写入 IO【"
+
ioIp
+
","
+
StartAddress
+
",值"
+
aioBox
.
ReverseStatus
(
currBox_Sta
)
+
"】:"
);
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
...
@@ -376,22 +341,22 @@ namespace OnlineStore.DeviceLibrary
...
@@ -376,22 +341,22 @@ namespace OnlineStore.DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"WriteSingleDO出错没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
LOGGER
,
"WriteSingleDO出错
没有连接IO模块:"
+
ioIp
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"WriteSingleDO出错:"
+
ioIp
);
LogUtil
.
error
(
"WriteSingleDO
出错:"
+
ioIp
);
}
}
}
}
public
override
void
ReadAllDI
(
string
ioIp
,
byte
slaveId
)
public
override
void
ReadAllDI
(
string
ioIp
,
byte
slaveId
)
{
{
try
try
{
{
AIOBOX
2
aioBox
=
getAIO
(
ioIp
);
AIOBOX
aioBox
=
getAIO
(
ioIp
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
Box_Sta
[]
allDi
=
aioBox
.
ReadDI
(
Box_Addr
.
DI_1
,
StoreManager
.
Config
.
GetDILength
(
ioIp
));
Box_Sta
[]
allDi
=
aioBox
.
ReadDI
(
0
,
StoreManager
.
Config
.
GetDILength
(
ioIp
));
UpdateAllDI
(
ioIp
,
allDi
);
UpdateAllDI
(
ioIp
,
allDi
);
}
}
}
}
...
@@ -404,11 +369,12 @@ namespace OnlineStore.DeviceLibrary
...
@@ -404,11 +369,12 @@ namespace OnlineStore.DeviceLibrary
{
{
try
try
{
{
AIOBOX
2
aioBox
=
getAIO
(
ioIp
);
AIOBOX
aioBox
=
getAIO
(
ioIp
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
Box_Sta
[]
allDO
=
aioBox
.
ReadDO
(
Box_Addr
.
DO_1
,
StoreManager
.
Config
.
GetDOLength
(
ioIp
));
// int startIndex = StoreManager.Config.GetDILength(ioIp);
UpdateAllDO
(
ioIp
,
allDO
);
Box_Sta
[]
allDO
=
aioBox
.
ReadDO
(
0
,
StoreManager
.
Config
.
GetDOLength
(
ioIp
));
UpdateAllDO
(
ioIp
,
allDO
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
...
@@ -421,18 +387,19 @@ namespace OnlineStore.DeviceLibrary
...
@@ -421,18 +387,19 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE
value
=
IO_VALUE
.
LOW
;
IO_VALUE
value
=
IO_VALUE
.
LOW
;
try
try
{
{
AIOBOX
2
aioBox
=
getAIO
(
ioIP
);
AIOBOX
aioBox
=
getAIO
(
ioIP
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
Box_Sta
sta
=
Box_Sta
.
Off
;
Box_Sta
sta
=
Box_Sta
.
Off
;
Box_Addr
addr
=
GetAddr
(
StartAddress
);
// Box_Addr addr = GetAddr(StartAddress);
int
index
=
(
int
)
StartAddress
-
(
int
)
StoreManager
.
Config
.
GetDILength
(
ioIP
);
if
(
DOValueMap
.
ContainsKey
(
ioIP
)
&&
DOValueMap
[
ioIP
].
Count
>
index
)
// int index = (int)StartAddress - (int)StoreManager.Config.GetDILength(ioIP);
if
(
DOValueMap
.
ContainsKey
(
ioIP
)
&&
DOValueMap
[
ioIP
].
Count
>
StartAddress
)
{
{
sta
=
DOValueMap
[
ioIP
][
index
];
sta
=
DOValueMap
[
ioIP
][
StartAddress
];
}
}
else
else
{
sta
=
aioBox
.
ReadDO
(
addr
);
}
{
sta
=
aioBox
.
ReadDO
(
StartAddress
);
}
if
(
sta
.
Equals
(
Box_Sta
.
On
))
if
(
sta
.
Equals
(
Box_Sta
.
On
))
{
{
value
=
IO_VALUE
.
HIGH
;
value
=
IO_VALUE
.
HIGH
;
...
@@ -441,7 +408,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -441,7 +408,7 @@ namespace OnlineStore.DeviceLibrary
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"
ReadDI
出错:"
+
ex
.
ToString
());
LogUtil
.
error
(
"
GetDOValue
出错:"
+
ex
.
ToString
());
}
}
return
value
;
return
value
;
}
}
...
@@ -451,19 +418,19 @@ namespace OnlineStore.DeviceLibrary
...
@@ -451,19 +418,19 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE
value
=
IO_VALUE
.
LOW
;
IO_VALUE
value
=
IO_VALUE
.
LOW
;
try
try
{
{
AIOBOX
2
aioBox
=
getAIO
(
ioIP
);
AIOBOX
aioBox
=
getAIO
(
ioIP
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
Box_Sta
sta
=
Box_Sta
.
Off
;
Box_Sta
sta
=
Box_Sta
.
Off
;
Box_Addr
addr
=
GetAddr
(
StartAddress
);
//
Box_Addr addr = GetAddr(StartAddress);
int
index
=
StartAddress
;
int
index
=
StartAddress
;
if
(
DIValueMap
.
ContainsKey
(
ioIP
)
&&
DIValueMap
[
ioIP
].
Count
>
index
)
if
(
DIValueMap
.
ContainsKey
(
ioIP
)
&&
DIValueMap
[
ioIP
].
Count
>
index
)
{
{
sta
=
DIValueMap
[
ioIP
][
index
];
sta
=
DIValueMap
[
ioIP
][
index
];
}
}
else
else
{
{
sta
=
aioBox
.
ReadDI
(
addr
);
sta
=
aioBox
.
ReadDI
(
StartAddress
);
}
}
if
(
sta
.
Equals
(
Box_Sta
.
On
))
if
(
sta
.
Equals
(
Box_Sta
.
On
))
{
{
...
@@ -473,7 +440,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -473,7 +440,7 @@ namespace OnlineStore.DeviceLibrary
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"
ReadDI
出错:"
+
ex
.
ToString
());
LogUtil
.
error
(
"
GetDIValue
出错:"
+
ex
.
ToString
());
}
}
return
value
;
return
value
;
}
}
...
@@ -493,14 +460,14 @@ namespace OnlineStore.DeviceLibrary
...
@@ -493,14 +460,14 @@ namespace OnlineStore.DeviceLibrary
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
LOGGER
,
"获取数据出错:"
+
ex
.
ToString
());
LogUtil
.
error
(
LOGGER
,
"
GetIOValue
获取数据出错:"
+
ex
.
ToString
());
}
}
return
value
;
return
value
;
}
}
private
Box_Addr
GetAddr
(
ushort
StartAddress
)
private
Box_Addr
GetAddr
(
ushort
StartAddress
)
{
{
return
(
Box_Addr
)(
StartAddress
);
return
(
Box_Addr
)(
StartAddress
);
}
}
private
Box_Sta
GetBox_Sta
(
IO_VALUE
onOff
)
private
Box_Sta
GetBox_Sta
(
IO_VALUE
onOff
)
{
{
...
@@ -514,9 +481,9 @@ namespace OnlineStore.DeviceLibrary
...
@@ -514,9 +481,9 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
private
AIOBOX
2
getAIO
(
string
ioIp
)
private
AIOBOX
getAIO
(
string
ioIp
)
{
{
AIOBOX
2
aioBox
=
null
;
AIOBOX
aioBox
=
null
;
if
(
AIOMap
.
ContainsKey
(
ioIp
))
if
(
AIOMap
.
ContainsKey
(
ioIp
))
{
{
aioBox
=
AIOMap
[
ioIp
];
aioBox
=
AIOMap
[
ioIp
];
...
...
source/DeviceLibrary/IO/KangNaiDe/KNDManager.cs
查看文件 @
45d9167
...
@@ -11,8 +11,7 @@ using System.Threading;
...
@@ -11,8 +11,7 @@ using System.Threading;
namespace
OnlineStore.DeviceLibrary
namespace
OnlineStore.DeviceLibrary
{
{
//}
/// <summary>
/// <summary>
/// 康奈德IO控制模块
/// 康奈德IO控制模块
/// </summary>
/// </summary>
...
@@ -160,11 +159,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -160,11 +159,7 @@ namespace OnlineStore.DeviceLibrary
public
override
void
ConnectionIOList
(
List
<
string
>
DIONameList
)
public
override
void
ConnectionIOList
(
List
<
string
>
DIONameList
)
{
{
foreach
(
string
ip
in
DIONameList
)
foreach
(
string
ip
in
DIONameList
)
{
{
//if (ip.Equals("192.168.10.10"))
//{
// continue;
//}
ConnectionIP
(
ip
);
ConnectionIP
(
ip
);
}
}
}
}
...
@@ -180,7 +175,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -180,7 +175,7 @@ namespace OnlineStore.DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"Read
SingleDO出错
没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
LOGGER
,
"Read
MultipleDI出错
没有连接IO模块:"
+
ioIp
);
}
}
}
}
public
static
void
ReadMultipleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
ushort
length
)
public
static
void
ReadMultipleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
ushort
length
)
...
@@ -194,7 +189,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -194,7 +189,7 @@ namespace OnlineStore.DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"Read
SingleDO出错
没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
LOGGER
,
"Read
MultipleDO出错
没有连接IO模块:"
+
ioIp
);
}
}
}
}
//关闭所有的DO
//关闭所有的DO
...
@@ -240,7 +235,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -240,7 +235,7 @@ namespace OnlineStore.DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"
ReadSingleDO出错
没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
LOGGER
,
"
WriteMultipleDO 出错
没有连接IO模块:"
+
ioIp
);
}
}
}
}
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
)
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
)
...
@@ -257,7 +252,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -257,7 +252,7 @@ namespace OnlineStore.DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"
ReadSingleDO
出错没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
LOGGER
,
"
WriteSingleDO
出错没有连接IO模块:"
+
ioIp
);
}
}
}
}
...
@@ -299,7 +294,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -299,7 +294,7 @@ namespace OnlineStore.DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"
ReadSingleDO出错
没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
LOGGER
,
"
WriteSingleDO出错
没有连接IO模块:"
+
ioIp
);
}
}
}
}
...
...
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean.cs
查看文件 @
45d9167
...
@@ -868,7 +868,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -868,7 +868,7 @@ namespace OnlineStore.DeviceLibrary
if
(
storeRunStatus
.
Equals
(
StoreRunStatus
.
Wait
))
if
(
storeRunStatus
.
Equals
(
StoreRunStatus
.
Wait
))
{
{
//取新的Io状态
//取新的Io状态
IO_VALUE
autoSingle
=
IOManager
.
IOValue
(
IO_Type
.
AutoRun_Signal
);
IO_VALUE
autoSingle
=
IOManager
.
IOValue
(
IO_Type
.
Reset_BTN
);
if
(
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
App_AutoRun
).
Equals
(
1
))
if
(
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
App_AutoRun
).
Equals
(
1
))
{
{
if
(
autoSingle
.
Equals
(
IO_VALUE
.
HIGH
)
&&
lastAutoRun
.
Equals
(
IO_VALUE
.
LOW
))
if
(
autoSingle
.
Equals
(
IO_VALUE
.
HIGH
)
&&
lastAutoRun
.
Equals
(
IO_VALUE
.
LOW
))
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论