影響を受けるバージョン:BioStar2のすべてのバージョン、すべてのマスター端末のFW
発生頻度:ランダム
利用可能なパッチファイル:BioStar 2.8.10、2.8.11、2.8.12、2.8.13
修正バージョン:BioStar 2.8.14(リリース日:2021年12月)
問題の説明
端末の設定情報を変更するとBioStar2は誤った内部パラメーター値をRS485マスター端末に送信及び適用されます。
RS485マスター端末が再起動すると、エラーパラメータ値が、RS485スレーブ端末との通信接続に影響します。また、RS485マスター端末とRS485スレーブ端末が再接続できない問題が発生します。
RS485接続が切断されているため、ユーザーがRS485スレーブで認証するときドア解錠ができなくなります。
[イメージ1- スレーブ端末の切断]
お知らせ
問題が発生する前に予防することが重要です。
RS485構成でドアやエレベータボタンを制御する現場は、以下のパッチファイルを使用して適用してください。
<1> RS485切断の問題を防ぐ方法
1) BioStar SettingにてすべてのBioStarサービスを停止します。
2) 現在インストールされているBioStar2バージョンのパッチファイルをインストールします。
パッチファイルのダウンロード(バージョン2.8.10、2.8.11、2.8.12、2.8.13)はリンクをご確認ください。
3) .exeファイルのファイル名を「biostar-server.exe」に変更します。ダウンロードしたファイルを以下のパスに貼り付けます。念のため既存のbiostar-server.exeファイルはバックアップします。
C:\Program Files\BioStar 2 (x64)
4) DB接続プログラムを実行します。DBタイプに応じて「BioStar 2 Patch - Release Note_ENG.txt」のクエリをコピーし、クエリを実行します。
Maria DBの場合:Heidi SQLもしくはMySQL Workbench
MSSQLの場合:SQL Management Studio
「Select * from T_DEVFORCECMD」クエリを実行すると、テーブルが正常に作成されたかどうかを確認できます。
Maria DBクエリ
CREATE TABLE IF NOT EXISTS T_DEVFORCECMD
( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );
ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';
INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';CREATE TABLE IF NOT EXISTS T_DEVFORCECMD( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';CREATE TABLE IF NOT EXISTS T_DEVFORCECMD( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';CREATE TABLE IF NOT EXISTS T_DEVFORCECMD( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';CREATE TABLE IF NOT EXISTS T_DEVFORCECMD( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';CREATE TABLE IF NOT EXISTS T_DEVFORCECMD( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';CREATE TABLE IF NOT EXISTS T_DEVFORCECMD( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';CREATE TABLE IF NOT EXISTS T_DEVFORCECMD( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';CREATE TABLE IF NOT EXISTS T_DEVFORCECMD( DEVID INT NOT NULL, CMDTYPE INT NOT NULL COMMENT 'Command type ex : 0x012A 298 BS2_CMD_RS485_SET_SLAVE', RSLT Char(1) DEFAULT 'N' COMMENT 'Y - sent, N - not yet', createdAt DATETIME, updatedAt DATETIME, PRIMARY KEY (DEVID) );ALTER TABLE T_DEVFORCECMD COMMENT = 'Send a command only once to the target device.';INSERT IGNORE INTO T_DEVFORCECMD(DEVID,CMDTYPE,RSLT,createdAt,updatedAt) SELECT DEVID, 298,'N', NOW() AS createdAt, NOW() AS updatedAt FROM t_dev WHERE RS4MD <> 'S';
MSSQL DBクエリ
4) すべての手順1〜3が完了したら、すべてのBioStarサービスを開始します。
5) DB接続プログラムで、以下のクエリを使用して確認してください。検索結果がない場合、プロセスは成功です。
-状況によっては、クエリの「AND a.RSLT = 'N'」を削除して、RSLT列の値が 'Y'に変更されているかどうかを確認してもかまいません。このテーブルは、デバイスがBioStar2に接続されているときにRSLT値がNの場合にのみSetrs485コマンド信号を提供するために使用されます。Set rs485コマンド信号はスレーブを備えたマスターデバイスに与えられるため、BioStar2に接続されているデバイスの数によっては、RSLT列の値が「N」->「Y」に変わるまでに時間がかかる場合があります。
上記のパッチは、問題を防止するパッチであり、問題の状況を解決することはできません。RS485切断の問題がすでに発生している場合は、以下の手順をご確認ください。
<2> RS485切断の問題を解決する方法
1) BioStar2の端末メニューをクリックします。
2) 左のデバイスツリーからマスター端末を右クリックします。
3) スレーブ端末を検索をクリックします。
4) [スレーブ端末の検索]ポップアップウィンドウのローディングが完了します。[キャンセル]ボタンをクリックしてポップアップウィンドウを閉じます。
5) スレーブ端末がマスター端末に再接続されているかどうかを確認します。