C#通過繼電器接收PD132地感設備信號

場景模擬,爲了捕捉到叉車是進門還是出門的動作,我們安裝了兩個地感設備,門前門後,進行接收兩個地感信號的值,通過值接收的先後順序可以知道是進門還是出門

設備:兩個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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章