場景模擬,爲了捕捉到叉車是進門還是出門的動作,我們安裝了兩個地感設備,門前門後,進行接收兩個地感信號的值,通過值接收的先後順序可以知道是進門還是出門
設備:兩個PD132加上地感線圈,一個網口的六路繼電器
設備線路連接
通過網口連接六路繼電器,六路繼電器和地感設備接線連接
X1 01 02 02 FE FF B9 98 綠燈亮 X2綠燈滅
X1 01 02 02 FF FF B8 08 燈全滅
X2 01 02 02 FF FF B8 08 燈全滅
X2 01 02 02 FD FF B9 68 綠燈亮 X1綠燈滅
地感接線方式:
220V輸入電源
1火線
2零線
注意區分零線火線
控制器接線方式:
12V輸入電源
根據說明接入正負極電源
信號輸入:
X1-X4 4路
GND一路
電源線
藍色-零線
棕色-火線
黃色-接地
軟件層面:
持續發送數據
private void Recive()
{
while (true)
{
fast_send1();
Thread.Sleep(50);
}
}
private void fast_send1()
{
this.BeginInvoke(new Action(() =>
{
byte[] byte1 = new byte[8];
int crc16;
//byte1[0] = (byte)int.Parse(comboBox1.Text);
byte1[0] = (byte)int.Parse("1");
byte1[1] = 0x02;
byte1[2] = 0x00;
byte1[3] = 0x00;
byte1[4] = 0x00;
byte1[5] = 0x10;
crc16 = modbus_crc(byte1, 6);
byte1[6] = (byte)(crc16 & 0x00FF);
byte1[7] = (byte)((crc16 >> 8) & 0xFF);
readerCamera.ServerSendMessage(byte1);
}), null);
}
private int modbus_crc(byte[] data, byte leng)
{
int i, j;
int crc16 = 0xFFFF;
for (i = 0; i < leng; i++)
{
crc16 ^= data[i];
for (j = 0; j < 8; j++)
{
if ((crc16 & 0x01) == 1)
{
crc16 = (crc16 >> 1) ^ 0xA001;
}
else
{
crc16 = crc16 >> 1;
}
}
}
return crc16;
}
連接六路繼電器,持續發送採集信息,發送採集信息後進行接收反饋信號。
當閒置時,沒有一個設備感應,收到的反饋信號數組爲 01 02 02 FF B8 08
當1號線圈感應到,收到的反饋信號數組爲 01 02 02 FB BA C8
當2號線圈感應到,收到的反饋信號數組爲 01 02 02 F7 BF C8