延伸閱讀:[三菱PLC][使用C#] 透過RS232(USB介面)監控PLC 範例程式碼

【通訊】

RS232(PC) 對 RS422(PLC)

宣告RS232Port:
System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort();

通訊設定:
1. Port Name (EX. COM1, COM2 ...)
2. 非同步雙向 Baud Rate = 9600
3. 資料7位元 Data Bits = 7
4. 停止位元1個 Stop Bits = System.IO.Ports.StopBits.One
5. 檢查位元為偶同位 Parity = System.IO.Ports.Parity.Even

傳送格式:
STX + Cmd + Address + Bytes + Data + ETX + CheckSum


查資料Y20的元件位址是0510
單一元件通訊命令(起始碼+控制碼+元件位址+結束碼+偵誤碼)
起始碼是ASCII碼02
控制碼強制ON是7,強制OFF是8
元件位址要上下位互換,所以在這裡要輸入1005
結束碼是ASCII碼03PL
偵誤碼是控制碼+元件位址的每個字元轉成ASCII碼數值全部相加,在轉成16進制數值取最後2位
其中ASCII碼02和03是不可見字元,就算輸入螢幕上也是看不到字的
Y20強制ON的字串→(ASCII碼02)71005(ASCII碼03)00→算出的偵誤碼是00
Y20強制OFF的字串→(ASCII碼02)81005(ASCII碼03)01→算出的偵誤碼是01

查資料D112的元件群組位址是10E0
D暫存器的字元寫入命令(起始碼+控制碼+元件群組位址+寫入組數+寫入資料+結束碼+偵誤碼)
起始碼是ASCII碼02
控制碼寫入是1
元件群組位址不用換位所以是10E0
三菱PLC每筆資料是8位元,D暫存器是16位元,所以寫入組數是02組(要輸入16進制數值)
寫入資料是1,換算成16進制字串是0001,寫入資料每8位元1組分成上下位元,上下位元要互換位置,所以在這裡要輸入0100
結束碼是ASCII碼03
偵誤碼是控制碼+元件群組位址+寫入組數+寫入資料的每個字元轉成ASCII碼數值全部相加,在轉成16進制數值取最後2位
D112寫入1的字串→(ASCII碼02)110E0020100(ASCII碼03)2D→算出的偵誤碼是2D


【指令】

[K4M100 的意思]

K1代表連續的4個位址,K4代表4×4個連續位址,也就是16個。

同理,K2是8個連續位址;K3是12個連續位址。

M100是一個位址,K4代表M100到M115這16個位址,不是M100代表16個位址。


[TO 指令]

TO 模組索引 記憶體位址(BFM) 值 傳幾個

※記憶體位址(BFM)編號從0開始,0~31,共32個,每個位址有16bit可用。

例. TO K0 K3 H0000 K1
將H0000傳送到PLC後面順位第1的模組的BFM#3。

如果改成 TO K0 K3 H0000 K2
將H0000傳送到PLC後面順位第1的模組的BFM#3、#4。

另有:
DTO 一次傳輸32bit


[FROM 指令]

FROM 模組索引 記憶體位址(BFM) 存放位址 傳幾個

另有:
DFROM 一次傳輸32bit


[FMOV 指令]

16位元連續執行多點傳送指令

例. FMOV K0 D300 K2
將K0(值0)傳送到D300~D301

另有:
FMOVP 16位元脈衝執行多點傳送指令
DFMOV 32位元連續執行多點傳送指令
DFMOVP 32位元脈衝執行多點傳送指令


[SET/RST 指令]

SET:置位指令,使操作保持ON的指令。
RST:复位指令,使操作保持OFF的指令。

SET指令可用于Y,M和S,RST指令可用于复位Y,M,S,T,C,或将字元件D,V和Z清零。


[ZRST 指令]

重置

例. ZRST M0 M499
將M0~M499的值全部復位


[PLS/PLF 指令]

PLS(Pulse):上升沿微分輸出指令。
PLF:下降沿微分輸出指令。
PLS和PLF指令只能用於輸出繼電器和輔助繼電器(不包括特殊輔助繼電器)。

PLC_PLS_PLF

圖中的M0僅在X0的常開觸點由斷開變為接通(即X0的上升沿)時的一個掃描週期內為ON,M1僅在X0的常開觸點由接通變為斷開(即X0的下降沿)時的_個掃描週期內為ON。
當PLC從RUN到STOP,然後又由STOP進入RUN狀態時,其輸入信號仍然為ON,PLS M0指令將輸出一個脈衝。然而,如果用電池後備(鎖存)的輔助繼電器代替M0,其PLS指令在這種情況下不會輸出脈衝。


[比較指令]
如CMP K100 C30 M0
简单说就是前两个数(100和计数器C30里的数)比较,将>、<、=三个状态输出到三个位!而M0为首地址、依次是M0、M1、M2
K100>C30 M0=1 M1=0 M2=0
K100=C30 M0=0 M1=1 M2=0
K100


arrow
arrow
    文章標籤
    plc
    全站熱搜

    伊 發表在 痞客邦 留言(2) 人氣()