2014年10月27日 星期一

PLC新手不適應,

01上的文章:
請教自動控制業前輩 想跳脫PLC轉PC寫程式 的方向
http://www.mobile01.com/topicdetail.php?f=651&t=4129716

好像也是耶!!!
1.老闆始終認為你只是在那邊打打電腦沒什麼
2.客戶常常突然要求更改或加動作導致程式要大改
3.老闆拼命節省硬體成本導致程式難寫BUG變多
4.寫程式時間 一再被壓縮 導致必須一直加班趕工 壓力很大
5.薪水不會跟著你的能力而明顯成長
6.會寫的人太多 老闆覺得不差你一個 看不到寫得好與會寫的差別

但是:
1.打電腦沒什麼,但老闆不把你fire是因為,客戶機台有問題又非找你不可,對公司很重要。
2.客戶改動作,程式大改,常遇見,但客戶的動作不一定是正確,要先討論,再改,不然會一改再改,通常討論完,程式的架構就完成了。
3.節省硬體,跟產品有新製程是一樣的,用新的東西,可以學到更多的東西,訓練自已的能力,永遠只會一種東西,等著被淘汰。
4.寫程式越久,應該會有自已的一套架構/模組化,但最後就是東copy西copy,改一改就完成了。
5.薪水在這家公司不會成長,但明顯這家公司給你很多機會,等學的夠多夠廣,換工作的薪水,就是你來喊的。
6.問題處理速度越快,客戶抱怨越少,當老闆第一個想到的是你,那你不重要嗎,這都代表寫的好。如果公司老闆都隨便抓人,表示你的程度跟其他人一樣,怎麼算寫的好?

結論:
如果這間公司有好的師父可以帶領,就可以學的非常非常多的東西。
如果沒有會很累,對自已(自學)沒信心,就可以換一換。

天下間沒有最穩不倒的公司,
之前的諾基亞、柯達、台灣有勝華,
都曾經很大,但最終都倒下了,
就算讓你好遇進了大企業,
但沒有學到東西,加強自已能力,
等到公司倒了才發現,自已什麼都沒有,
那又如何?
所以唯有加強自身的能力,
讓每家公司搶著要,
就不怕沒工作了。


PLC相關工作怎麼找?
http://vkinngworld.blogspot.tw/2014/05/plc-1.html
PLC相關工作怎麼找? -2
http://vkinngworld.blogspot.tw/2014/05/plc-2.html

2014年9月25日 星期四

串列通訊模組 QJ71C24

串列通訊模組  C24

G.INPUT 指令說明(讀入接收的資料)
G.OPUT 指令說明(傳出暫存器的資料)
ZP.CSET 指令說明  清除接收區的BUFFER旗標(不建議使用)



接頭型式(RS232 or RS422/485)

     型號
接頭
QJ71C24
QJ71C24N
QJ71C24N-R2
QJ71C24-R2
QJ71C24N-R4
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線式,RS4852線式
RS422SDA接到RDASDB接到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)
CD檢測功能。預設=1關。  0=開。 for Rs-232
162(A2H)
322(142H)
傳出BUFFER區起始位址。預設CH1=400H/CH2=800H
163(A3H)
323(143H)
傳出BUFFER區的大小。預設200H
164(A4H)
324(144H)
接收長度。
165(A5H)
325(145H)
結束碼。預設0D0AH 設定範圍00H~FFH
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=X03CH2=X0A,表示已經接收完成,同時會把BUFFER旗標歸0

一般正常環境下來說,可以藉由接收數量來判斷是否已經接收完成~
但如果在雜訊進來的情形下,可以會導致多收一個字元進來~
所以如果利用接收數量來判斷是否完成時,最好每次都做BUFFER旗標清除的動作~

BUFFER旗標  CH1=A8HCH2=148H
指示目前接收到的資料要放到那個位置上~

例:
正常情況下,只有收到10BYTE(沒結束碼),所以以10BYTE為接收數量~
當雜訊產生,進來11BYTE
C24收到10BYTE,把接收信號(X03/X0A)觸發~
但第11個信號會被放第一個位置上~
如果下次接收開始前沒做旗標清除的動作,第二次的第一個BYTE就會被擺到第二個BYTE的位置上,而導致所有資料偏移。

相同情形如果發生在結束碼時,
因為是利用結束碼來當信號,
所以不管10BYTE or 11BYTE進來,都是以收到結束碼為觸發X03/X0A的信號。所以只有在收到11BYTE的當次,會有錯誤。
下一次不需清除旗標也會正常。

所以:
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)暫存器,可存2ASCII碼,會送出2~
8位元先送出:
例:D120=3031H èASCIIè先送1(31H),再送0(30H)
========
發送數量的單位,可以在96H(CH1)/136H(CH2)中來選擇~
96H=0CH1,以WORD來算發送數量。
136H=1CH2,以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)