1、通訊接口
以松下fp1系列plc為例來闡述plc與擴(kuò)展模塊之間的通訊,fp1系列plc的通訊接口采用標(biāo)準(zhǔn)9芯rs232接口,它與擴(kuò)展模塊之間的接線如圖所示。
圖1 擴(kuò)展模塊與plc的通訊連接
· 擴(kuò)展模塊的rxd端與plc的txd端聯(lián)接,使擴(kuò)展模塊接收到plc發(fā)出的數(shù)據(jù);
·擴(kuò)展模塊的txd端與plc的rxd端聯(lián)接,使擴(kuò)展模塊發(fā)出的數(shù)據(jù)被plc接收到;
· 擴(kuò)展模塊的地與plc的sg端互聯(lián),使兩者的工作基準(zhǔn)地電平相同。
上面采用的是rs232接口,plc一次只能擴(kuò)展一個模塊。假如要擴(kuò)展多個模塊,可以采用rs485接口,現(xiàn)代的plc一般都帶有rs485接口。
2、通訊協(xié)議
松下fp1系列plc與擴(kuò)展模塊之間的通訊協(xié)議為松下公司專用的mewtocol-com協(xié)議,該協(xié)議采用異步通訊方式,其波特率有1200、2400、4800、9600、19200、38400、57600、115200bps等多種可選,且報(bào)文長度可變可固定。該協(xié)議格式分為命令消息(command message),正常響應(yīng)消息(response message-normal),出錯響應(yīng)消息(response message-error)三種。
其中:%為起始符,標(biāo)記每一幀報(bào)文的開始;cr為結(jié)束符,標(biāo)記每一幀報(bào)文的結(jié)束;
ad為plc的站地址,為兩位16進(jìn)制數(shù),如00則表示第一臺plc;
#、$、!標(biāo)注該幀報(bào)文為何種類型。
command code為命令代碼,如例1中的“rd”,表示讀數(shù)據(jù)區(qū)。response code為響應(yīng)代碼一般返回接收到的命令消息中的命令代碼。error(h)和error(l)為出錯代碼,是兩位16進(jìn)制數(shù), 可根據(jù)其值在協(xié)議中查出錯誤的描述。
text code為命令參數(shù),如例1命令消息中“d 01105 01107”,“d”表示數(shù)據(jù)寄存器,“01105 01107”表示第1105號至1107號,而在例1響應(yīng)消息中,“6300 4433 0a00”則表示dt1105至dt1107中數(shù)據(jù)分別為6300、4433、0a00。
bcc(h)和bcc(l)為前面字符串的bcc校驗(yàn)碼的高、低位,為兩位16進(jìn)制數(shù)。其初值為0,然后從起始符開始與該幀報(bào)文中每一字節(jié)按位進(jìn)行異或運(yùn)算得到。
例1:讀取dt1105至dt1107中的數(shù)據(jù)的命令消息如下:
% 01 # rd d01105 01107 57 cr
若dt1105至dt1107中數(shù)據(jù)分別為6300、4433和0a00,plc返回的響應(yīng)消息如下:
% 01 $ rd 6300 4433 0a00 62 cr
那么, 模擬量輸進(jìn)擴(kuò)展模塊與plc通訊的報(bào)文可如下:
% 01 # wd d 01105 01105 0fff 32 cr
表示1號模擬量輸進(jìn)擴(kuò)展模塊把模擬量采樣值0fff存進(jìn)plc的第1105個數(shù)據(jù)寄存器
模擬量輸出擴(kuò)展模塊與plc通訊的報(bào)文可如下:
% 01 # rd d 01106 0110f 02 cr
表示1號模擬量輸出擴(kuò)展模塊請求把plc中第1106個數(shù)據(jù)寄存器保存的模擬量輸出值讀進(jìn)。
若dt1106中數(shù)據(jù)為0fff,plc返回的響應(yīng)消息如下:
% 01 $ rd 0fff 45 cr
1號模擬量輸出擴(kuò)展模塊就把接收到的數(shù)字量0fff轉(zhuǎn)換成模擬量輸出。