welcom ! Handel home

2015年1月23日 星期五

Step Motor type

Step Motor   
永久磁鐵 PM (permanentmagnet Type) alnico (45", 90") , ferrite  陶鐵(7.5" , 15")
可變磁阻 VR ( Variable reluctance type) 15"
複合式 (Hybrid Type) 1.8"  .. 3.6"













I2C 1602 LCM Drive DEMO Code by C ( 20X4 )

I2C LCM  Drive DEMO Code  by C

===========================================
[i2c_drv.h]

#define Byte unsigned char
#define Word unsigned long

struct st{
Byte yy;
Byte xx;
char *mess;
};

extern Byte ASCIICODE[16];
extern unsigned char LCDBUFF[80];
extern struct st mess_array[];

extern void i2clcm_WriteCommand(unsigned char nData);
extern void i2clcm_WriteData(unsigned char nData);

extern void i2clcm_init(void);
extern void i2clcm_setxy(Byte posy,Byte posx);
extern void i2clcm_show_char(Byte posy,Byte posx,Byte chardata);
extern void i2clcm_Show_String(Byte posy,Byte posx,char *strdata);


extern void i2clcm_Show_byte(Byte posy,Byte posx,Byte chardata);
extern void i2clcm_Show_word(Byte posy,Byte posx,Word worddata);

// show value for 5 number Dec and point for set (0 to 4)
//Rang 65535 .. 0 or 6.5535 .. 0.0001
// ext: show 12345 => i2clcm_Show_number(1,1,12345,0)
// ext: show 1.2345 => i2clcm_Show_number(1,1,12345,1)
// ext: show 12.345 => i2clcm_Show_number(1,1,12345,2)
extern void i2clcm_Show_number(Byte posy,Byte posx,Word value,Byte pt);

extern void i2clcm_buffer_fill(Byte fillcode);
extern void i2clcm_Show_buffer(Byte count);


============================================

============================================
[i2c_drv.c]

//================================================
//*** i2clcm Drive V 1.0 ****
//20150121    Handel    edit v1.0
//================================================

extern int PCF8547_WriteData( unsigned char Data  );
extern int PCF8547_ReadData( unsigned char *pData );

#define Byte unsigned char
#define Word unsigned long

//***  I2C LCM Parameter
#define lcmrow 20
#define lcmcol 4
#define line1 0x80
#define line2 0xc0
#define line3 0x94
#define line4 0xd4

Byte ASCIICODE[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
Byte LCDBUFF[80];

struct st{
Byte yy;
Byte xx;
char *mess;
};

struct st mess_array[] = {
{ 1, 10,"mess1 "}, //0
{ 2, 10,"mess2 "}, //1
{ 3, 10,"mess3 "}, //2
{ 4, 10,"mess4 "}, //3
{ 1, 10,"ok "} , //4
{ 1,  1,"Handel  V1.0"},//5
{ 1,  1,"Hello !"}, //6
{ 1,  1,"OK    !"}, //7
{ 1,  1,"ERR   !"}, //8
{ 1,  1,"Test ..."} //9
};



void i2clcm_WriteCommand(unsigned char nData){
unsigned char  WR_Comm;

//__delay_cycles(500); // 10us * 10 = 100us

// d7,d6,d5,d4, x,en,rw,rs
// d7,d6,d5,d4, 1, 1, 0, 0
WR_Comm = (0x0c |(nData & 0xf0));
PCF8547_WriteData( WR_Comm );
// d7,d6,d5,d4, 1, 0, 0, 0
WR_Comm = (0x08 |(nData & 0xf0));
PCF8547_WriteData( WR_Comm );
// __delay_cycles(500); // 10us * 10 = 100us

// d3,d2,d1,d0, 1, 1, 0, 0
WR_Comm =0x0c |((nData & 0x0f)<<4 p=""> PCF8547_WriteData( WR_Comm );
// d3,d2,d1,d0, 1, 0, 0, 0
WR_Comm =0x08 |((nData & 0x0f)<<4 p=""> PCF8547_WriteData( WR_Comm );

//__delay_cycles(10000);//600us

}
void i2clcm_WriteData(unsigned char nData){
unsigned char  WR_Data;

// d7,d6,d5,d4, x,en,rw,rs
// d7,d6,d5,d4, 1, 1, 0, 1
WR_Data =0x0d |(nData & 0xf0);
PCF8547_WriteData( WR_Data );
// __delay_cycles(500); // 10us * 10 = 100us
// d7,d6,d5,d4, 1, 0, 0, 1
WR_Data =0x09 |(nData & 0xf0);
PCF8547_WriteData( WR_Data );
// __delay_cycles(500); // 10us * 10 = 100us

// d3,d2,d1,d0, 1, 1, 0, 1
WR_Data =0x0d |((nData & 0x0f)<<4 p=""> PCF8547_WriteData( WR_Data );
// __delay_cycles(500); // 10us * 10 = 100us
// d3,d2,d1,d0, 1, 0, 0, 1
WR_Data =0x09 |((nData & 0x0f)<<4 p=""> PCF8547_WriteData( WR_Data );

//__delay_cycles(500);//600us
}

void i2clcm_init(void){
i2clcm_WriteCommand( 0x33 );
i2clcm_WriteCommand( 0x32 );
//    WriteCommand( 0x38 );
//    WriteCommand( 0x28 );

i2clcm_WriteCommand( 0x28 );
//    __delay_cycles(1000000);  //delay ~60ns
i2clcm_WriteCommand( 0x08 );
    //__delay_cycles(5000);  //delay ~5ms
i2clcm_WriteCommand( 0x01 );
    //__delay_cycles(5000);  //delay ~5ms
i2clcm_WriteCommand( 0x06 );
    //__delay_cycles(5000);  //delay ~5ms
i2clcm_WriteCommand( 0x0C );
    //__delay_cycles(5000);  //delay ~5ms
    //WriteCommand( 0x0f );
}


void i2clcm_setxy(Byte posy,Byte posx){
Byte lcm_memadd;

if(posx > lcmrow )posx=lcmrow;
if(posy > lcmcol )posy=lcmcol;
if(posy==1)lcm_memadd = line1+posx-1;
if(posy==2)lcm_memadd = line2+posx-1;
if(posy==3)lcm_memadd = line3+posx-1;
if(posy==4)lcm_memadd = line4+posx-1;

i2clcm_WriteCommand( lcm_memadd );
}

void i2clcm_show_char(Byte posy,Byte posx,Byte chardata){
i2clcm_setxy(posy,posx);
i2clcm_WriteData(chardata);
}

void i2clcm_Show_String(Byte posy,Byte posx,char *strdata){
char *pp;

i2clcm_setxy(posy,posx);
    pp=strdata;
while(*pp !='\0'){
i2clcm_WriteData(*pp);
pp++;
}
}

void i2clcm_Show_byte(Byte posy,Byte posx,Byte chardata){

i2clcm_setxy(posy,posx);
i2clcm_WriteData(ASCIICODE[(chardata&0xf0)>>4]);
//i2clcm_setxy(posy,posx+1);
i2clcm_WriteData(ASCIICODE[(chardata&0x0f)]);
}


void i2clcm_Show_word(Byte posy,Byte posx,Word worddata){
i2clcm_Show_byte(posy,posx,(Byte )((worddata&0xff00)>>8));
i2clcm_Show_byte(posy,posx+2,(Byte )(worddata&0x00ff));
}

// show value for 5 number Dec and point for set (0 to 4)
//Rang 65535 .. 0 or 6.5535 .. 0.0001
// ext: show 12345 => i2clcm_Show_number(1,1,12345,0)
// ext: show 1.2345 => i2clcm_Show_number(1,1,12345,1)
// ext: show 12.345 => i2clcm_Show_number(1,1,12345,2)
void i2clcm_Show_number(Byte posy,Byte posx,Word value,Byte pt){

Byte n[5]={0,0,0,0,0};
    Byte i;

n[4]=  value %10;
n[3]= (value/10)%10;
n[2]= (value/100)%10;
n[1]= (value/1000)%10;
n[0]= (value/10000)%10;


i2clcm_setxy(posy,posx);
for(i = 0; i<=4 ; i++ ){
//i2clcm_setxy(posy,posx+i);
i2clcm_WriteData(ASCIICODE[n[i]]);
if(i==(pt-1)){
posx++;
i2clcm_setxy(posy,posx+i);
i2clcm_WriteData('.');
}
}

}

void i2clcm_buffer_fill(Byte fillcode){
Byte i;
for(i=0;i<80 fillcode="" i="" p="">}

//buffer show 8 bank , bank0..7
void i2clcm_Show_buffer(Byte count){
Byte i,loopadd;

loopadd= (count%8)*10;

i2clcm_setxy(count/20,count%20);

for(i=0;i<10 i="" p=""> i2clcm_WriteData(LCDBUFF[loopadd+i]);
}

}


===========================================

2015年1月4日 星期日

步進馬達 趨動

步進馬達的種類依照結構來分可以分成三種:
>>永久磁鐵PM式(permanentmagnet type):alnico (45", 90") , ferrite  陶鐵(7.5" , 15")
>>可變磁阻VR 式(variable reluctance type): 15"
>>複合式(hybrid type): 1.8".. 3.6"

步進馬達的特點
1.旋轉的角度和輸入的脈波數成正比,因此用開迴路控制即可達成高精
確角度。
2.啟動、停止、正反轉的應答性良好,控制容易。
3.每一步級的角度誤差小,而且沒有累積誤差。
4.靜止時,步進馬達有很高的保持轉矩(Holding Torque),可保持在停
止的位置,不需使用煞車迴路就不會自由轉動。
5.可靠性高,整個系統的價格低。


步進馬達依定子線圈的相數不同 可分成二相、三相、四相及五相
式,小型步進馬達以四相式較為普遍。圖3-1即為四相步進馬達的內部
接線圖。當送入一個脈衝電流至步進馬達,可在相對應處停止轉動,這
種走一步即停住而得到的角度稱為基本步進角。
步進角會因激磁方式不同而有所不同。
基本步進角的計算公式如下:
基本步進角=360°/(相數×轉子齒數)
例如:四相50尺的基本步進角為360°/(4×50)=1.8°
也就是說,四相50齒的步進馬達走200步正好是一圈。一般的小型步進
馬達齒數為50齒較多。












2014年12月30日 星期二

何謂 Modbus/nModbus ?







 
 何謂 Modbus 通訊協定?

Modbus 是由 MODICON 公司在 1979發展出來的一套通訊協定。它具有標準化、採開放式架構的特性,而且廣泛地被工業自動化產所使用的通訊協定。透過 Modbus,SCADA 和 HMI 軟體可以很容易地將許多串列設備整合在一起。
 
 back 
 何謂 Modbus/TCP 通訊協定?

Modbus/TCP 是 Modbus 的一種變形。它在 1999 年被發展出來,讓 SCADA/HMI 也可以透過 Modbus/TCP 存取網路上的設備。
 
 back 
 哪些軟體支援 Modbus 和 Modbus/TCP ?

大部分的 SCADA ( Supervisor Control And Data Acquisition ) 軟體和 HMI 都支援 Modbus 通訊協定,例如:Citect, ICONICS, iFIX, InduSoft, Intouch, Entivity Studio, Entivity Live, Entivity VLC, Trace Mode, Wizcon, Wonderware…等等。
 
 back 
 何謂 nModbus ?

nModbus 使用 C# 3.0 實做 Modbus 通訊協定。它是由一群志願者開發、維護的的軟件,並且可以免費提供給大眾使用。
ICP DAS 基於下面的官方發佈的版本,進行功能確認、改善。NModbus_net-2.0_1.11.0.0-source.zip.
程式開發員 (Programmers) 可以使用ICP DAS 所發佈的 DLL 版本,進行Windows 版 PC 或是 WinCE 版設備的 Modbus 程式開發。這個 DLL 具備下面功能
  1. Modbus/RTU Master/Slave
  2. Modbus/ASCII Master/Slave
  3. Modbus/TCP Master/Slave
  4. Modbus/UDP Master/Slave
下載 DLL 和範例程式
 
 back 
 
使用 Modbus 和 Modbus/TCP 有什麼好處?
  1. 完全開放,不需授權費
  2. 廣泛地被 SCADA 和 HMI 軟體支援
  3. 容易使用
  4. 不同的設備容易整合在一起
  5. 發展系統的時程縮短,成本降低
  6. 豐富的資源
 
 back 
 Modbus 資源http://www.modicon.com
Modbus 原創公司 MODICON 的網站
http://www.modbus.org
Modbus 社群網站

http://www.modbustools.com
Modbus (RTU/ASCII) 或是 Modbus/TCP 的 ActiveX 元件及測試工具

http://ftp.icpdas.com/pub/cd/8000cd/napdos/modbus/modbus_master_tool/
http://ftp.icpdas.com/pub/cd/winpac/napdos/wp-8x4x_ce50/system_disk/tools/modbus_master_tool/
由ICP DAS 提供的Modbus連線測試工具:Modbus Master Tool
 










簡介 [RS232 RS422 RS485]

一、串口簡介
  RS-232、RS-422與RS-485都是串行數據接口標準,最初都是由電子工業協會(EIA)製訂並發布的,RS-232在1962年發布,命名為EIA-232-E,作為工業標準,以保證不同廠家產品之間的兼容。RS-422由RS-232發展而來,它是為彌補RS-232之不足而提出的。為改進RS-232通信距離短、速率低的缺點,RS-422定義了一種平衡通信接口,將傳輸速率提高到10Mb/s,傳輸距離延長到4000英尺(速率低於100kb/s時),並允許在一條平衡總線上連接最多10個接收器。RS-422是一種單機發送、多機接收的單向、平衡傳輸規範,被命名為TIA/EIA-422-A標準。為擴展應用範圍,EIA又於1983年在RS-422基礎上製定了RS-485標準,增加了多點、雙向通信能力,即允許多個發送器連接到同一條總線上,同時增加了發送器的驅動能力和衝突保護特性,擴展了總線共模範圍,後命名為TIA/EIA-485-A標準。由於EIA提出的建議標準都是以"RS"作為前綴,所以在通訊工業領域,仍然習慣將上述標準以RS作前綴稱謂。
  RS-232、RS-422與RS-485標準隻對接口的電氣特性做出規定,而不涉及接插件、電纜或協議,在此基礎上用戶可以建立自己的高層通信協議。因此在視頻界的應用,許多廠家都建立了一套高層通信協議,或公開或廠家獨家使用。如錄像機廠家中的Sony與鬆下對錄像機的RS-422控製協議是有差異的,視頻服務器上的控製協議則更多了,如Louth、Odetis協議是公開的,而ProLINK則是基於Profile上的。

二、RS-232串行接口標準
  目前RS-232是PC機與通信工業中應用最廣泛的一種串行接口。RS-232被定義為一種在低速率串行通訊中增加通訊距離的單端標準。RS-232采取不平衡傳輸方式,即所謂單端通訊。
  收、發端的數據信號是相對於信號地,如從DTE設備發出的數據在使用DB25連接器時是2腳相對7腳(信號地)的電平。典型的RS-232信號在正負電平之間擺動,在發送數據時,發送端驅動器輸出正電平在+5~+15V,負電平在-5~-15V電平。當無數據傳輸時,線上為TTL,從開始傳送數據到結束,線上電平從TTL電平到RS-232電平再返回TTL電平。接收器典型的工作電平在+3~+12V與-3~-12V。由於發送電平與接收電平的差僅為2V至3V左右,所以其共模抑製能力差,再加上雙絞線上的分布電容,其傳送距離最大為約15米,最高速率為20kb/s。RS-232是為點對點(即隻用一對收、發設備)通訊而設計的,其驅動器負載為3~7kΩ。所以RS-232適合本地設備之間的通信。其有關電氣參數參見下表。
  
====================
[表1]


 
RS232  RS422  R485
工作方式  單端 差分 差分
節點數 1收、1發 1發10收 1發32收
最大傳輸電纜長度 50英尺 400英尺   400英尺
最大傳輸速率 20Kb/S 10Mb/s 10Mb/s
最大驅動輸出電壓  +/-25V -0.25V~+6V -7V~+12V
驅動器輸出信號電平
(負載最小值) 負載
+/-5V~+/-15V +/-2.0V +/-1.5V
驅動器輸出信號電平
(空載最大值) 空載    
+/-25V +/-6V  +/-6V
驅動器負載阻抗(Ω) 3K~7K    100  54
擺率(最大值) 30V/μs  N/A  N/A
接收器輸入電壓範圍  +/-15V -10V~+10V -7V~+12V
接收器輸入門限     +/-3V +/-200mV +/-200mV
接收器輸入電阻(Ω) 3K~7K  4K(最小)  ≥12K
驅動器共模電壓      N/A -3V~+3V -1V~+3V
接收器共模電壓    N/A -7V~+7V -7V~+12V



三、RS-422與RS-485串行接口標準
  1.平衡傳輸
  RS-422、RS-485與RS-232不一樣,數據信號采用差分傳輸方式,也稱作平衡傳輸,它使用一對雙絞線,將其中一線定義為A,另一線定義為B。
  通常情況下,發送驅動器A、B之間的正電平在+2~+6V,是一個邏輯狀態,負電平在-2~6V,是另一個邏輯狀態。另有一個信號地C,在RS-485中還有一"使能"端,而在RS-422中這是可用可不用的。"使能"端是用於控製發送驅動器與傳輸線的切斷與連接。當"使能"端起作用時,發送驅動器處於高阻狀態,稱作"第三態",即它是有別於邏輯"1"與"0"的第三態。
接收器也作與發送端相對的規定,收、發端通過平衡雙絞線將AA與BB對應相連,當在收端AB之間有大於+200mV的電平時,輸出正邏輯電平,小於-200mV時,輸出負邏輯電平。接收器接收平衡線上的電平範圍通常在200mV至6V之間。
  2.RS-422電氣規定
  RS-422標準全稱是"平衡電壓數字接口電路的電氣特性",它定義了接口電路的特性。實際上還有一根信號地線,共5根線。由於接收器采用高輸入阻抗和發送驅動器比RS232更強的驅動能力,故允許在相同傳輸線上連接多個接收節點,最多可接10個節點。即一個主設備(Master),其餘為從設備(Salve),從設備之間不能通信,所以RS-422支持點對多的雙向通信。接收器輸入阻抗為4k,故發端最大負載能力是10×4k+100Ω(終接電阻)。RS-422四線接口由於采用單獨的發送和接收通道,因此不必控製數據方向,各裝置之間任何必須的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨的雙絞線)實現。
  RS-422的最大傳輸距離為4000英尺(約1219米),最大傳輸速率為10Mb/s。其平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,才可能達到最大傳輸距離。隻有在很短的距離下才能獲得最高速率傳輸。一般100米長的雙絞線上所能獲得的最大傳輸速率僅為1Mb/s。
  RS-422需要一終接電阻,要求其阻值約等於傳輸電纜的特性阻抗。在矩距離傳輸時可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸電纜的最遠端。
  RS-422有關電氣參數見表1
  3.RS-485電氣規定
  由於RS-485是從RS-422基礎上發展而來的,所以RS-485許多電氣規定與RS-422相仿。如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二線與四線方式,二線製可實現真正的多點雙向通信。
  而采用四線連接時,與RS-422一樣隻能實現點對多的通信,即隻能有一個主(Master)設備,其餘為從設備,但它比RS-422有改進, 無論四線還是二線連接方式總線上可多接到32個設備。
  RS-485與RS-422的不同還在於其共模輸出電壓是不同的,RS-485是-7V至+12V之間,而RS-422在-7V至+7V之間,RS-485接收器最小輸入阻抗為12k,RS-422是4k;RS-485滿足所有RS-422的規範,所以RS-485的驅動器可以用在RS-422網絡中應用。
  RS-485有關電氣規定參見表1。
  RS-485與RS-422一樣,其最大傳輸距離約為1219米,最大傳輸速率為10Mb/s。平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,才可能使用規定最長的電纜長度。隻有在很短的距離下才能獲得最高速率傳輸。一般100米長雙絞線最大傳輸速率僅為1Mb/s。
  RS-485需要2個終接電阻,其阻值要求等於傳輸電纜的特性阻抗。在矩距離傳輸時可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸總線的兩端。

[Note] by Yahoo
======================================
所謂’RS232/422/485’係國際標準之非同步串列式通訊硬體規範(EIA)之編號名稱; 其資料內容信號基本上係以串列方式一個Bit接一個Bit的依序傳遞; 且其資料位元之0/1係以兩芯信號線間之相對電壓位準差值大小來表現. 最常見之RS232即為電腦之串列埠, 且多為9 Pin模式(舊型也有25 Pin的), 其主要之資料傳遞使用三芯信號線傳遞, 包括: Tx, Rx, 及Gnd, 另有一些控制接腳如: RTS, CTS, DTR等; 另25 Pin模式則是多了一些極罕用之控制接腳, 與預留之空接腳. RS232僅能以一對一之方式, 在兩設備間傳遞資料, 但可達到全雙工之通訊功能, 且因其將兩設備之Gnd連接在一起, 故電纜長度一般規範不宜大於十五公尺為佳. (事實上, 一般實務而言, 當採用的通訊速率愈高時, 有效的通訊距離便愈短)

¨ 目前通訊常見的硬體規格有: RS232、RS422、RS485等; 其中,  RS232、RS422、RS485間原則上皆可利用信號轉換器直接將其電氣規格相互轉換, 以連接不同規格之信號作通訊. (另外, 近來也已有廠商研發出RS232/422/485與EtherNet信號轉換之器材, 但那應是採用”封包”等之類的其他軟體手段而完成.)

¨ RS232之送/收信號, 可視為以Gnd對Tx及Gnd對Rx腳位之信號位準差值表示; 當然, 兩相連之設備除將Gnd腳位相連外, Tx與Rx接腳須與對方反接.

¨ RS422可謂為RS232之擴充, 其將送/收之信號完全分離為兩對傳輸線, 即: Tx+/Tx-及Rx+/Rx-四芯; 
因不同於RS232將兩端設備之Gnd直接接在一起, 故其傳輸線之長度一般可達到九百公尺以上(使用AWG18以上電纜), 且在一組傳輸線上, 可同時併掛多個通訊設備. 由於送/收信號仍是獨立分離, 故亦可形成一對一全雙工之通訊功能.

¨ RS422網路線上雖可併掛多個通訊設備, 但因送/收信號獨立分開, 故一般會被設計成’主-僕’(Master-Slave)式之通訊架構, 即: 由一主控設備直接對多個終端設備通訊, 各終端設備間並不能直接相互傳遞資料(因各終端設備之Tx皆接在一起而接入主控設備之Rx, 各終端設備之Rx亦皆接在一起而與主控設備之Tx相接).

¨ RS485相當接近於RS422, 但其將送/收之信號線結合, 共同使用同一對傳輸線, 即L+/L-兩芯; 而傳輸線之總長度則更可達到1.5公里之譜. 一般而言, 將RS422之Tx+與Rx+併接、Tx-與Rx-併接, 亦可得到RS485之硬體效果. 由於RS485送/收信號共用同一對傳輸線, 所以它只能有半雙工的能力.

¨ 因RS485之送/收信號在一起, 故在網路線上之所有通訊設備均具有相同之地位(即: “對等通訊”,”Peer-to-Peer”), 即任一設備送出之資料所有相連之設備均能接獲.

¨ RS485規格規範中有提及: 網路線上最多可併接64(32+32)個節點(通訊設備), 且傳輸線之連接應以一進一出之架構串聯所有設備, 並可於距離過遠時, 串上一個訊號增強器; 而實務上, 網路上之節點應可達256個(當然和傳輸線總長度等條件有關聯), 又由於常是以樹狀結構來連接所有設備, 因此雖然規範中還提及: 若信號不佳時, 可併聯’終端電阻’來改善, 但實務上很難找到併聯之適當位置與電阻值.

[Note2]================
Modbus是一種通訊協定(軟體)。

RS422、RS485是一種硬體的架構。

=====================================

RS422配線:會有RX+/-,TX+/-  共有4條線。

RX  接收外部設備回傳線路
TX  發送給外部設備線路











RS485配線:會有D+/D-  共有2條線。

傳送/接收,都是D+/D-在控制。








=====================================================

只看上面的圖示,可能會覺得RS422跟RS485好像是不一樣的,
但很多的控制都說可以同時兼容兩種,甚至都是用同樣的接腳!?

再看看下面的圖,就會懂了。










如果PLC(MASTER)端是RS422,外部裝置是RS485,就可以用上面的接法。
RS422是全雙工,四條線,可以同時傳送/接收,不會有問題。(不同線路)
RS485是半雙工,二條線,如果有其中一個裝置在發送資料,其他裝置就不可以發送。

RS-232, RS-422,和 RS-485序列通訊界面的快速比較@ NI

RS-232, RS-422,和 RS-485序列通訊界面的快速比較

問題: 

RS-232, RS-422, 和RS-485這些序列埠介面有什麼基本的不同?

解答:

RS-232是最普遍的serial介面,對大多數和Windows相容的桌上型電腦而言,是一個標準介面。RS-232在硬體連接上只能有一個發射器和一個接收器,以全雙工方式進行資料的傳輸。部分由NI所販賣的RS-232卡可支援高達1 Mbit / s的baud rate,但其他卡片的baud rate都被限制在115.2kbits / s。這邊需要特別注意的是大多數的IBM電腦上並沒有RS-422/RS-485的介面。

RS-422(EIA RS-422-A Standard)則是在蘋果麥金塔電腦上使用的serial介面。它提供了高達10 Mbits / s的數據傳輸量。 RS-422使用了2條線來進行傳輸以增加baud rate的最大值和cable的長度。RS-422被指定使用在只有一個發射器在發送訊號,而接收器多達10個的多點連接應用的情況。

RS-485是RS-422的改良版,擴展了RS-422的功能。 RS-485提高了RS-422在多點連接時的限制,它可以允許多達32個設備透過相同的傳輸線進行溝通。

任何一個RS-485的從設備(slave device)可以在不需要通過主設備(master device)的情況下與任何其他32個從設備溝通。且由於RS-422是一個RS-485的子集合,所以RS-485可以用來控制RS-422的設備。
這兩個通訊協定都可以多點連接,但RS-485最多可以連接32台設備,而RS-422最多可連接10台。對於這兩種通信協定,使用者應該提供自己的終止訊號。所有NI的RS-485板都可以支援RS-422的介面。
下面的圖表比較操作模式下,驅動器和接收器的數目、最大的cable長度以及最大的數據傳輸速率。


Specifications
RS-232
RS-422
RS-485
工作模式
單端點
差動
差動
驅動器與接收器總數(One
driver active at a time for
RS-485 networks)
1 Driver
1 Receiver
1 Driver
10 Receiver
32 Drivers
32 Receivers
最大Cable長度
50 ft (2500 pF)
4000 ft
4000 ft
最大傳輸速度 (40 ft -
4000 ft for RS-422/RS-485)
160 kbits/s (can
be up to 1MBit/s
10 MBit/s
10 MBit/s


2014年11月6日 星期四

音樂檔案的格式

音樂檔案的格式

數位音訊檔的格式分兩大類:
1失真性資料壓縮(Lossy Compression)
2無失真壓縮法(Lossless Compression)

數位化所帶來的結果就是產生了許多因編碼(Encode)方式不同,所造成的多樣化格式。常見的音樂格式有WAV、CDA、MP3、WMA、RA/RM/RMX、MIDI、AAC、OGG、FLAC、APE。
CDA(CD-Audio)是一般音樂CD所使用的格式。通常會先以WAV格式來儲存音訊,在逐軌(Track)壓製或燒錄在CD上。如果CD上的音軌並沒有受到破壞,大多能以軟體的方式將其還原成WAV格式。
FLAC(Free Lossless Audio Codec)和APE是近年非常受歡迎的格式,因為它們不像其它編碼會以破壞性資料壓縮(Lossy Compression)(常稱其為「有損壓縮」)的方式來儲存音樂訊號,去除人耳較難分辨的頻率,而導致訊號無法完整還原成原始的樣子,使得播放出來的音樂會失真(Distortion)。而 FLAC 和 APE 就不同了,它們採用無失真壓縮法(Lossless Compression)(常稱其為「無損壓縮」),不會破壞原有的音樂訊號,能將訊號資料壓縮為原本的一半,經過解碼(Decode)可還原出原始的訊號播放出來。

Y世代工程師沒聽過的…

Y世代工程師沒聽過的…

科技日新月異眾所皆知。曾經在一、二十年前風靡一時的先進產品、服務或規格,如今可能早已退流行或看起來古怪地令人感到逗趣可笑。
舉例來說,首款成功商用上市的「可攜式電腦」──當時甚至還沒有筆記型電腦(laptop)一詞呢!──是1981年推出的Osborne 1,它大約有24.5磅重(約11.12公斤),當時售價1,795美元,以今日幣值換算約為4,700美元!蘋果電腦Newton則是首款掌上型電腦(或稱PDA),搭載的336x240畫素反射式LCD以及手寫辨識功能在當時已令人讚歎不已。這款產品要價700美元,在1993年時開始出貨。
由於產業步調變化迅速,很容易就能看到一些常見的科技用語一下子就被遺忘,或幾乎在同一個世代內迅速地被淘汰,儘管這些科技用語或詞彙曾經是具有電腦專業的工程師每天都會用到的。更不用說一些Y世代工程師──根據Pew Research,Y世代(千禧世代)是指1980年代後出生者──可能連聽都沒聽過,他們甚至對於1980-1990年代之間的科技用語不太熟悉。


(來源:Pew Research Center report)
無論他們是否瞭解以往的技術,Y世代正擁抱今日以社群為導向的技術。Pew Research在2014年3月進行的研究發現,千禧世代熱衷於採用新技術,包括行動裝置與社群媒體,同時將自已置於專屬「自我建構數位網路」的中心。
根據Pew Research的研究報告,「約有55﹪的人都受玩自拍,而且把自拍照片放在社群網站上;至今還沒有其他世代會像他們這樣做。」
不過,儘管Y世代十分熱衷於社交與行動技術,十個人中有九個認為個人資訊在網路上透露得太多,這個看法和上一世代持類似的態度。
當然,對於一整個世代的人存有刻板印象是相當冒險,而且事實上,可能有許多懂技術的工程師讀者經常瀏覽本刊,因此相當熟悉一些其他同儕不知道的上世代技術與產品。
現在就來看看大部份千禧世代連聽都沒聽說過的科技用語吧!當然,如果我們漏掉了或你曾遇到了什麼重要的技術詞𢑥,請在文末的評論欄中幫忙補充吧!
PC clone


(來源:Wikipedia)
當今的Windows PC發展大約可追溯到至少三十年前,大約在1981年代發表的IBM PC。微軟(Microsoft)為最早的IBM PC開發出3種版本的磁碟作業系統(DOS);英特爾(Intel)提供了 8086 微處理器。然而,IBM卻允許微軟將其DOS版本賣給其他硬體製造商。結果是:一個相容於IBM電腦的市場或「PC clone」市場迅速崛起。在1980年代中期,微軟與英特爾已經有能力挑戰IBM對於PC平台的控制權了;到了1990年代,所謂的「Wintel PC」也取代了「PC clone」。至於IBM,則繼續製造PC一直到2005年將PC部門賣給了聯想(Lenovo)。
Baud


(來源:Wikipedia)
「波特」(Baud)或「波特率」(baud rate)一詞最近已經很少聽到了,但在1980年代卻是製造商用來衡量數據機撥接的資料傳輸速度。根據TechTerms.com,「Baud」用於形容一個電子訊號的最大震盪速率。例如,如果一個訊號每秒改變1,200次,那麼就可測得1,200 baud。由於數據機具有每次訊號轉換時傳輸多個位元的能力,「位元/每秒」的用法便逐漸取代了baud。時至今日,經常使用「百萬位元/每秒」(Mbit/s)來描述寬頻度。
「撥號」?


(來源:Wikipedia)
撥接數據機、撥打電話……「撥號」(dial)一詞仍然是科技業界一定年紀的人常用的說法。除了少數偏遠郊區用戶還得忍受昔日數據機刺耳的撥接聲以外,如今撥接網路連線絕大多數已經被寬頻所取代,類比電視撥接選台的時代也早已成過去。有趣的是,轉盤電話早在多年前就被淘汰了,但有些人仍然習慣使用「撥打」電話號碼的說法。不過,近來隨著復古風吹起,我們還經常會在市面上看到具有復古風格的轉盤電話。
穿孔卡


(來源:Wikipedia)
如果你出生在嬰兒潮或在那之前,你可能有機會用過這種穿孔卡(punch card)。其歷史可追溯到19世紀後期,當時就是用這種穿孔卡來記錄資料。1960年代的反文化運動使得看似無害的穿孔卡成為洩憤的目標,嘲笑僵硬的紙片就像一個越來越沒靈魂、機械化與電腦化社會的象徵。穿孔卡已經從我們目前的生活中消失了,取而代之的是更新且更有效率的資料收集、處理與儲存方式。
單色顯示器


(來源:Wikipedia)
單色顯示器仍然可能零星出現在一些場所。例如,許多收銀機和刷卡機等。但如果要看看早期PC時代(約1983年)的單色CRT顯示器,可能就必須要到電腦博物館了。根據所用的螢光粉不同,單色顯器螢幕的文字與圖形均以某種顏色呈現。在IBM相容PC的那個時代,最常見的單色顯示器就是綠色,但琥珀色和白色選擇也同樣很普遍。隨著紅、綠與藍色螢光粉的出現,以及越來越多先進複雜的用戶介面與應用需要全彩色調,很快地單色顯示器就被堆到了倉庫或甚至堆成科技垃圾了。
點陣式印表機
在噴墨(inkjet)印表機在1990年代成為消費列印市場主流以前,可是一個以點陣式印表機為主的時代。(雷射印表機雖然也可追溯到當時,但因價格相當高而主打商業市場。)以今日的標準來看,點陣式印表機真的很吵且速度緩慢,它用一個印字頭來回在頁面間移動列印。它有點像是打字機一樣,但更具有通用性,因為它利用印字頭敲打在緊貼紙張上的色帶,而能夠列印出圖形與多種字體。這項技術式微的原因有很多,最直接的影響就是彩色噴墨印表機日益進展與複雜化,除了在列印時更安靜以外,它還能夠印出漂亮的彩色照片——這同時也是數位相機躍升主流的重要原因之一。



(來源:Wikipedia)

序列/平行連接埠



(來源:Wikipedia)

電腦、平板電腦和智慧型手機都著各種連接埠,最主要的就是USB,而曾經無處不在的平行埠與序列埠則早已不復存在。9針RS-232連接器曾經用於連接各種不同的PC外接週邊設備,包括數據機、滑鼠、資料儲存裝置、不斷電電源供應器以及其他設備。長期使用蘋果的用戶應該還記得Mac電腦的RS-422序列埠吧,它後來在1998年推出的 iMac 時被USB取代了。平行埠則主要用於連接印表機、掃描機、外接硬碟、控制搖桿以及一些早期的 MP3 播放器,不過,後來也改用 USB 、乙太網路或甚至 Wi-Fi 連接了。
電傳打字機



(來源:Wikipedia)

電傳打字機或電傳印表機,是經由各種通訊系統(包括以數據機傳送的標準電話線)印刷傳送書面訊息的電子機械打字機。雖然它的起源可追溯到19世紀古老的股票行情自動記錄收報機,但它在1970-1980年代成為各種業務普遍使用的電傳打字機。當時的報社也透過這種電傳打字機來接收電報新聞。這種電傳打字機最終被電腦終端所取代,從而減少用紙與開銷,使其更易於編輯以及共享文字,也更具有成本效益。
軟碟片



(來源:Wikipedia)

Y世代可能還用過「硬式」的軟碟片。2000年代初期的桌上型電腦與筆記型電腦都還附有軟碟插槽可讀取3.5吋的「硬式」磁片。其實,這種硬式磁碟片曾經有一度真的是…軟性的。最早的軟碟片出現在1960年代,它的直徑約有8吋長。到了1970年代中期的PC革命,5.25吋FDD取代了8吋軟碟。不過,5.25吋軟碟在日常的使用上也不太方便,最後在1990年代中期被淘汰了。
王安電腦


(來源:Wikipedia)

王安電腦(Wang Laboratories)是1970-1980年代文字處理終端機與微型電腦市場的主導廠商之一,但在1990年代該公司CEO兼創辦人王安博士去世後而告失敗。由於電視廣告頻繁出現,王安可說是家喻戶曉,比當時(以及現在還存在)的許多科技公司更有名。IBM PC (以及其後的PC clone)的崛起,扼殺了王安電腦的文字處理器產品線,而該公司努力打造專有PC以及IBM相容PC的業務也一蹶不振。王安電腦在1992年申請破產,後來以王安國際(Wang Global)捲土重來,但在該公司完全消逝以前,始終無法再現昔日輝煌榮景。
編譯:Susan Hong
(參考原文:10 Tech Terms Millennials Don't Know,by Jeff Bertolucci)