雷赛DMC1380控制卡关于更改专用输入为通用输入的函数应用技巧
软件使用说明书中关于对应位的定义如下图1:
(图1)
下面以VB为例,举例说明如何使用:
1. 某客户项目用一张DMC1380卡,对X轴,其只是需要原点信号,该项目不希望用到扩展板的I/O,因为X 轴的限位开关Elx+ 和Elx- 输入已经有光耦隔离,因此其希望将Elx+ 和Elx-用作通用输入口,用作某气缸两端的磁环感应开关的输入口(以便检测气缸的工作位置),DMC1380的引脚定义对应关系如下图2:
其中:
Elx+ 对应通用输入IN4
Elx- 对应通用输入IN5
2. 从图1中我们将对应的位关系按2进制列表,如下表1:
高位 |
|
|
|
|
|
|
|
|
|
|
|
|
低位 |
||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
(表1)
其中蓝色标记的位对应如下:
ELx+ à 位
Elx- à 位
想要将这两位设为通用输入,需要将该两位对应的2进制值设为0,同时必须保留其他的位的2进制值为1(或按自定义位的值来设定),如表一所示。
该值按2进制排列如下:
高位 低位
‘0111 1111 1110 0111 ’
值为0的带下划线的两个位对应 ELx+ 和ELx-,对应的十进制值是:
2?0+2?1+2?2+0x2?3+0x2?4+2?5+2?6+2?7+2?8+2?9+2?10+2?11+2?12+2?13+2?14+0x2?15 = 32743
该值按16进制排列,对应如下:
高位 低位
‘0111 1111 1110 0111 ’ à 2进制
‘ 7 F E 7 ’ à 16进制
下表2是4位2进制对应的16进制的转换表:
1111 |
1110 |
1101 |
1100 |
1011 |
1010 |
1001 |
1000 |
0111 |
0110 |
0101 |
0100 |
0011 |
0010 |
0001 |
0000 |
F |
E |
D |
C |
B |
A |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
(表2)
建议用电脑自带的计算器来处理,用二进制输入对应位的值,然后转为10进制的值,或16进制值。
(图3)
选择10进制后,会直接得到需要的整数值,如图4:
(图4)
选择16进制后,会直接得到需要的数值,如图5:
(图5)
3. 解决方案:
因此,在控制卡初始化成功后,需要加入如下函数&对应的参数值:
D1000_in_enable 0, 32743
或:
D1000_in_enable 0, &H7FE7
在需要检测气缸两端的磁环感应开关的状态时, 按如下处理即可(依照图2,Elx+ 对应IN4):
If (D1000_in_bit(4)= 0 ) then
‘下面加入处理段落, 略…
End if
或 (依照图2,Elx- 对应IN5)
If( d1000_in_bit(5) = 0 ) then
‘下面加入处理段落,略…
End if
4. 同理:在此基础上,如需将全部减速专用输入SDxx改为通用输入,D1000_in_enable 0, xx, 值xx, 对应的2进制位设置如下表3:
高位 |
|
|
|
|
|
|
|
|
|
|
|
|
低位 |
||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
(表3)
转换为10进制后的值是
2?0+2?1+2?2+0x2?3+0x2?4+2?5+2?6+2?7+2?8+0x2?9+0x2?10+0x2?11+0x2?12+0x2?13+0x2?14+0x2?15 = 487
(图6)
因此,在控制卡初始化成功后,需要加入如下函数及参数值:
D1000_in_enable 0, 487
或
D1000_in_enable 0, &H1E7
然后,在需要检测对应输入位SDx+(映射感应器或按钮开关)的状态时,按如下处理即可(依照图2,SDx+ 对应IN10):
If (D1000_in_bit(10)= 0 ) then
‘下面加入处理段落, 略…
End if
结束
提交