S232/S272与IS400/IS800及IS400S/IS800S串口分配器都是支持一个主串口及三/七个从串口的应用.
传统上一个RS232界面控制台只能与一个RS232设备连接.如果我们需要让RS232控制台可以同时与两个以上的RS232设备连接就要符合两个基本条件.
首先在硬件上,RS232是点对点连接方式.因此我们无法将多台RS232设备并接在一起.我们必须采用RS232串口分配器/共享器来独立连接到控制台与各个设备在不同的连接头上.
其次软件上,要拥有一种对话格式,以保证不同的RS232设备不会在同一时间同时传送数据.所以我们控制台的数据会同时传送给各个RS232设备,而只有被指定可以传送数据的RS232设备,才可以传送资料,以保证没有冲突发生.在符合上述条件的情况下,我们采用S232串口分配器/共享器就可以满足工作需求.但我们发现有下列可能限制及问题存在.
首先是如果有某个RS232设备并不遵守对话机制而传送数据,则S232在面对两个以上的RS232设备传送数据情况下,将无法把任何RS232设备的数据传送到控制台.于是整个控制系统将无法正常工作.
其次是应用环境的考虑.正常情况下,我们的RS232设备会等待控制台的指示,来读取及传送数据.于是所有RS232设备都在等待状态,随时准备接收控制台的命令来传送数据.如果有一种应用环境是平常RS232设备的资料(例如压力计的目前压力值)随时等待控制台来读取.但有一种紧急情况(例如压力计侦测到压力值超出警戒值)必须主动通知控制台,而不能等控制台依据排定流程来读取.则S232串口分配器/共享器将无法满足此种应用环境.这个时候IS400或IS400S智能型串口分配器/共享器才能满足.
在正常情况下IS400的工作与S232一样,控制台发出的命令同时传送给全部RS232设备.被指定的RS232设备就回传数据给控制台.但是当有两个以上的RS232设备在同时传送数据时,IS400会接收数据(如果有RS232设备已经在进行传送数据过程,而你是新加入传送数据者),且进行储存.等到目前的RS232设备(原本正在进行传送数据者)数据传送完毕(我们发现在20ms期间内都没数据再被传送的情况),我们会把储存的数据再传送给控制台.于是控制台可以正确的处理两个RS232设备的数据.当然控制台与各RS232设备间必须有适当的对话格式才可以达成工作.
由以上原则我们就可以知道何时使用经济型S232/S272串口分配器/共享器,何时须要使用智能型IS400/IS800串口分配器/共享器.除了RS232设备应用环境外,RS485应用环境也可以有类似应用考虑.不一定要由控制台来读数据,设备有紧急状况也可以主动报告.这就要智能型串口分配器/共享器才能满足.
上述应用环境主要在一台主机与多台设备间的问答控制方式.我们知道所有的主机命令都会送给所有设备,而所有设备传送数据都是要传给主机.于是同一时间不同设备所传送的数据都会被直接传给主机或缓存再传给主机.这是IS400/IS800的工作方式,把主机接到主口(master port)而各设备接到从口(slave port).
现在我们会碰到多台主机要与一台设备连接的应用环境需求.此时我们如果使用IS400把设备接到主口(master port)而各主机接到从口(slave port)来工作.于是各主机发出命令都会到设备,但是设备回传的数据也会被传给全部主机.虽然我们可以确保多台主机同时发出命令时,只有一台主机的命令被先发到设备,其他主机的命令会被缓存排队发给设备.但因为设备回传的数据会被回传给全部主机而造成困扰及解读错误.例如主机1及主机2同时发出不同命令到设备.当主机1的命令先被发到设备时,设备回传数据会同时回给全部主机.对主机1而言它收到正确回传数据没问题,对主机3而言它没发命令而收到数据,可能是单纯的丢弃之也没问题.但也可能对资料进行处理而产生问题(这就与主机的软件处理方式有关).对主机2而言会以为收到的数据是自己发出命令的设备答话,但其实是主机1的命令答话,于是产生各种可能错误后果.
很显然IS400无法满足上述多主机与一台设备连接的应用环境.现在我们就要用IS400S来满足.首先我们会把设备的答话只传送给发出命令的主机.如果有多台主机发出命令,则其中一台主机先把命令发到设备,等其答话后回传给该问话主机.此时我们再发缓存中另一主机的命令给设备.如果我们发给设备的命令在约300ms没有得到答话,则我们也换另一台主机来工作.如此情况下,每一台主机都可以下命令给设备,同时设备的答话也只会回传给该主机.于是每一台主机如同该设备只有我在用,而不会有数据混淆的问题.
基本上在串口通信过程中的数据我们无法解析(每个软件有其意义及定义),所以我们对于命令的下达及完整性是以数据超过20ms不再传送来当作命令完全下达的原则,来进行工作主机的切换.所以我们假设主机或设备会连续传送资料直到全部送完,而不可以有超过20ms的中断.否则会被当作命令送完而产生错误封包解读,因为一个命令被拆成两个错误命令来处理.
总结IS400与IS400S串口共享器的差异在主口(master port)收到数据时,IS400会同时广播给全部子口(slaveport).而IS400S则只有传输给刚才工作中的子口(slaveport),也就是目前收到资料再转发给主口的子口.所以IS400S是一种握手式串口共享器应用.