0

状況 オリエンタル モーターの LSD-KD ステッピング モーター ドライバーがあり、PC -> USB -> RS232 -> RS485 -> ドライバー経由で接続しています。ドライバーは RS485 Modbus RTU を使用し、伝送速度 38400、データビット 8、ストップビット 1、偶数パリティ、スレーブ番号 2 で送信されます。

0x02,0x06,0x02,0x4b,0x00,0x50,0xf8,0x6b を送信しようとしていますが、これはレジスタを正しくする必要があります。応答がなく、C-DAT/C-ERR が赤くなります。

私はこのJavascriptコードを少し持っています

var crc = require('crc');
var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort("/dev/cu.usbserial", {
  baudrate: 38400,
  databits: 8,
  stopbits: 1,
  parity: 'even'
});

var buff = new Buffer([0x02,0x06,0x02,0x4b,0x00,0x50,0xf8,0x6b]);

console.assert(crc.crc16modbus(buff) == 0);

serialPort.open(function () {

   serialPort.on('data', function(data) {
      console.log("recieving:", data);
    });

  setInterval(function() {
    console.log("writing", buff)
   serialPort.write(buff);
  },1000);

});

コードを実行すると、次のように表示されます。

writing <Buffer 02 06 02 4b 00 50 f8 6b>
recieving: <Buffer 02>
recieving: <Buffer 06>
recieving: <Buffer 02>
recieving: <Buffer 4b>
recieving: <Buffer 00>
recieving: <Buffer 50>
recieving: <Buffer f8>
recieving: <Buffer 6b>

RS485 にはエコーがあるため、これは例外です。しかし、私は奴隷から何も受け取っていません。

編集:構成の詳細。RS232 <-> RS485 コンバーターで 'T.ON R.ON' と 'DCE' に設定されているのはこのデバイスです。デバイス ページ

ドライバーでは、次のように設定されています。

SW1は2に設定され、SW1はスレーブ番号に対応します

SW2 は 2 に設定され、値が 2 の SW2 は 38400 の伝送速度を示します。

SW3は「1:オフ、2:オン、3:オフ、4:オン」に設定

 No.1: Set the address number, this causes the slave address to be 16 values higher
 No.2: Set the protocol, this sets it to use the ModBus Protocol
 No.3: Not used 
 No.4: Set the termination resistor (120 Ω)

RS232 <-> RS485 コンバータの出力ポートをドライバに接続します。出力ポートはコンバータの入力ポートにも接続されています。したがって、エコー。

4

0 に答える 0