串列通訊模組 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)