歐姆龍plc與其它儀表或設(shè)備通訊(無論是omron儀表或第三方儀表),要用帶協(xié)議宏的串口通訊模塊或模板,根據(jù)儀表或設(shè)備的通訊協(xié)議作相應(yīng)的程序,建立相應(yīng)的連通通道,就可對儀表進行讀和寫。
筆者曾為客戶作過plc與第三方溫度儀表的通訊,現(xiàn)呈給各位,請指正。
所用plc為omronc200he-cpu42,配通訊模塊c200hw-com06,使用其a口(rs485)與溫度表ttm-120通訊。
1、所用溫度儀表“神王”ttm-120通訊協(xié)議:
eia標(biāo)準(zhǔn):rs485
通訊:站1~31
傳輸:半雙工
通訊碼:ascll7位(bcc除外)8位(msd位=0)
接口方式:2線制
通訊速度:1200,2400,4800,9600
通訊距離:500mmax
字符:啟動位:1位
停止位:1/2位
數(shù)據(jù):7/8位
校驗:無/奇/偶
bcc校驗:預(yù)先/不選擇
通訊地址:1~99
通訊格式:
讀數(shù)據(jù):stx(02h起始碼)+地址(2位)+r+標(biāo)識碼(3位)+etx(03h結(jié)束碼)
儀表返回:stx(02h起始碼)+地址(2位)+ack(06h響應(yīng))+標(biāo)識碼(3位)+數(shù)據(jù)(5位)+etx(03h結(jié)束碼)
寫數(shù)據(jù):stx(02h起始碼)+地址(2位)+w+標(biāo)識碼(3位)+數(shù)據(jù)(5位)+etx(03h結(jié)束碼)
儀表返回:stx(02h起始碼)+地址(2位)+ack(06h響應(yīng))+etx(03h結(jié)束碼)
錯誤信息響應(yīng):stx(02h起始碼)+地址(2位)+nak(15h錯誤響應(yīng))+錯誤格式(1位)+etx(03h結(jié)束碼)
2、用協(xié)議宏軟件cx-protocol作協(xié)議宏程序
可用用cx-protocol中現(xiàn)有的系統(tǒng)標(biāo)準(zhǔn)協(xié)議copy到新建的程序中,再作修改,當(dāng)然也可重新編制。
在新建的程序的devices中選擇所用的plc型號,
通訊口a參數(shù)設(shè)置方式為:protocolmacro;并以儀表的通訊格式設(shè)置波特率等參數(shù)。
協(xié)議宏程序中有若干內(nèi)容:主要是發(fā)送信息列表;接受信息列表;這兩個表是協(xié)議宏的基本程序。再有就是具體的發(fā)送形式和接受形式,其它功能的讀寫形式,儀表的其它功能的讀寫形式。
我作了四種,根據(jù)儀表協(xié)議中的各個格式,編制宏程序,如下:
發(fā)送信息列表:
①寫數(shù)據(jù):sd(01)_1
<h>:stx
<t>:etx
數(shù)據(jù)形式:變量格式($(r(2),5))
地址格式:ascll變量格式($(r(1),2)
"w":寫請求
標(biāo)識符(儀表功能參數(shù):寫入設(shè)定值)“空格sv”
數(shù)據(jù)格式:<h>+<a>+"w"+"sv"+($(r(2),5))+<t>
②讀請求:sd(02)_1
地址格式:ascll變量格式($(r(1),2)
"r":讀請求
標(biāo)識符(儀表功能參數(shù):讀入過程值)“pv1”
數(shù)據(jù)格式:<h>+<a>+"r"+"pv1"+<t>
接受信息列表:
①接受響應(yīng):rv(01)_1
"ack":響應(yīng)接受
數(shù)據(jù)格式:<h>+<a>+"ack"+<t>
②接受數(shù)據(jù):rv(02)_1
數(shù)據(jù)形式:變量格式(&(w(1),*))存入plc指定的接收數(shù)據(jù)
數(shù)據(jù)格式:<h>+(&(w(1),*))+<t>
寫入命令設(shè)置:
編號:050
命令:發(fā)送&接受
發(fā)送命令:sd(01)_1
接收命令:rv(01)_1
讀入命令設(shè)置:
編號:051
命令:發(fā)送&接受
發(fā)送命令:sd(02)_1
接收命令:rv(02)_1
編制設(shè)置完成,下裝到plc中。
3、用cx-programmer作通訊程序
程序用協(xié)議宏指令pmcr完成與儀表的通訊:
三個操作數(shù):一:控制字:端口+協(xié)議宏序列號
二:發(fā)送數(shù)據(jù)首址占2/3個字,首字是指令字?jǐn)?shù);下一字為儀表地址;
對于寫命令要多一個字為設(shè)定值
三:接收數(shù)據(jù)首址占4個字,首字是命令字?jǐn)?shù);下兩字是接收的5位數(shù)據(jù)。
對于寫命令該操作數(shù)為虛設(shè)字,沒有實際意義
讀指令:pmcr#1051端口=1序列號051(讀出)
dm0000dm0000=#0002dm0001=#0001
dm0030dm0030=#0004dm0031~dm0033=數(shù)據(jù)
寫指令:pmcr#1050端口=1序列號050(寫入)
dm0020dm0020=#0003dm0021=#0001dm0022=設(shè)置值
dm0040(虛設(shè))
協(xié)議宏執(zhí)行標(biāo)志:端口一(a):α機為ir289.08cqm1h為ir207.08
端口二(b):α機為ir289.12cqm1h為ir207.12
當(dāng)這變量=0時,方可執(zhí)行pmcr命令
每個端口只能執(zhí)行一個通信序列,可以不同的時間段產(chǎn)生pmcr指令的執(zhí)行脈沖。
4、對于若干個儀表,每表設(shè)置不同的站號,就可由程序分別對其作讀寫操作,只有地址相符的儀表才能響應(yīng)。