串列通訊模組 C24
接頭型式(RS232 or RS422/485)
| 
     型號 
接頭 | 
QJ 
QJ | 
QJ 
QJ | 
QJ | 
| 
CH1 | 
RS-232 | 
RS-232 | 
RS-422/485 | 
| 
CH2 | 
RS-422/485 | 
RS-232 | 
RS-422/485 | 
| 
1.傳輸速度C24N最快可達230400bps(只有ch1) 
2.CH1+CH2傳輸速率最大230400。例:ch1=230400時,ch2只能=0 
3.在monitoning模式,最快只有115200(ch1+ch2) | |||
RS232 長度MAX 15米 
RS422/485長度MAX 1200米 
RS422 & RS485的差別:
在本質上RS422是屬於4線式,RS485是2線式
而RS422將SDA接到RDA、SDB接到RDB。由SDA&SDB接外部裝置~也是2線式~
PS:如果RS422接用此接法時,當傳送資料時,模組本身會收到自已發出的資料。
RS232 PIN1 CD接腳說明:
CD=Carrier detect 傳送檢查功能,當有資料要接收時,CD要收到ON的信號。
CD功能可以在ADDRESS 151/311中去設定關閉/開啟。
接法:
模組輸入輸出點 (X/Y)
| 
X0 | 
CH1傳送正常 | 
Y0 | 
CH1傳送要求 | 
| 
X1 | 
CH1傳送發生異常 | 
Y1 | 
CH1接收要求 | 
| 
X2 | 
CH1傳送中 | 
Y2 | 
CH1模式切換 | 
| 
X3 | 
CH1接收正常完成 | 
Y3 | 
禁止使用 | 
| 
X4 | 
CH1接收異常 | 
Y4 | |
| 
X5 | 
FOR
  SYSTEM | 
Y5 | |
| 
X6 | 
模式切換(NO USE) | 
Y6 | |
| 
X7 | 
CH2傳送正常 | 
Y7 | 
CH1傳送要求 | 
| 
X8 | 
CH2傳送發生異常 | 
Y8 | 
CH1接收要求 | 
| 
X9 | 
CH2傳送中 | 
Y9 | 
CH1模式切換 | 
| 
XA | 
CH2接收正常完成 | 
YA | 
禁止使用 | 
| 
XB | 
CH2接收異常 | 
YB | |
| 
XC | 
FOR
  SYSTEM | 
YC | |
| 
XD | 
模式切換(NO USE) | 
YD | |
| 
XE | 
CH1異常發生 | 
YE | 
CH1 異常清除 | 
| 
XF | 
CH2異常發生 | 
YF | 
CH2 異常清除 | 
| 
X1E | 
READY~ | 
Y1E | 
PS:當使用G.input &
G.output指令時,就不需要使用傳送/接收要求的Y接點。
Switch設定
1.     
如果是對應其他三菱系列的產品,無所調整switch,即可連線~
CH1=switch
1,CH2=switch 3
| 
b7 | 
b6 | 
b5 | 
b4 | 
b3 | 
b2 | 
b1 | 
b0 | |
| 
CH1 SIDE | ||||||||
| 
CH2 SIDE | 
| 
bit | 
功能說明 | 
OFF(0) | 
ON(1) | 
註解 | 
| 
b0 | 
operation setting | 
獨立 | 
LINK | 
CH1 always off | 
| 
b1 | 
data bit | 
7 | 
8 | |
| 
b2 | 
parity bit | 
no | 
yes | |
| 
b3 | 
even/odd parity | 
odd | 
even | |
| 
b4 | 
stop bit | 
1 | 
2 | |
| 
b5 | 
sum check code | 
no | 
yes | |
| 
b6 | 
write duning RUN | 
prohibited | 
allowed | |
| 
b7 | 
模式切換 | 
prohibited | 
allowed | 
always off | 
b5=sum check用於MC Protocol & Bidirectional Protocol
| 
Communication
  rate 
(Unit:bps) | 
Bit
  position | 
Communication
  rate 
(Unit:bps) | 
Bit
  position | 
| 
b15~b8 | 
b15~b8 | ||
| 
50 | 
0FH | 
14400 | 
06H | 
| 
300 | 
00H | 
19200 | 
07H | 
| 
600 | 
01H | 
28800 | 
08H | 
| 
1200 | 
02H | 
38400 | 
09H | 
| 
2400 | 
03H | 
57600 | 
0AH | 
| 
4800 | 
04H | 
115200 | 
0BH | 
| 
9600 | 
05H | 
230400 | 
0CH | 
建議使用9600,雜訊較少~
SWITCH
2 & 4 設定
| 
set number | 
說明 | |
| 
0H | ||
| 
1H | 
MC protocol | |
| 
2H | 
Format 2 | |
| 
3H | 
Format 3 | |
| 
4H | 
Format 4 | |
| 
5H | 
Format 5 | |
| 
6H | 
Non procedure
  protocol | |
| 
7H | 
Bidirectional protocol | |
| 
8H | 
For linked operation | |
switch5 設定站號。MAX=1FH
MC protocol & Non procedure protocol & bidirectional protocol
MC protocol 屬於三菱本身的通訊協定~
可參照Communication
Protocol Reference Manual 手冊,3-13頁開始有格式
如果跟個人電腦連絡,也可使用此格式。
Non procedure protocol 沒有任何定義。
適合MODBUS使用~與一般外部裝置連結~
bidirectional
protocol 屬於2向溝通的協定~
data bit 7 or 8的差異~
資料內容的差異:
Data bit = 7時,只能表現出0-127(00H-7FH)的數值。
Data bit = 8時,就可以表現在0-255(00H-FFH)的數值。
傳輸速度的差異:
當資料大的時候,Data
bit=8,明顯會比7的慢。
如果是以ASCII碼在使送時,建議使用7位元就好~
因為ASCII數值到127就夠用了~
模組參數位址設定
| 
CH1 | 
CH2 | 
功能說明 | 
| 
150(96H) | 
310(136H) | 
傳送資料,以0=WORD
  / 1=BYTE為單位 | 
| 
151(96H) | 
311(137H) | |
| 
162(A2H) | 
322(142H) | 
傳出BUFFER區起始位址。預設CH1=400H/CH2=800H | 
| 
163(A3H) | 
323(143H) | |
| 
164(A4H) | 
324(144H) | 
接收長度。 | 
| 
165(A5H) | 
325(145H) | 
結束碼。預設0D 
FFFFH=NO USE | 
| 
166(A6H) | 
326(146H) | 
接收BUFFER區起始位址。預設CH1=600H/CH2=A00H | 
| 
167(A7H) | 
327(147H) | 
接收BUFFER區的大小。預設200H | 
| 
168(A8H) | 
328(148H) | 
接收BUFFER區旗標。 
***直接清除此參數,可達到CSET的功能。 | 
*下面表示的位址為預設值,可以上表中去修改~
| 
CH1 | 
CH2 | 
功能說明 | 
| 
1024(400H) | 
2048(800H) | 
傳送資料數量 | 
| 
1025~1535 
(401H~5FFH) | 
2049~2559 
(801H~9FFH) | 
傳送資料暫存區 | 
| 
1536(600H) | 
2560(A00H) | 
接收資料數量 | 
| 
1537~2047 
(601H~7FFH) | 
2561~3071 
(A01H~BFFH) | 
接收資料暫存區 | 
LINK功能說明
LINK功能,可以把此模組,當成一個中繼站~
當CH1 (RS232) 收到信號時,會自動由CH2 (RS422/485)發出。~
當CH2 (RS422/485) 收到信號時,會自動由CH1 (RS232) 發出。
不需另外寫程式~
示意圖:
當CH1有信號進來時,LINK功能會自動轉由CH2出去~但C24模組本身還是可以取到信號
接收數量&結束碼
當C24模組遇到接收數量到達或收到結束碼時,都會將接收完成信號觸發~
CH1=X03,CH2=X0A ,表示已經接收完成,同時會把BUFFER旗標歸0。
一般正常環境下來說,可以藉由接收數量來判斷是否已經接收完成~
但如果在雜訊進來的情形下,可以會導致多收一個字元進來~
所以如果利用接收數量來判斷是否完成時,最好每次都做BUFFER旗標清除的動作~
BUFFER旗標  CH1=A8H、CH2=148H
指示目前接收到的資料要放到那個位置上~
例:
正常情況下,只有收到10個BYTE(沒結束碼),所以以10BYTE為接收數量~
當雜訊產生,進來11個BYTE時:
C24收到10個BYTE,把接收信號(X03/X0A )觸發~
但第11個信號會被放第一個位置上~
如果下次接收開始前沒做旗標清除的動作,第二次的第一個BYTE就會被擺到第二個BYTE的位置上,而導致所有資料偏移。
相同情形如果發生在結束碼時,
因為是利用結束碼來當信號,
所以不管10個BYTE or 11個BYTE進來,都是以收到結束碼為觸發X03/X0A 的信號。所以只有在收到11個BYTE的當次,會有錯誤。
下一次不需清除旗標也會正常。
所以:
1.當用接收數量來判斷接收完成時,每次都要清除BUFFER旗標,不然當雜訊進來,所以資料會偏移。
2.如果是利用結束碼來判斷時,則只要把接收數量設定為2倍以上的接收數量,就不會有問題了。(不需去清除BUFFER旗標)
G.OUTPUT指令格式:G.OUTPUT  Un  S1 S2 D1
(不可跟ZP.CSET
& G.INPUT 同時執行)
S1=設定Channel
NUMBER
S1+1=Error
code(系統回傳)
S1+2=發送數量(WORD(預設)/BYTE)
(發送數量的單位,可以在96H(CH1)/136H(CH2)中來選擇~)
====       
S2 發送資料的起始暫存器,發送的資料需連續。
====
D1 發送完畢信號(BIT)
D1+1=發送有錯誤。
====
以BYTE為單位,16BIT(2BYTE)暫存器,可存2個ASCII碼,會送出2次~
低8位元先送出:
例:D120=3031H èASCIIè先送1(31H),再送0(30H)
========
發送數量的單位,可以在96H(CH1)/136H(CH2)中來選擇~
96H=0,CH1,以WORD來算發送數量。
136H=1,CH2,以BYTE來算發送數量。
相同情形下,要發送D120的值=3031H  ASCII=10
以WORD來算,要設定1
以BYTE來算,要設定2
範例程式:
G.INPUT指令格式:G.INPUT    Un    S   D1    D2
(不可跟ZP.CSET
& G.INPUT 同時執行)
S=Channel
number
S+1=回傳錯誤碼(by
system)
S+2=接收到的資料筆數(by
system)
S+3=允許接收的資料筆數
D1=接收資料存放區
D2=接收完成(成功/失敗)(bit)
D2+1=接收失敗
====
X03/X0A =模組有接收到正常資料。(CH1/CH2)
X04/X0B=模組有接收到異常資料。
如果資料沒有被取走,信號會一直ON。
可以利用這2個信號去觸發G.INPUT。
當G.INPUT讀取完成時X03/X0A ,會馬上OFF。
這時候跟G.INPUT的完成信號(D2)有點時間差~
所以利用X03/X0A 來呼叫副程式接受資料時,
記得下降緣也再呼叫一次接收副程式。
否則因為X03/X0A  OFF之後,D2會無法在副程式看到ON。
範例程式:
ZP.CSET指令格式:ZP.CSET  “Un”  S1 S2 D1 D2
S1=Channel number
S2=0
S2+1=0正常。不等於0就是錯誤碼(by system)
S2+2=4  接收資料區buffer旗標清除。(Receive
data clear request)
S2+3 ~ S2+111  FOR SYSTEM USE
D1 沒有使用
D2 清除指令完成
D2+1
清除動作中有異常~
範例程式:
D116=清除完成次數
D117=清除有異常
PS:不建議使用
如需使用清除接收buffer區旗標,可以直接去清除位址~
CH1=168(A8H),CH2=328(148H)






