第一篇:51單片機與三菱PLC通訊實例
51單片機與三菱PLC無協(xié)議通訊成功
我用了兩個晚上的時間查閱一些資料,利用三菱PLC的擴展RS485通訊板與其51單片機連接通訊,可寫PLC任意的地址。長度可達1000米,看見網上寫的都很煩且對三菱和單片機不是很熟的朋友來說有一定的閱讀難度,今天將它與大家分享。希望在此基礎上大家能擴展出自己想要的功能,過些時間有空我在寫個半雙工的程序。硬件部分:
我用的是天祥單片機實驗板,由于沒有RS485接口,我利用ADM485芯片自制了一個485接口與三菱PLC的擴展RS485通訊如圖,但如果要進行半雙工通訊,須將P3.0口到下載程序的RS232芯片的線斷開可用一個跳線,用RS485的時候斷開RS232,用RS232的時候插上跳線帽。硬件連接如圖
PLC程序:
通訊我用單片機做主機(只發(fā)送指令),PLC做從機(只接收指令),單工單向,以便初學著掌握。
格式:1位啟始,8位數(shù)據,一位停止。所以PLC寄存器D8120:0C81.plc程序很簡單不懂的可以看下三菱PLC的通訊手冊。如下圖:
三:單片機程序:
#include
/*單片機的頭文件*/ unsigned char code tab[]={0x17,0xff};/*PLC輸出的Y點數(shù),PLC輸出Y燈0125678亮*/ sbit led=P1^1;
/*將RS485置為發(fā)送數(shù)據模式*/ unsigned char i;void init(){ SCON=0x50;
/*串口中斷開*/ TMOD=0x20;
/*定時器設置*/
TH1=0xfd;
/*定時時間的高位*/ TL1=0xfd;
/*定時時間的低位,速度為9600BPS*/ TR1=1;
/*定時器開*/ EA=1;
/*開總中斷*/ TI=0;
/*復位串口中斷*/ led=1;
/*將RS485置為發(fā)送數(shù)據模式*/ } void main(){ init();
/*調用子程序*/ for(i=0;i<2;i++){ SBUF=tab[i];
/*將數(shù)據發(fā)送到串口*/ while(!TI);
/*等待串口數(shù)據發(fā)送結束*/ TI=0;
/*復位串口中斷*/ } } 四:注意點。
1:RS485的線不能接反,否則數(shù)據將不正確。
2:單片機的晶振要選擇11.0592MHZ,否則PLC接收到數(shù)據也不正確。
3:RS485芯片的電源不能接反,否則要燒壞芯片。
今天要去山東調試機器,現(xiàn)在正在高鐵上,剛好有空把這篇心得寫好,有錯誤的地方還請大家指正,也希望有共同愛好的一起交流心得。
QQ:79814563 注明時工控交友
電話:***
姓名:黃輝 2011年12月17日 Saturday
第二篇:三菱PLC通訊
三菱PLC通訊 資料整理——李永彬
三菱PLC與上位機通訊
三菱PLC:FX1N + FX1N-232-BD
FX2N + FX2N-232-BD 計算機:Windows XP中文企業(yè)版 + Visual Basic 6.0中文企業(yè)版
Windows 98中文版 + Visual Basic 6.0 中文企業(yè)版
兩者之間連接使用的是FX-232CAB-1電纜線(2-3,3-2,4-6(8),5-5)一.三菱PLC的設置
三菱FX PLC在進行計算機鏈接(專用協(xié)議)和無協(xié)議通訊(RS指令)時均須對通訊格式(D8120)進行設定。其中包含有波特率、數(shù)據長度、奇偶校驗、停止位和協(xié)議格式等。在修改了D8120的設置后,確保關掉PLC的電源,然后再打開。
此外,對于采用RS485形式1:N計算機鏈接的還必須對站點號(D8121)進行設定。設定的范圍從00H到0FH(即0到15)。在這里對D8120采用下述設置: b15 b0 0110 1000 1000 1110 6 8 8 E 即數(shù)據長度為7位,偶校驗,2位停止位,波特率為9600bps,無標題符和終結符,采用計算機鏈接(RS-232C),自動添加和校驗碼,采用專用協(xié)議格式1。同時設定站號為0。具體設定如下所示:
FX PLC進行計算機鏈接時可用的專用協(xié)議有兩種:格式1和格式4。兩種格式的差別在于是否在每一個塊上添加了CR + LF,其中添加了CR + LF的是格式4。在這里采用格式1。二.上位機程序的編制
這里采用Microsoft公司的Visual Basic 6.0中文企業(yè)版編制上位機程序。Visual Basic中提供了一個名為MSComm的通信控件便于設計串行通信的程序。MSComm控件的主要屬性有: 1. CommPort屬性
CommPort屬性用于指定所要使用的串行端口的號碼。雖然Windows操作系統(tǒng)可以容納最多256個串行通信端口,不過Visual Basic的MSComm控件則僅限于16個端口。
2. Settings屬性
Settings屬性用于設置初始化參數(shù)。以字符串的形式設置波特率、奇偶校驗、數(shù)據位、停止位等4個參數(shù)。其格式為“BBBB,P,D,S”,其中BBBB表示波特率,P表示奇偶校驗位檢查方式,D表示數(shù)據位數(shù),S表示停止位數(shù)。一般情況下,歐美儀器習慣使用“9600,n,8,1”當成設置值;而日本儀器則習慣使用“9600,e,7,2”作為設置值。Settings設置完成之后,所傳輸及接受的字符串便以此設置為準,使用RS-232通信的雙方,Settings必須完全一樣,彼此才能順利地通信,否則雙方將無法正確接收到彼此所傳輸?shù)男盘?。所以,該屬性的設置必須和三菱PLC中D8120的相關設置保持一致。在這里,統(tǒng)一采用“9600,e,7,2”的設定。3. PortOpen屬性
PortOpen屬性用于設置通信連接端口的狀態(tài)。在使用串行端口之前必須先將要使用的串行端口打開。在上位機程序中應進行如下設定: Private Sub Form_Load()'窗體載入事件 MSComm1.CommPort = 1 '選擇端口號
三菱PLC通訊 資料整理——李永彬MSComm1.Settings = “9600,e,7,2” '設置端口屬性 MSComm1.PortOpen = True '打開端口 End Sub 4. Output屬性
MSComm控件的Output屬性提供了發(fā)送的功能,當從計算機向可編程控制器寫入數(shù)據或從可編程控制器讀取數(shù)據時,上位機應當先發(fā)出以下格式(格式1)的指令字符串: ENQ 站號 PC號 命令 消息等待時間 字符區(qū)域A 和校驗代碼
其中站號為在D8121中的設定值,這里是:00,PC號對于FX系列為:FF。
因為ENQ,ACK,NAK等通信控制字符是不可見字符,所以先用Chr函數(shù)對其進行賦值: ENQ=Chr(5)ACK=Chr(6)NAK=Chr(&H15)
然后在上位機程序中寫入以下代碼即可發(fā)出指令:
MSComm1.Output=ENQ &“00FF<命令><消息等待時間><字符區(qū)域A><和校驗代碼>” 5. Input屬性
與Output屬性相反,Input屬性提供了接收數(shù)據的功能。它將對方傳到輸入緩沖區(qū)中的數(shù)據讀進程序中,并清除緩沖區(qū)中已被讀取的數(shù)據。
a.如果是從計算機向可編程控制器寫入數(shù)據時,接收到從可編程控制器返回的應該是以下格式的字符串:
ACK 站號 PC號
或者
NAK 站號 PC號 錯誤代碼
前一種表示可編程控制器已經正確接收到從計算機發(fā)來的指令,后一種表示可編程控制器未正確接收到從計算機發(fā)來的指令。
b.如果是從計算機向可編程控制器讀取數(shù)據時,接收到從可編程控制器返回的應該是以下格式的字符串:
STX 站號 PC號 字符區(qū)域B ETX 和校驗代碼 或者 NAK 站號 PC號 錯誤代碼
如果要連續(xù)讀取數(shù)據可以利用Timer控件。將Output和Input放在Timer控件的Timer事件中即可。程序會以Timer控件的Interval屬性中設置的間隔去發(fā)送指令和接收數(shù)據。對于MSComm控件的其他一些屬性使用VB的默認值即可。
在串行通信傳輸?shù)膽弥?,經常使用的Visual Basic中的字符串處理函數(shù)如下: Chr函數(shù):返回含有特定ANSI或DBCS字符碼的字符串。Asc函數(shù):返回字符串第一個字符的ANSI或DBCS字符碼。
Len函數(shù):返回以字符數(shù)為單位的字符串長度。
Mid函數(shù):取得字符串中特定數(shù)量的字符,可指定開始獲取的位置和長度。Left函數(shù):取得字符串的左邊固定字符數(shù)的字符串。Right函數(shù):取得字符串的右邊固定字符數(shù)的字符串。
Val函數(shù):把字符串轉換為數(shù)值,可以將8進制或16進制的字符串轉換為10進制。Hex函數(shù):返回以十六進制數(shù)值表示的字符串。
RS指令應用一
三菱PLC與計算機利用RS指令進行通訊(通訊手冊9-14例)三菱PLC:FX1N + FX1N-232-BD 計算機:Windows XP中文企業(yè)版 + Visual Basic 6.0中文企業(yè)版
Windows 98中文版 + Visual Basic 6.0中文企業(yè)版
兩者之間連接使用的是FX-232CAB-1電纜線(2-3,3-2,4-6(8),5-5)
一.三菱PLC的設置
三菱FX PLC在進行計算機鏈接(專用協(xié)議)和無協(xié)議通訊(RS指令)時均須對通訊格式(D8120)進行設定。其中包含有波特率、數(shù)據長度、奇偶校驗、停止位和協(xié)議格式等。在修改了D8120的設置后,確保關掉PLC的電源,然后再打開。在這里對D8120采用下述設置: b15 b0
三菱PLC通訊 資料整理——李永彬0000 0100 1000 1111 0 4 8 F 即數(shù)據長度為8位,偶校驗,2位停止位,波特率為9600bps,無標題符和終結符,沒有添加和校驗碼,采用無協(xié)議。PLC程序如下:
二.上位機程序的編制
完整程序代碼及注釋如下:
Private Sub cmd1_Click()
'發(fā)送按鈕
lbl1.Caption = “" If txt1.Text = ”“ Then
'若發(fā)送數(shù)據欄中未鍵入指令則提示鍵入指令 lbl1.Caption = ”Please input data“ Else MSComm1.Output = txt1.Text
'發(fā)送指令 Timer1.Enabled = True
'觸發(fā)延時接收 End If End Sub Private Sub Form_Load()
'窗體載入事件 MSComm1.CommPort = 1
'選擇端口號 MSComm1.Settings = ”9600,e,8,2“ '設置端口屬性 MSComm1.PortOpen = True
'打開端口 End Sub
Private Sub Timer1_Timer()
'延時500ms接收 NAK = Chr(&H15)If MSComm1.InBufferCount > 0 Then txt2.Text = ”“ a = MSComm1.Input txt2.Text = a
'在接收數(shù)據欄中顯示接收到的數(shù)據 Else lbl1.Caption = ”No response" End If Timer1.Enabled = False End Sub
三菱PLC通訊 資料整理——李永彬
RS指令應用二
三菱PLC與儀表之間通訊
三菱PLC:FX1N + FX1N-232-BD 儀表(稱重器)
兩者之間連線該儀表僅提供3線式的簡化RS-232C口,即只有:RXD,TXD和GND,于是采用2-3,3-2,5-5的三線接法。
1. 對D8120進行設置并使其與儀表中的設置一致,對其中的控制線設置成使用無硬件握手方式,即(b12,b11,b10)=(0,0,0)。根據儀表說明書上對通訊的要求,設置如下: b15
b0
0000 0000 1000 0110
0 0 8 6 2. 根據儀表說明書所述,該種儀表有兩種工作方式:連續(xù)發(fā)送和指令狀態(tài)。這里設置成指令狀態(tài),即儀表根據發(fā)來的指令返回相應的數(shù)據。在此使用READ指令,根據指令協(xié)議,輸入的指令必須以
注:發(fā)送數(shù)據點數(shù)和接收數(shù)據點數(shù)必須按指令協(xié)議進行設置,否則通訊不能正常進行。PLC程序如下:
第三篇:三菱PLC與PC上位機VB通訊
三菱PLC通訊
三菱PLC與PC上位機VB通訊
三菱PLC:FX1N + FX1N-232-BD
FX2N + FX2N-232-BD 計算機:Windows XP中文企業(yè)版 + Visual Basic 6.0中文企業(yè)版
Windows 98中文版 + Visual Basic 6.0 中文企業(yè)版
兩者之間連接使用的是FX-232CAB-1電纜線(2-3,3-2,4-6(8),5-5)
一.三菱PLC的設置
三菱FX PLC在進行計算機鏈接(專用協(xié)議)和無協(xié)議通訊(RS指令)時均須對通訊格式(D8120)進行設定。其中包含有波特率、數(shù)據長度、奇偶校驗、停止位和協(xié)議格式等。在修改了D8120的設置后,確保關掉PLC的電源,然后再打開。
此外,對于采用RS485形式1:N計算機鏈接的還必須對站點號(D8121)進行設定。設定的范圍從00H到0FH(即0到15)。在這里對D8120采用下述設置: b15 b0 0110 1000 1000 1110 6 8 8 E 即數(shù)據長度為7位,偶校驗,2位停止位,波特率為9600bps,無標題符和終結符,采用計算機鏈接(RS-232C),自動添加和校驗碼,采用專用協(xié)議格式1。同時設定站號為0。具體設定如下所示:
FX PLC進行計算機鏈接時可用的專用協(xié)議有兩種:格式1和格式4。兩種格式的差別在于是否在每一個塊上添加了CR + LF,其中添加了CR + LF的是格式4。在這里采用格式1。
二.上位機程序的編制
這里采用Microsoft公司的Visual Basic 6.0中文企業(yè)版編制上位機程序。Visual Basic中提供了一個名為MSComm的通信控件便于設計串行通信的程序。MSComm控件的主要屬性有: 1. CommPort屬性
CommPort屬性用于指定所要使用的串行端口的號碼。雖然Windows操作系統(tǒng)可以容納最多256個串行通信端口,不過Visual Basic的MSComm控件則僅限于16個端口。2. Settings屬性
Settings屬性用于設置初始化參數(shù)。以字符串的形式設置波特率、奇偶校驗、數(shù)據位、停止位等4個參數(shù)。其格式為“BBBB,P,D,S”,其中BBBB表示波特率,P表示奇偶校驗位檢查方式,D表示數(shù)據位數(shù),S表示停止位數(shù)。一般情況下,歐美儀器習慣使用“9600,n,8,1”當成設置值;而日本儀器則習慣使用“9600,e,7,2”作為設置值。Settings設置完成之后,所傳輸及接受的字符串便以此設置為準,使用RS-232通信的雙方,Settings必須完全一樣,彼此才能順利地通信,否則雙方將無法正確接收到彼此所傳輸?shù)男盘?。所以,該屬性的設置必須和三菱PLC中D8120的相關設置保持一致。在這里,統(tǒng)一采用“9600,e,7,2”的設定。
三菱PLC通訊
3. PortOpen屬性
PortOpen屬性用于設置通信連接端口的狀態(tài)。在使用串行端口之前必須先將要使用的串行端口打開。在上位機程序中應進行如下設定: Private Sub Form_Load()'窗體載入事件 MSComm1.CommPort = 1 '選擇端口號 MSComm1.Settings = “9600,e,7,2” '設置端口屬性 MSComm1.PortOpen = True '打開端口 End Sub 4. Output屬性
MSComm控件的Output屬性提供了發(fā)送的功能,當從計算機向可編程控制器寫入數(shù)據或從可編程控制器讀取數(shù)據時,上位機應當先發(fā)出以下格式(格式1)的指令字符串: ENQ 站號 PC號 命令 消息等待時間 字符區(qū)域A 和校驗代碼
其中站號為在D8121中的設定值,這里是:00,PC號對于FX系列為:FF。
因為ENQ,ACK,NAK等通信控制字符是不可見字符,所以先用Chr函數(shù)對其進行賦值: ENQ=Chr(5)ACK=Chr(6)NAK=Chr(&H15)然后在上位機程序中寫入以下代碼即可發(fā)出指令:
MSComm1.Output=ENQ &“00FF<命令><消息等待時間><字符區(qū)域A><和校驗代碼>” 5. Input屬性
與Output屬性相反,Input屬性提供了接收數(shù)據的功能。它將對方傳到輸入緩沖區(qū)中的數(shù)據讀進程序中,并清除緩沖區(qū)中已被讀取的數(shù)據。
a.如果是從計算機向可編程控制器寫入數(shù)據時,接收到從可編程控制器返回的應該是以下格式的字符串:
ACK 站號 PC號
或者
NAK 站號 PC號 錯誤代碼
前一種表示可編程控制器已經正確接收到從計算機發(fā)來的指令,后一種表示可編程控制器未正確接收到從計算機發(fā)來的指令。
b.如果是從計算機向可編程控制器讀取數(shù)據時,接收到從可編程控制器返回的應該是以下格式的字符串:
STX 站號 PC號 字符區(qū)域B ETX 和校驗代碼 或者 NAK 站號 PC號 錯誤代碼
如果要連續(xù)讀取數(shù)據可以利用Timer控件。將Output和Input放在Timer控件的Timer事件中即可。程序會以Timer控件的Interval屬性中設置的間隔去發(fā)送指令和接收數(shù)據。對于MSComm控件的其他一些屬性使用VB的默認值即可。
在串行通信傳輸?shù)膽弥?,經常使用的Visual Basic中的字符串處理函數(shù)如下: Chr函數(shù):返回含有特定ANSI或DBCS字符碼的字符串。Asc函數(shù):返回字符串第一個字符的ANSI或DBCS字符碼。
Len函數(shù):返回以字符數(shù)為單位的字符串長度。
Mid函數(shù):取得字符串中特定數(shù)量的字符,可指定開始獲取的位置和長度。Left函數(shù):取得字符串的左邊固定字符數(shù)的字符串。
Right函數(shù):取得字符串的右邊固定字符數(shù)的字符串。
Val函數(shù):把字符串轉換為數(shù)值,可以將8進制或16進制的字符串轉換為10進制。Hex函數(shù):返回以十六進制數(shù)值表示的字符串。
三菱PLC通訊
RS指令應用一
三菱PLC與計算機利用RS指令進行通訊(通訊手冊9-14例)三菱PLC:FX1N + FX1N-232-BD 計算機:Windows XP中文企業(yè)版 + Visual Basic 6.0中文企業(yè)版
Windows 98中文版 + Visual Basic 6.0中文企業(yè)版
兩者之間連接使用的是FX-232CAB-1電纜線(2-3,3-2,4-6(8),5-5)
一.三菱PLC的設置
三菱FX PLC在進行計算機鏈接(專用協(xié)議)和無協(xié)議通訊(RS指令)時均須對通訊格式(D8120)進行設定。其中包含有波特率、數(shù)據長度、奇偶校驗、停止位和協(xié)議格式等。在修改了D8120的設置后,確保關掉PLC的電源,然后再打開。在這里對D8120采用下述設置: b15 b0 0000 0100 1000 1111 0 4 8 F 即數(shù)據長度為8位,偶校驗,2位停止位,波特率為9600bps,無標題符和終結符,沒有添加和校驗碼,采用無協(xié)議。PLC程序如下:
二.上位機程序的編制
完整程序代碼及注釋如下:
Private Sub cmd1_Click()
'發(fā)送按鈕
lbl1.Caption = “" If txt1.Text = ”“ Then
'若發(fā)送數(shù)據欄中未鍵入指令則提示鍵入指令 lbl1.Caption = ”Please input data“ Else MSComm1.Output = txt1.Text
'發(fā)送指令 Timer1.Enabled = True
'觸發(fā)延時接收 End If
三菱PLC通訊
End Sub Private Sub Form_Load()
'窗體載入事件 MSComm1.CommPort = 1
'選擇端口號 MSComm1.Settings = ”9600,e,8,2“ '設置端口屬性 MSComm1.PortOpen = True
'打開端口 End Sub
Private Sub Timer1_Timer()
'延時500ms接收 NAK = Chr(&H15)If MSComm1.InBufferCount > 0 Then txt2.Text = ”“ a = MSComm1.Input txt2.Text = a
'在接收數(shù)據欄中顯示接收到的數(shù)據 Else lbl1.Caption = ”No response" End If Timer1.Enabled = False End Sub
三菱PLC通訊
RS指令應用二
三菱PLC與儀表之間通訊
三菱PLC:FX1N + FX1N-232-BD 儀表(稱重器)
兩者之間連線該儀表僅提供3線式的簡化RS-232C口,即只有:RXD,TXD和GND,于是采用2-3,3-2,5-5的三線接法。
1. 對D8120進行設置并使其與儀表中的設置一致,對其中的控制線設置成使用無硬件握手方式,即(b12,b11,b10)=(0,0,0)。根據儀表說明書上對通訊的要求,設置如下:
b15
b0 0000 0000 1000 0110
0 0 8 6 2. 根據儀表說明書所述,該種儀表有兩種工作方式:連續(xù)發(fā)送和指令狀態(tài)。這里設置成指令狀態(tài),即儀表根據發(fā)來的指令返回相應的數(shù)據。在此使用READ指令,根據指令協(xié)議,輸入的指令必須以
注:發(fā)送數(shù)據點數(shù)和接收數(shù)據點數(shù)必須按指令協(xié)議進行設置,否則通訊不能正常進行。PLC程序如下:
三菱PLC通訊
參考資料
1.三菱FX通訊用戶手冊(RS-232C,RS485)2.《Visual Basic與RS-232串行通信控制(最新版)》清華大學出版社
第四篇:三菱PLC編程實例PLC參考程序四
深圳稻草人自動化培訓 004km.cn
PLC參考程序四
程序一 交流電機Y/△形起動的控制
深圳稻草人自動化培訓 004km.cn
程序二 驅動步進電動機的控制
深圳稻草人自動化培訓 004km.cn
深圳稻草人自動化培訓 004km.cn
程序三
液壓成型的模擬控制
第五篇:國產PLC 海為(Haiwell)PLC與三菱PLC進行通訊
Haiwell(海為)PLC與三菱PLC通訊介紹
山東大風機電自動化 王倫
概述:本文主要介紹了海為PLC與三菱FX2N系列進行通訊的實驗情況。關鍵字:海為PLC FX2N 自由通訊 CRC校驗 第一部分:研究情況簡介
2012年的時候,我任某公司技術部部長,期間有個客戶需要與公司的某防護裝置進行通訊,需要使用海為PLC讀取三菱PLC上的某些數(shù)據。為此就對海為PLC與三菱PLC通訊問題展開實驗研究。
海為PLC通訊特點介紹:Haiwell PLC各種型號的主機都內置Modbus RTU/ASCII協(xié)議、自由通訊協(xié)議以及海為公司的HaiwellBus高速通訊協(xié)議。HaiwellBus高速通訊協(xié)議屬于海為PLC與海為PLC內部通訊協(xié)議,因此不能使用。能應用到對外通訊的是Modbus協(xié)議以及自由通訊協(xié)議。
三菱PLC通訊特點介紹:三菱PLC對外通訊為無協(xié)議自由通訊,用于與計算機,條形碼閱讀器,打印機等帶有RS232接口的設備進行全雙工方式的串行數(shù)據通訊。
如上圖所示,F(xiàn)X2N通過232IF與海為PLC的通訊擴展模塊相連,采用無協(xié)議通訊方式,帶CRC校驗,最多一次發(fā)送512字節(jié),接收256字節(jié)數(shù)據,通訊口資料格式設置為9600,N 8 2 RTU。
具體性能如下:
有效通訊距離:15米,實際試驗過。
數(shù)據響應時間:傳輸?shù)臄?shù)據越多,掃描周期越長,傳輸相應越慢。當前程序掃描周期為26ms,傳送0數(shù)據時為17ms,CRC校驗用時14ms。傳送一個字需要占用2ms。
發(fā)送的數(shù)據如上圖所示,F(xiàn)X2N的D199存放數(shù)據D200,D201,D202的CRC校驗碼,接收端PLC將接收到的D200,D201,202進行CRC校驗,若數(shù)據一致則說明通訊正常,允許接收數(shù)據。若不一致,則認為出現(xiàn)干擾,拒絕接收。D212中存放的是一個以秒為周期進行變化的十進制數(shù)據,若接收端PLC在2秒的時間內接收到的D211中的數(shù)據沒發(fā)生變化,則認為通訊中斷。
第二部分:FX2N通訊程序介紹
程序說明:該部分設置通訊格式和其他情況,具體情況參照通訊用戶手冊。本案例中取消發(fā)送報文,發(fā)送報尾,接收報頭,接收報尾,否則海為PLC接收 的數(shù)據為亂碼。
程序說明:激活發(fā)送指令,如果設置位M8012,則會發(fā)生發(fā)送數(shù)據響應不及時,部分時刻傳輸數(shù)據丟失的情況。M101繼電器用于下文TO指令傳送中。
程序說明:設置發(fā)送字節(jié)數(shù),要發(fā)送的數(shù)據
程序說明:對D200進行以10ma為周期的數(shù)據變化,以模擬數(shù)據變化。
程序說明:指令傳送
程序說明:以上為CRC校驗程序,介紹略。
程序說明:發(fā)送數(shù)據。第三部分:海為通訊程序介紹
程序說明:如果1秒接收的數(shù)據相同,則認為通訊中斷。第四部分:調試心得
在調試中,最大的困難來源于三菱PLC程序,需要編寫相當長的通訊指令以及CRC校驗程序,雖然在網絡上搜索到了上述程序的實例,但是編寫成自己的程序并且調試完畢,仍然花費了很長的時間。別人調試好的程序到你手里不一定能用,需要你再次調試。CRC校驗程序到底是怎么回事至今不明白,反正是抄寫來了,而且能用,幸好沒有抄錯。
海為PLC在進行通訊的時候就兩條指令,自由通訊指令COMM以及CRC校驗指令,簡單的不能再簡單,其他的程序都是很簡單的輔助程序。
在三菱PLC與海為PLC通訊成功的基礎上,為公司幾款主流安全防護設備用海為PLC增加了Modbus通訊功能。不僅組態(tài)王,易控等組態(tài)軟件可以與公司設備通訊,其他廠家設備中的PLC也可以與公司設備進行通訊,使得公司設備的應用更加靈活,更受用戶青睞。
海為PLC在組網通訊上確實是一大亮點,三菱PLC做這個通訊的時候寫了233條指令,用了三四天的功夫。海為PLC只用了2個指令??梢哉f海為PLC的出現(xiàn)讓通訊程序不再是難題。