Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
ACSingleStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 88520123
由
几米阳光
编写于
2018-04-04 09:15:32 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
伺服部分代码修改
1 个父辈
2a6014dc
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
54 行增加
和
61 行删除
source/ACServoDriveTest/FrmACTest.cs
source/DeviceLibrary/PanasonicServo/ACServerManager.cs
source/DeviceLibrary/PanasonicServo/ACServerManager_Partial.cs
source/ACServoDriveTest/FrmACTest.cs
查看文件 @
8852012
...
@@ -212,7 +212,7 @@ namespace ACServoDriveTest
...
@@ -212,7 +212,7 @@ namespace ACServoDriveTest
private
void
button2_Click
(
object
sender
,
EventArgs
e
)
private
void
button2_Click
(
object
sender
,
EventArgs
e
)
{
{
ACServerManager
.
OpenSTB
(
GetPortName
(),
GetSlaveAddr
());
ACServerManager
.
Open
AndClose
STB
(
GetPortName
(),
GetSlaveAddr
());
//OpenSTB();
//OpenSTB();
}
}
...
...
source/DeviceLibrary/PanasonicServo/ACServerManager.cs
查看文件 @
8852012
...
@@ -13,6 +13,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -13,6 +13,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
/// </summary>
public
partial
class
ACServerManager
public
partial
class
ACServerManager
{
{
private
static
int
SleepMSendons
=
10
;
public
static
bool
OpenPort
(
string
portName
)
public
static
bool
OpenPort
(
string
portName
)
{
{
if
(
serialBeanMap
.
ContainsKey
(
portName
))
if
(
serialBeanMap
.
ContainsKey
(
portName
))
...
@@ -95,66 +96,51 @@ namespace OnlineStore.DeviceLibrary
...
@@ -95,66 +96,51 @@ namespace OnlineStore.DeviceLibrary
{
{
LogUtil
.
info
(
"开始初始化伺服【"
+
portName
+
"】【"
+
slvAddr
+
"】"
);
LogUtil
.
info
(
"开始初始化伺服【"
+
portName
+
"】【"
+
slvAddr
+
"】"
);
//写入block
//写入block
int
sleep
=
5
;
string
slvAddrStr
=
string
.
Format
(
strFromat
,
slvAddr
);
string
slvAddrStr
=
string
.
Format
(
strFromat
,
slvAddr
);
//block0=原点返回,正方向
//block0=原点返回,正方向
string
str0
=
slvAddrStr
+
"104800 000408 00000420 00000000 ffff"
;
string
str0
=
slvAddrStr
+
"104800 000408 00000420 00000000 ffff"
;
SendStr
(
portName
,
str0
);
SendStrAndSleep
(
portName
,
str0
);
Thread
.
Sleep
(
sleep
);
//block1=原点返回,反方向
//block1=原点返回,反方向
string
str1
=
slvAddrStr
+
"104804 000408 04000420 00000000 ffff"
;
string
str1
=
slvAddrStr
+
"104804 000408 04000420 00000000 ffff"
;
SendStr
(
portName
,
str1
);
SendStrAndSleep
(
portName
,
str1
);
Thread
.
Sleep
(
sleep
);
//block2=绝对位置运动
//block2=绝对位置运动
string
str2
=
slvAddrStr
+
"104808 000408 10000211EC78FFFF ffff"
;
string
str2
=
slvAddrStr
+
"104808 000408 10000211EC78FFFF ffff"
;
SendStr
(
portName
,
str2
);
SendStrAndSleep
(
portName
,
str2
);
Thread
.
Sleep
(
sleep
);
//block3=相对位置运动
//block3=相对位置运动
string
str3
=
slvAddrStr
+
"10480C 000408 10000111EC78FFFF ffff"
;
string
str3
=
slvAddrStr
+
"10480C 000408 10000111EC78FFFF ffff"
;
SendStr
(
portName
,
str3
);
SendStrAndSleep
(
portName
,
str3
);
Thread
.
Sleep
(
sleep
);
//block4=正方向匀速运动
//block4=正方向匀速运动
string
str4
=
slvAddrStr
+
"104810 000408 10000311 00000000 ffff"
;
string
str4
=
slvAddrStr
+
"104810 000408 10000311 00000000 ffff"
;
SendStr
(
portName
,
str4
);
SendStrAndSleep
(
portName
,
str4
);
Thread
.
Sleep
(
sleep
);
//block5=反方向匀速运动
//block5=反方向匀速运动
string
str5
=
slvAddrStr
+
"104814 000408 14000311 00000000 ffff"
;
string
str5
=
slvAddrStr
+
"104814 000408 14000311 00000000 ffff"
;
SendStr
(
portName
,
str5
);
SendStrAndSleep
(
portName
,
str5
);
Thread
.
Sleep
(
sleep
);
//block6=减速停止
//block6=减速停止
string
str6
=
slvAddrStr
+
"104818 000408 00000500 00000000 ffff"
;
string
str6
=
slvAddrStr
+
"104818 000408 00000500 00000000 ffff"
;
SendStr
(
portName
,
str6
);
SendStrAndSleep
(
portName
,
str6
);
Thread
.
Sleep
(
sleep
);
//block7=紧急停止
//block7=紧急停止
string
str7
=
slvAddrStr
+
"10481c 000408 00000510 00000000 ffff"
;
string
str7
=
slvAddrStr
+
"10481c 000408 00000510 00000000 ffff"
;
SendStr
(
portName
,
str7
);
SendStrAndSleep
(
portName
,
str7
);
Thread
.
Sleep
(
sleep
);
//0106460001009D12
//0106460001009D12
//速度 V1 =100
//速度 V1 =100
string
v1
=
slvAddrStr
+
"064601 "
+
SpeedToStr
(
targetSpeed
,
4
)
+
" ffff"
;
string
v1
=
slvAddrStr
+
"064601 "
+
SpeedToStr
(
targetSpeed
,
4
)
+
" ffff"
;
SendStr
(
portName
,
v1
);
SendStrAndSleep
(
portName
,
v1
);
Thread
.
Sleep
(
sleep
);
//加速度 A1 =30
//加速度 A1 =30
string
a1
=
slvAddrStr
+
"064611 "
+
SpeedToStr
(
addSpeed
,
4
)
+
" ffff"
;
string
a1
=
slvAddrStr
+
"064611 "
+
SpeedToStr
(
addSpeed
,
4
)
+
" ffff"
;
SendStr
(
portName
,
a1
);
SendStrAndSleep
(
portName
,
a1
);
Thread
.
Sleep
(
sleep
);
//减速度 D1=30
//减速度 D1=30
string
d1
=
slvAddrStr
+
"064621 "
+
SpeedToStr
(
delSpeed
,
4
)
+
" ffff"
;
string
d1
=
slvAddrStr
+
"064621 "
+
SpeedToStr
(
delSpeed
,
4
)
+
" ffff"
;
SendStr
(
portName
,
d1
);
SendStrAndSleep
(
portName
,
d1
);
Thread
.
Sleep
(
sleep
);
//原点返回高速 homeHighSpeed=100
//原点返回高速 homeHighSpeed=100
SendStr
(
portName
,
slvAddrStr
+
"06 4637 "
+
SpeedToStr
(
homeHighSpeed
,
4
)
+
" ffff"
);
SendStrAndSleep
(
portName
,
slvAddrStr
+
"06 4637 "
+
SpeedToStr
(
homeHighSpeed
,
4
)
+
" ffff"
);
Thread
.
Sleep
(
sleep
);
//原点返回抵速 homeLowSpeed=50
//原点返回抵速 homeLowSpeed=50
SendStr
(
portName
,
slvAddrStr
+
"06 4638 "
+
SpeedToStr
(
homeLowSpeed
,
4
)
+
" ffff"
);
SendStrAndSleep
(
portName
,
slvAddrStr
+
"06 4638 "
+
SpeedToStr
(
homeLowSpeed
,
4
)
+
" ffff"
);
Thread
.
Sleep
(
sleep
);
//原点返回加速度=30
//原点返回加速度=30
SendStr
(
portName
,
slvAddrStr
+
"06 4639 "
+
SpeedToStr
(
homeAddSpeed
,
4
)
+
" ffff"
);
SendStrAndSleep
(
portName
,
slvAddrStr
+
"06 4639 "
+
SpeedToStr
(
homeAddSpeed
,
4
)
+
" ffff"
);
Thread
.
Sleep
(
sleep
);
UpdateEEPROM
(
portName
,
slvAddr
);
UpdateEEPROM
(
portName
,
slvAddr
);
}
}
public
static
void
UpdateEEPROM
(
string
portName
,
int
slvAddr
)
public
static
void
UpdateEEPROM
(
string
portName
,
int
slvAddr
)
...
@@ -191,7 +177,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -191,7 +177,7 @@ namespace OnlineStore.DeviceLibrary
//先更新速度
//先更新速度
string
slvAddrStr
=
string
.
Format
(
strFromat
,
slvAddr
);
string
slvAddrStr
=
string
.
Format
(
strFromat
,
slvAddr
);
string
v1
=
slvAddrStr
+
"064601 "
+
SpeedToStr
(
targetSpeed
,
4
)
+
" ffff"
;
string
v1
=
slvAddrStr
+
"064601 "
+
SpeedToStr
(
targetSpeed
,
4
)
+
" ffff"
;
SendStr
(
portName
,
v1
);
SendStr
AndSleep
(
portName
,
v1
);
RelMove
(
portName
,
slvAddr
,
position
);
RelMove
(
portName
,
slvAddr
,
position
);
}
}
...
@@ -234,23 +220,23 @@ namespace OnlineStore.DeviceLibrary
...
@@ -234,23 +220,23 @@ namespace OnlineStore.DeviceLibrary
}
}
data
=
ACCMDManager
.
buildCheckData
(
data
,
data
.
Length
-
2
);
data
=
ACCMDManager
.
buildCheckData
(
data
,
data
.
Length
-
2
);
SendData
(
portName
,
data
);
SendData
(
portName
,
data
);
System
.
Threading
.
Thread
.
Sleep
(
100
);
System
.
Threading
.
Thread
.
Sleep
(
SleepMSendons
);
//运动
//运动
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
06
,
ACCMDManager
.
BlockNo
,
ACCMDManager
.
Block_RelMove
,
2
);
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
06
,
ACCMDManager
.
BlockNo
,
ACCMDManager
.
Block_RelMove
,
2
);
SendData
(
portName
,
data
);
SendData
(
portName
,
data
);
Thread
.
Sleep
(
100
);
//
Thread.Sleep(100);
OpenSTB
(
portName
,
slvAddr
);
Open
AndClose
STB
(
portName
,
slvAddr
);
}
}
public
static
void
HomeMove
(
string
portName
,
int
slvAddr
,
int
speed
)
public
static
void
HomeMove
(
string
portName
,
int
slvAddr
,
int
speed
)
{
{
byte
[]
date
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
"4637"
,
string
.
Format
(
"{0:X2}"
,
Math
.
Abs
(
speed
)),
1
);
byte
[]
date
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
"4637"
,
string
.
Format
(
"{0:X2}"
,
Math
.
Abs
(
speed
)),
1
);
SendData
(
portName
,
date
);
SendData
(
portName
,
date
);
Thread
.
Sleep
(
100
);
Thread
.
Sleep
(
SleepMSendons
);
date
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
"4638"
,
string
.
Format
(
"{0:X2}"
,
Math
.
Abs
(
speed
/
2
)),
1
);
date
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
"4638"
,
string
.
Format
(
"{0:X2}"
,
Math
.
Abs
(
speed
/
2
)),
1
);
SendData
(
portName
,
date
);
SendData
(
portName
,
date
);
Thread
.
Sleep
(
100
);
Thread
.
Sleep
(
SleepMSendons
);
//if (speed > 0)
//if (speed > 0)
//{
//{
//byte[] data = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, ACCMDManager.BlockNo, ACCMDManager.Block_HomeMove0, 2);
//byte[] data = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, ACCMDManager.BlockNo, ACCMDManager.Block_HomeMove0, 2);
...
@@ -262,15 +248,15 @@ namespace OnlineStore.DeviceLibrary
...
@@ -262,15 +248,15 @@ namespace OnlineStore.DeviceLibrary
SendData
(
portName
,
data
);
SendData
(
portName
,
data
);
//}
//}
Thread
.
Sleep
(
100
);
//
Thread.Sleep(100);
OpenSTB
(
portName
,
slvAddr
);
Open
AndClose
STB
(
portName
,
slvAddr
);
}
}
public
static
void
SpeedMove
(
string
portName
,
int
slvAddr
,
int
speed
)
public
static
void
SpeedMove
(
string
portName
,
int
slvAddr
,
int
speed
)
{
{
byte
[]
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
"4601"
,
string
.
Format
(
"{0:X2}"
,
Math
.
Abs
(
speed
)),
2
);
byte
[]
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
"4601"
,
string
.
Format
(
"{0:X2}"
,
Math
.
Abs
(
speed
)),
2
);
SendData
(
portName
,
data
);
SendData
(
portName
,
data
);
Thread
.
Sleep
(
100
);
Thread
.
Sleep
(
SleepMSendons
);
if
(
speed
>
0
)
if
(
speed
>
0
)
{
{
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
ACCMDManager
.
BlockNo
,
ACCMDManager
.
Block_VolMove0
,
2
);
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
ACCMDManager
.
BlockNo
,
ACCMDManager
.
Block_VolMove0
,
2
);
...
@@ -281,8 +267,8 @@ namespace OnlineStore.DeviceLibrary
...
@@ -281,8 +267,8 @@ namespace OnlineStore.DeviceLibrary
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
ACCMDManager
.
BlockNo
,
ACCMDManager
.
Block_VolMove1
,
2
);
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
ACCMDManager
.
BlockNo
,
ACCMDManager
.
Block_VolMove1
,
2
);
SendData
(
portName
,
data
);
SendData
(
portName
,
data
);
}
}
Thread
.
Sleep
(
100
);
//
Thread.Sleep(100);
OpenSTB
(
portName
,
slvAddr
);
Open
AndClose
STB
(
portName
,
slvAddr
);
}
}
public
static
void
AbsMove
(
string
portName
,
int
slvAddr
,
int
targetPosition
,
int
targetSpeed
)
public
static
void
AbsMove
(
string
portName
,
int
slvAddr
,
int
targetPosition
,
int
targetSpeed
)
{
{
...
@@ -291,7 +277,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -291,7 +277,7 @@ namespace OnlineStore.DeviceLibrary
//0106460001009D12
//0106460001009D12
//速度 V1 =100
//速度 V1 =100
string
v1
=
slvAddrStr
+
"064601 "
+
SpeedToStr
(
targetSpeed
,
4
)
+
" ffff"
;
string
v1
=
slvAddrStr
+
"064601 "
+
SpeedToStr
(
targetSpeed
,
4
)
+
" ffff"
;
SendStr
(
portName
,
v1
);
SendStr
AndSleep
(
portName
,
v1
);
//绝对运动
//绝对运动
AbsMove
(
portName
,
slvAddr
,
targetPosition
);
AbsMove
(
portName
,
slvAddr
,
targetPosition
);
...
@@ -335,11 +321,11 @@ namespace OnlineStore.DeviceLibrary
...
@@ -335,11 +321,11 @@ namespace OnlineStore.DeviceLibrary
}
}
data
=
ACCMDManager
.
buildCheckData
(
data
,
data
.
Length
-
2
);
data
=
ACCMDManager
.
buildCheckData
(
data
,
data
.
Length
-
2
);
SendData
(
portName
,
data
);
SendData
(
portName
,
data
);
System
.
Threading
.
Thread
.
Sleep
(
100
);
System
.
Threading
.
Thread
.
Sleep
(
SleepMSendons
);
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
ACCMDManager
.
BlockNo
,
ACCMDManager
.
Block_AbsMove
,
2
);
data
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteRegisters
,
ACCMDManager
.
BlockNo
,
ACCMDManager
.
Block_AbsMove
,
2
);
SendData
(
portName
,
data
);
SendData
(
portName
,
data
);
Thread
.
Sleep
(
100
);
Thread
.
Sleep
(
SleepMSendons
);
OpenSTB
(
portName
,
slvAddr
);
Open
AndClose
STB
(
portName
,
slvAddr
);
}
}
}
}
}
}
source/DeviceLibrary/PanasonicServo/ACServerManager_Partial.cs
查看文件 @
8852012
...
@@ -41,16 +41,23 @@ namespace OnlineStore.DeviceLibrary
...
@@ -41,16 +41,23 @@ namespace OnlineStore.DeviceLibrary
byte
[]
data2
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteCoil
,
ACCMDManager
.
STB_Addr
,
"ff00"
,
2
);
byte
[]
data2
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteCoil
,
ACCMDManager
.
STB_Addr
,
"ff00"
,
2
);
SendData
(
portName
,
data2
);
SendData
(
portName
,
data2
);
}
}
public
static
void
SendStr
(
string
portName
,
string
str
)
public
static
void
SendStr
AndSleep
(
string
portName
,
string
str
)
{
{
byte
[]
data
=
SerialBean
.
StringToByte
(
str
);
byte
[]
data
=
SerialBean
.
StringToByte
(
str
);
data
[
data
.
Length
-
1
]
=
0x00
;
data
[
data
.
Length
-
1
]
=
0x00
;
data
[
data
.
Length
-
2
]
=
0x00
;
data
[
data
.
Length
-
2
]
=
0x00
;
data
=
ACCMDManager
.
buildCheckData
(
data
,
data
.
Length
-
2
);
data
=
ACCMDManager
.
buildCheckData
(
data
,
data
.
Length
-
2
);
SendData
(
portName
,
data
);
SendData
(
portName
,
data
);
System
.
Threading
.
Thread
.
Sleep
(
100
);
System
.
Threading
.
Thread
.
Sleep
(
SleepMSendons
);
}
public
static
void
SendStr
(
string
portName
,
string
str
)
{
byte
[]
data
=
SerialBean
.
StringToByte
(
str
);
data
[
data
.
Length
-
1
]
=
0x00
;
data
[
data
.
Length
-
2
]
=
0x00
;
data
=
ACCMDManager
.
buildCheckData
(
data
,
data
.
Length
-
2
);
SendData
(
portName
,
data
);
}
}
private
static
void
DataReceived
(
string
portName
,
object
sender
,
SerialDataReceivedEventArgs
e
,
byte
[]
bits
)
private
static
void
DataReceived
(
string
portName
,
object
sender
,
SerialDataReceivedEventArgs
e
,
byte
[]
bits
)
{
{
string
strSend
=
""
;
string
strSend
=
""
;
...
@@ -301,26 +308,26 @@ namespace OnlineStore.DeviceLibrary
...
@@ -301,26 +308,26 @@ namespace OnlineStore.DeviceLibrary
SendData
(
portName
,
dataArray
);
SendData
(
portName
,
dataArray
);
}
}
public
static
void
OpenSTB
(
string
portName
,
int
slvAddr
)
public
static
void
OpenAndCloseSTB
(
string
portName
,
int
slvAddr
)
{
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
addr
=
ACCMDManager
.
STB_Addr
;
string
data
=
"FF00"
;
string
data
=
"FF00"
;
//byte cmd = 0x05;
int
length
=
2
;
int
length
=
2
;
byte
[]
dataArray
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteCoil
,
addr
,
data
,
length
);
byte
[]
dataArray
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteCoil
,
addr
,
data
,
length
);
SendData
(
portName
,
dataArray
);
SendData
(
portName
,
dataArray
);
System
.
Threading
.
Thread
.
Sleep
(
1000
);
data
=
"0000"
;
dataArray
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteCoil
,
addr
,
data
,
length
);
SendData
(
portName
,
dataArray
);
}
}
public
static
void
CloseSTB
(
string
portName
,
int
slvAddr
)
public
static
void
CloseSTB
(
string
portName
,
int
slvAddr
)
{
{
string
addr
=
ACCMDManager
.
STB_Addr
;
string
addr
=
ACCMDManager
.
STB_Addr
;
string
data
=
"0000"
;
string
data
=
"0000"
;
//byte cmd = 0x05;
int
length
=
2
;
int
length
=
2
;
byte
[]
dataArray
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteCoil
,
addr
,
data
,
length
);
byte
[]
dataArray
=
ACCMDManager
.
GetWriteData
(
slvAddr
,
ACCMDManager
.
CMD_WriteCoil
,
addr
,
data
,
length
);
SendData
(
portName
,
dataArray
);
SendData
(
portName
,
dataArray
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论