D/Aコンバータとしてとても優秀なRaspberry Pi Picoの使い方と、USBシリアルの動かし方

USBでD/Aコンバートしたいことってあるじゃないですか。そんなときArduinoを使いたくなりますが、こいつが純正は地味に高く、互換はシリアルナンバーが書き込まれてなかったり微妙。しかもanalogWriteは256段階しか出力できません。

そこで、Raspberry Pi Picoを使ってみることにしました。MicroPythonではなく、CircuitPythonを使います。MicroPythonだとPWMキャリア周波数が1kHzまでしか出ないので注意です。CircuitPythonを使用した場合、キャリア周波数は1MHz程度まで十分に上げられます。

キャリア周波数と電圧の塩梅(あげすぎると電圧の幅が狭まる)を適度にとって動かしてあげればOKです。580円できっちりシリアルナンバーも書き込まれていてお得ですね!

次に、USBシリアルについての話です。Raspberry Pi PicoとPCの通信でわざわざ別途USBシリアル基板を使っている方をよく見かけるのですが、どう考えても何とか方法あるのに…と思って試行錯誤してみたところ、MicroPythonやCircuitPythonでは input() 関数を使うことでUSBシリアル通信ができることがわかりました。

from machine import Pin, PWM
from time import sleep
pwm = PWM(Pin(15))
# 80kHz
pwm.freq(80000)
pwm.duty_u16(0)
line = ""
while True:
char = input()
line += char
if line.startswith("SOL") and line.endswith("EOL"):
print(line)
line = line.replace("SOL", "")
duty = line.replace("EOL", "")
pwm.duty_u16(int(duty))
line = ""
continue
if line.endswith("EOL"):
line = ""
if len(line) > 20:
line = ""

こんな感じでちょっと特殊な書き方(1文字ずつ取る形になる)ですが、普通に通信できます。もっと良いやり方があれば教えてください。そうそう、書き込むときはCRLFで行を締めないとだめなので注意です。

カテゴリー: コンピュータ, 電気電子, Python | コメントをどうぞ

自室をリフォームして押し入れを運転台にした

昨年のことなんですが。和室を洋間にするついでに、押し入れに例のDE15ラッセルヘッド運転台を配置しました。

こんな感じになりました。前のテレビには映像を写せます。

外部から速度を入れてBVEに連動させることができたので、いいかんじにやってます。

Twitterとかの知り合いで来たい方いたらぜひ来てください。楽しいですよ

カテゴリー: 鉄道 | コメントをどうぞ

Zennに記事を書きました

https://zenn.dev/mipsparc/articles/a818970a19ade6

GraphQLを採用したサイトで特有の脆弱性を見つけた話です。

カテゴリー: Uncategorized | コメントをどうぞ

DE15ディーゼル機関車(ラッセルヘッド)シミュレータを本物部品とPythonなどでつくった

まずは上の動画をご覧ください。

以前から本物の部品を収集してきましたが、ついに! 秋田臨海鉄道でDE15ラッセルヘッドのブレーキ弁を手に入れ、左右が揃いました。

ブレーキ弁も大変で、詳しくはこちらの記事をご覧ください。

https://elchika.com/article/aae3cd6c-f63b-4ef0-9730-9b1c99417a27/

あとはすでに作ってあったシミュレーションソフトをつなぎこんで完成です。

リポジトリはこちら

https://github.com/mipsparc/DE15

PythonとArduinoでできています。計器の針をサーボモータで動かすのが一番大変でしたw

チャンネル登録高評価、おねがいしますね!

カテゴリー: コンピュータ, 鉄道, 電気電子, Python | コメントをどうぞ

DCCデビューした

こんにちは。車内補充券をお願いするときに「マニアなんですが」と前置きすると話が早いことに気づいたmipsparcです。

ここ数日でDCC(Digital Command Control/デジタル指令による鉄道模型制御)をはじめるのに成功しました。

DCCには以前から憧れがありましたが、私がDCCで実現したいことは以下です。

  • 低速からのなめらかな加速
    • アナログ制御では電圧が低い低速での走行が不安定になり、ある程度勢いをつけないと発進できません。
  • 勾配や曲線での安定した速度
    • アナログ制御では一定の速度を維持するのは容易ではありません。
  • 安定したヘッドライト・テールライトの常点灯
    • 常点灯はアナログでも可能ですが、チラツキがあったり、速度によって明るさの違いがあります。
  • 再現性のあるコンピュータとの接続
    • コンピュータ制御でいろいろなマスコンと接続したいのですが、外部デジタル入力可能なアナログコントローラは市販されていません。これまでは自作していましたが、1点もので再現性がなく、信頼性にも大きな不安がありました。

Twitterで仲良くしてくださっている@LOCKE00さんに宣伝されて、DesktopStationさんのDSair2というDCCコマンドステーション(コントローラのこと)を導入することにしました。

当時はキットなら学割もあったので、ありがたく利用させていただきました。はんだ付けは苦手ではないので、制作はあっさりできました。

FlashAirという無線LAN APになるSDカードを差し込むと、無線で操作できます。FlashAirを取り外すと、USBで制御できます。後半でUSB経由でコンピュータ制御をしています。

DSair2でアナログ鉄道模型を動かす

アナログ鉄道模型コントローラとしても使用できるため、まずはアナログ+USB接続+Linuxで試してみました。コマンドリファレンスは以下です。ソースコードを読めばわかるのですが、実はWiFiでもUSB接続でも、共通のコマンドが使えます。

WiFi: https://desktopstation.net/wiki/doku.php/dsair_wifi_specification

USB(シリアル): https://desktopstation.net/wiki/doku.php/desktop_station_s_serial_communication_specification


#coding:utf-8
import serial
import time
def send(s, value):
s.write(value.encode('ascii') + b'\n')
s.flush()
def init_dsair2(s):
time.sleep(0.3)
send(s, 'setPower(0)')
time.sleep(0.3)
send(s, 'setPower(0)')
time.sleep(0.3)
s.reset_input_buffer()
ser = serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=0.1, write_timeout=0.1, inter_byte_timeout=0.1)
# DSair2を再起動
send(ser, 'reset()')
time.sleep(1)
# 1回目の初期化
init_dsair2(ser)
send(ser, 'setPing()')
if (not ser.read(50).decode('ascii').endswith('200 Ok\r\n')):
print('DSair2を正常に認識できませんでした。終了します')
exit()
else:
print('DSair2を正常に認識しました。')
# 2回目の初期化
init_dsair2(ser)
print('DSair2 起動完了')
for speed in [0, 400, 350, 350, 350, 350, 350, 350, 280, 280, 280, 250, 0]:
way = 1
command = f'DC({speed},{way})\n'
send(ser, command)
time.sleep(0.2)

 

失敗編: デコーダとコマンドステーションの相性問題

KATO DE10に組み込むため、KATO公式で指定されているデコーダ Digitrax DN163K4Aを2つ手に入れました。機関車は内部構造が複雑でしたがなんとか組み込み、動かそうとすると… 明らかにうまく動いていない。

なんと、DSair2とDigitraxのデコーダは相性問題があり、動かないことがあるようです。DSair2の説明にも書いてあるので私の責任なのですが、これはDCCの大きな課題ですね… アナログ鉄道模型ならどんな組み合わせでもまず動くので。規格はあるのにインターオペラビリティがない。

成功編: DSair2とSmileDecoder N18とE531系

失敗で心が折れてしまって数ヶ月ブランクがあったのですが、気を取り直して再度挑戦してみることにしました。

今度は動作確認がとれている同人ハードのSmileDecoder N18をKATO E531系に組み込むことにしました。Next18(N18)というのはコネクタ規格の名前です。

KATOの一部の鉄道模型はDCCフレンドリーといってKATO純正のデコーダを組み込みやすく設計してあります。このスロットに差し込むためのExpBoardという同人ハードのボードと、屋根裏に設置するEC-Slimというボードを使うことで、DCCフレンドリーの鉄道模型に容易にNext18規格のデコーダを取り付けることができます。

床下から屋根裏の配線材に迷って、適当に余っていた太めのポリウレタン銅線を使ったところ、バネ性が強すぎて難儀していまいました。他の方はどうされているのか知りたいです。

ともかく、車両には無加工でデコーダの取り付けに成功しました。試しに動かしてみると…動いた!!

下記の動画では、三鶯重工(サンイン重工)のワンハンドルマスコンOHC-PC01AとPythonで繋ぎこんでいます。

成功編: DSair2とKATO(Digitrax) FL12とE531系

E531系の動力のDCC化には成功しました。

先頭車はアナログのままなので、ヘッドライトとテールライトが常時点いてしまっています。そこで先頭車用のデコーダを搭載します。ライトのデコーダは相性問題が少ないとのことで、試しに純正デコーダ FL12をまた試してみることにしました。

組み込みは簡単で、裏の小さい蓋を開けて、差し込むだけです。最初は接触不良かうまくいかなかったのですが、数回チャレンジしてみると、正常に動作しました。完璧です!

成功編: DSair2とDE29x2_56KとKATO DE10

E531系の成功に味をしめて、DE10に再チャレンジしてみたくなりました。

永末システムさんのデコーダは動作するとの情報をいただき、KATO DE10に対応したDE29x2_56Kを購入して導入してみました。

チップLEDもそこまで苦労することなく実装に成功し、実車に搭載すると…

一発で動きました! 多少音がするのが動力のせいなのかBEMFによるものなのかわかりませんが、そこまで気になるほどではありません。

ライトも正常に光り、成功です!

ワンハンドルマスコンでDCC車両を動かす

出身サークルの文化祭展示用にでも使えるかと、リアルなワンハンドルマスコンでDCC車両を動かせるようにしました。

動画は上のほうにはったやつです。ソースコード(リポジトリ)を以下に貼っておきます。Python3です。

https://github.com/mipsparc/ECController

 

結論

DSair2とワンハンドルマスコンと各種デコーダにより、シンプルでスマートにDCCによる運転体験システムの構築ができました。

DSair2が一旦生産終了してしまったようなのは残念ですが、シリーズの後継機種がそのうち出るということなので、期待しています。

サウンドや室内灯といった固有の機能もそうですが、走行の安定性も得られるDCCをみなさんも始めてみませんか?

 

カテゴリー: コンピュータ, 鉄道, 電気電子, 買った, Python | コメントをどうぞ

撮影地投稿サイト「だれでも撮影地マップ」をはじめました

スクリーンショット_2020-03-15_20-43-50.png

(デザインは随時更新中です)

お久しぶりです。

ここ数週間ほど、「だれでも撮影地マップ」(https://railbus.fan) という新規自作サービスを立ち上げていました。

一言でいうと「登録なしに、鉄道やバスなどの撮影地と、そこで撮った写真を共有できるサービス」です。

構成

  • PHP7.3
  • MySQL8.0 (RDB)
  • Google Compute Engine (仮想サーバホスティング)
  • Google Cloud Storage (画像ストレージ、配信)
  • Google Cloud Load Balancer (ロードバランサ)
  • Google Domains (ドメインレジストラ / DNS)
  • Google Stackdriver Logging (ロードバランサログ)
  • Google Cloud IAP (管理画面認証)
  • ImageMagick6 (画像変換)
  • Symfony5 (PHPフレームワーク)
  • Mapbox GL JS (ベクターマップ描画)
  • MapTiler (ベクタータイル配信)
  • OpenStreetMap (マップデータ)
  • Sentry (アプリケーションエラーログ)
  • Slack (新着投稿監視)
  • Mackerel (メトリック監視、外形監視)

Googleのサービスを多く使っていますが、アプリケーションコード的にはあまり依存していません。なんならAmazonに移行するのもそこまで難しくないと思います。

 

今日はOGPへの対応をしていました。TwitterとLINEとSlackで検証済みです。TwitterやFacebookでは widthとheightを指定しないと初回は表示してくれないという仕様で、対応がちょっと面倒でした。

だいぶ堅牢なつくりにした自信はありますが、脆弱性など見つけたら教えてください。

 

カテゴリー: コンピュータ, 鉄道 | コメントをどうぞ

MySQL8.0.16のCHECK属性をつかってみた

MySQL8.0.16から待望のCHECK属性が入ったため、実際に動作を確かめてみました。

CREATE TABLE user (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` varchar(20) CHARACTER SET ascii NOT NULL,
`name` varchar(20) NOT NULL,
`status` varchar(15) NOT NULL,
`create_time` DATETIME NOT NULL,
INDEX (`name`),
PRIMARY KEY (`id`),
UNIQUE (`user_id`),
CHECK(`user_id` REGEXP '^[\-0-9A-Z_a-z]{4,}$'),
CHECK(`name` != ''),
CHECK(`status` != '')
);

不正な文字列をINSERTしようとすると

ERROR 3819 (HY000): Check constraint 'user_chk_1' is violated.

と弾かれます。よさそう

CHARACTER SET asciiには罠があって、sql_modeをどんなに上げてもASCII範囲外(0x80など)がErrorではなくWarningで入れられてしまいます。やはりCHECK属性がいいですね。

どのくらい時間がかかるのか気になって、以下のテーブル定義で15文字のbodyを10000回挿入するテストを行ってみました。

CREATE TABLE post (
    `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
    `author_id` bigint UNSIGNED NOT NULL,
    `body` varchar(300) NOT NULL,
    `post_time` DATETIME NOT NULL,
    INDEX (`author_id`),
    PRIMARY KEY (`id`),
    CHECK(`body` != '')
);

CHECK属性あり: 106.94秒 なし: 106.49秒

なぜか時間がかかりすぎて困惑ですが、同条件では大して変わらないことが確認できました。

カテゴリー: コンピュータ | コメントをどうぞ

鉄道サイバネ・シンポジウム論文集の勝手目録をつくった

要約

鉄道サイバネ・シンポジウム論文集は、鉄道電気技術の論文誌ですが、目録が普通の方法では手に入らないという問題がありました。そこで、うまいこと集めたので、勝手に公開します。

https://mipsparc.github.io/railway_cybernetics/cyber.html

手法

JDreamIII(論文データベース)の検索結果を「テキスト形式でダウンロード」を1年分ごとに実施、CSVっぽい形式なのを読み込んで整形するやつをPythonで書いて、実行。

表題と著者情報には権利が発生しないため法的には問題がないと考えられますが、どうしてもやめてほしければご連絡ください。

この手法はあらゆる論文誌に採用できるので、もし要望があればぱっと作ります。

 

カテゴリー: コンピュータ, Python | コメントをどうぞ

MINI NVR(hi3515)を軽くハックした話

imag1487

一年ほど前に無料でネットワークビデオレコーダを手に入れてちょっとだけハックしてたのですが、最近また再開した話です。

ネットワークビデオレコーダというのは、ネットワークカメラを録画したりモニタするのに使われるSTBのようなものです。国内ではあまり知られていませんが、Aliexpressではメジャーな製品で、$20程度でたくさん見つけることが出来ます。

構成としてはこんな感じです

  • SoC: Hi3515 (ARM Cortex A9, H.264 encoding/decoding)
  • RAM: 142MB
  • SPI Flash: 32MB (MX25L25635E/735E/635F)
  • U-boot 2010.06
  • Linux 3.0
  • 有線LAN、USB2.0x2、RTC、HDMI、eSATA

まずはシリアル=UARTピンをはんだ付けします。UARTは3.3Vレベルと5Vレベルがありますが、常時どちらかが印加されていて、起動時に電圧が振れるピンがあれば、TX(送信)の可能性があります。UART-USBはAmazonで数百円で買えます。TX,RX,GNDの3ピンのランドがあれば正解なので、ピンをはんだ付けしてしまいましょう。

U-Boot 2010.06 (Dec 05 2013 - 16:53:16)

Check spi flash controller v350... Found
Spi(cs1) ID: 0xC2 0x20 0x19 0xC2 0x20 0x19
Spi(cs1): Block:64KB Chip:32MB Name:"MX25L25635E/735E/635F"
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
32768 KiB hi_sfc at 0:0 is now current device

mmu_enable

のように出てきたら当たりです。そのままLinuxのシェルに入りましょう。今回はたしかシリアルにはパスワードが設定されていなかったのでヌルゲーです。設定されていた場合は、別のrootfsを使用するなど一気にハードルが上がります。

次に調査をします。u-bootでprintenvをします。これで色々な情報が得られます

hisilicon # printenv
bootargs=mem=142M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=squashfs mtdparts=hi_sfc:320K(uboot),1536K(kernel),4M(rfs),25792K(app),768K(config),256K(logo)
bootcmd=sf probe 0;sf read 0x82000000 0x50000 0x180000;bootm 0x82000000
bootdelay=1
baudrate=115200
ethaddr=00:00:23:34:45:66
uboot_postfix=.bin.3520d
kernel_postfix=.img.3520d
rfs_postfix=.squashfs.3520d
cfg_postfix=.jffs2.3520d
logo_postfix=.jpeg.3520d
ipaddr=192.168.1.10
serverip=192.168.1.2
netmask=255.255.254.0
bootfile="uImage"
stdin=serial
stdout=serial
stderr=serial
verify=n
jpeg_addr=809ce458
jpeg_size=0x40000
vobuf=80838200
ver=U-Boot 2010.06 (Dec 05 2013 - 16:53:16)

Environment size: 649/65532 bytes
# cat /proc/mtd            
dev:    size   erasesize  name
mtd0: 00050000 00010000 "uboot"
mtd1: 00180000 00010000 "kernel"
mtd2: 00400000 00010000 "rfs"
mtd3: 01930000 00010000 "app"
mtd4: 000c0000 00010000 "config"
mtd5: 00040000 00010000 "logo"
#cat /etc/init.d/S03ants
#!/bin/sh
/usr/sbin/hotplug &

#insmod /ko_hi3521/extdrv/mtdram.ko total_size=15360  erase_size=64
#dd if=/dev/mtdblock3 of=/dev/mtdblock6
#mount -o loop -t cramfs /dev/mtdblock6 /root/
mount -t jffs2 /dev/mtdblock3 /root/
mount -t jffs2 /dev/mtdblock3 /update

cd /ko
./load3520D -i

cd /root/ko_app
insmod usb_wwan.ko
insmod option.ko
#insmod sd_mod.ko
insmod jbd.ko
insmod mbcache.ko
insmod ext3.ko
insmod gpioi2c.ko
insmod rt5370sta.ko
insmod slhc.ko
insmod ppp_generic.ko
insmod ppp_synctty.ko
insmod ppp_async.ko

mount -t jffs2 /dev/mtdblock4 /usr/etc
updateclear
mkdir /usr/etc/tmp
mkdir /usr/etc/var
mkdir /usr/etc/var/run
mkdir /usr/etc/var/lock
mkdir /usr/etc/ppp
mkdir /usr/etc/ppp/peers
rm /usr/etc/tmp/qtembedded-0/fonts/fontdb

ln -s /root/web /usr/etc/web


cp /usr/sbin/ppp-off                            /etc/ppp/peers/
cp /usr/sbin/wcdma-chat-disconnect              /etc/ppp/peers/

ifconfig eth0 192.168.1.188
hwclock -s
telnetd &
mount -t usbfs usbfs /proc/bus/usb/
export LD_LIBRARY_PATH="/usr/local/lib:/usr/lib:/root:/root/host_libs:/root/ipc_libs:/mnt"
export TERMINFO=/usr/local/share/terminfo
export QWS_KEYBOARD=tty:/dev/ttyS2
export QWS_KEYBOARD_TYPE=3520chpd
export QWS_MOUSE_PROTO=auto:/dev/mouse0

sysinit &
sleep 1
cd /root
/etc/startusb
./ants_dvr -qws &




# cat /etc/init.d/rcS
#! /bin/sh

/bin/mount -a

echo "
            _ _ _ _ _ _ _ _ _ _ _ _
            \  _  _   _  _ _ ___
            / /__/ \ |_/
           / __   /  -  _ ___
          / /  / /  / /
  _ _ _ _/ /  /  \_/  \_ ______
___________\___\__________________
"
for initscript in /etc/init.d/S[0-9][0-9]*
do
        if [ -x $initscript ] ;
        then
                echo "[RCS]: $initscript"
                $initscript
        fi
done


# cat /etc/init.d/S80network 
#!/bin/sh

ifconfig lo 127.0.0.1

echo "1048576" > /proc/sys/net/core/rmem_default
echo "4048576" > /proc/sys/net/core/rmem_max
echo "2048576" > /proc/sys/net/core/wmem_max
#echo 2000 > /proc/sys/vm/min_free_kbytes
# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
/dev/mtdblock3 on /root type jffs2 (rw,relatime)
/dev/mtdblock3 on /update type jffs2 (rw,relatime)
/dev/mtdblock4 on /usr/etc type jffs2 (rw,relatime)
usbfs on /proc/bus/usb type usbfs (rw,relatime)

こんな感じです。このあと、なぜかrootfsをふっ飛ばしてしまい、1年ほど放置してました。

久々に触ろうと思ったのは、会社に組み込みに強い方が入ってきたので雑談したところ、rootfsを簡単に作れるBuildrootというソフトウェアを教えてもらったのがきっかけでした。これはとても強力なツールで、menuconfigで設定するだけで開発環境の構築からrootfsの構築、イメージ化まですべてをやってくれます。

buildrootで作ったsquashfsのrootfsイメージをu-bootでSPI Flashに書き込みます。

fatload usb 0:1 0x80000000 rootfs.squashfs
sf erase 0x1d0000 0x1f0000
sf write 0x80000000 0x1d0000 0x1f0000
sf read 0x80000000 0x1d0000 0xf0
md 0x80000000

最後のreadとmdは確認用です。0x80000000からが自由に使える領域なので、そこにUSBメモリからファイルを読み込み、Flashの該当領域を消して(必須)、書き込みました。アラインメントが64KiBなので領域はぴったりにalignしないと怒られるので注意が必要です。電卓で計算しました。

これで無事boot成功…とはいかず、複数の穴にハマりました。ここまでもはまってますが、省略しています。

JFFS2はkernel versionが古い(Linux 3.0)せいかjffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270000: 0x1105 insteadというのが大量に出るので、元と同じsquashfsにしました。

getty: can’t open ‘/dev/null’: No such file or directory
というのが定期的に出る上、ttyにもアクセスできない状態でしたが、/devをstatic device tableにしたところ、正常に動作するようになりました。これはkernelのコンパイルオプションが原因のようですが、今回はカーネルは触らないつもりなのでどうしようもありません。

これでログインプロンプトに入れました。

Welcome to Buildroot
buildroot login: root
# 

まずはネットワーク設定をします。

ip a
ip link set dev eth0 up
ip a 192.168.1.123/24 dev eth0
ip route add 192.168.1.0/24 dev eth0

これでpingも通るようになりました。今度はX.orgを使えるようにします。

カテゴリー: コンピュータ | コメントをどうぞ

新刊「鉄道車両内ネットワークの基礎 ―列車内伝送系と列車制御管理システム―」

 

最近の鉄道車両は、「列車内伝送系」と呼ばれるネットワークが車内に構築されており、運転士の操作や機器からの情報はネットワークを介して全体に伝達されます。これまで注目されてこなかったこの分野について解説したのが本書です。

最新の列車内伝送系はEthernetベースであることもあり、産業用Ethernetとしての観点からもトポロジなど参考になるかと思います。国際規格「ECN/ETB」(IEC61375)についても解説しています。

また、TIMS、INTEROS、Synaptra、TEBusなどを網羅した、世界初の本です。また、誤解の多い「TRDP」についても、何なのかを正しく理解できます。

コミックマーケットC95 2日目 東ト47b 「Cpaw」にて頒布します。

訂正、追加情報などは本ページに記述します。

BOOTHにて通販もしております。ぜひ読んでみてください。

https://cpaw.booth.pm/items/1141447

目次

はじめに
列車でのネットワークの必要性
列車内伝送系とTCMSの歴史
主要なトポロジ
三菱電機 TIMS
JR東日本向けTIMSの種類
統一国際規格としての列車内伝送系
Ethernetの列車への適用
ECNの共通仕様
オープンソースプロトコルTRDP
ECNに準拠した鉄道車両
ECN準拠のTCMS INTEROS
無線通信による列車内伝送系
次世代の列車内伝送系を特許から探る
あとがき
参考文献

訂正

  • (P.3) 「MON3のCPUには8085を使用」→MON3のメインCPUはMC68020
    • Intel 8085は使用されてはいるので間違ってはいませんが、伝送制御用のようです。
  • (P.7) 「TIMSの物理層には基幹・支線ともにRS485を採用」→基幹の物理層はARCNETのツイストペア、支線はRS485
    • ARCNETの物理層は、ARCNETで規定されたものかRS485を採用可能です。ほぼ同じものだと思っていましたが、仕様書をみたところ全く異なるものでした。
  • (P.9) 「E233系向け(IMS6型)」→ 「E233系0-5000番代向け(IMS8型)」
    • TIM6箱とか書いてあるのがそのままIMS6とかなのかと思っていたら、どうも違うようです。あちゃー…
  • (P.10) 「E353系向け(IMS10型)」→「E353系向け」
    • 同上
  • (P.10)「E259系向け(IMS8型)」→「E259系向け(IMS11型)」
    • 同上

2019年1月3日時点でわかっているのは以上です。

第二版 訂正

  • (P.12)「S-AIMSと称する東芝が開発したEthernet伝送系(T-Ethernet)」→「S-AIMSと称するEthernet伝送系」
    • 良かれと思ってしっかりと調べないで書き足してしまったのですが、入稿後にS-AIMSについての論文の筆者を調べたら三菱電機の人でした。これは完全に裏とり不足で、反省しています。ACトレインのAIMSは東芝製、S-AIMSは三菱電機製のようです。INTEROS-CとINTEROS-Aみたいな関係なんですね。。。この辺は情報がなくて不明です

追加でわかった情報は夏にでも第3版として出します。

カテゴリー: 通信, 鉄道 | コメントをどうぞ