當前位置:機電之家首頁 >> PLC技術(shù)>> plc應用 >> 松下plc應用 >> C#與松下FP∑可編程控制器的通信
C#與松下FP∑可編程控制器的通信

摘要

  本文介紹了通過引進ActiveX控件MSComm,利用C#語言編程,實現(xiàn)上位機與松下FPG-C24R2 PLC的通信,并給出了工程實例。該方法簡單可靠、便于移植、實用性強,在工業(yè)控制中有著廣泛的用途。

關(guān)鍵詞:C# 串口通信 實時監(jiān)控 ActiveX 控件

Abstract:A bbbbbb of serial communication between Host-computer and NAIS FPG-C24R2 PLC via introducing ActiveX component MSComm by C# programming has introduced in this paper,and also presents practical project.This bbbbbb is simple、reliable and easy to transplant,and its has high application value.

Key words: C# serial communication real-time monitoring ActiveX component

一、前言
  C#語言是.NET技術(shù)的核心開發(fā)語言,是一種簡單、現(xiàn)代、面向?qū)ο蠛皖愋桶踩木幊陶Z言,它實現(xiàn)了快速應用程序開發(fā)、跨平臺部署,能夠訪問平臺固有的資源,支持COM和.NET技術(shù),具有C++語言的強大功能、Java語言的跨平臺特性和Delphi語言的方便快捷等眾多的優(yōu)秀品質(zhì)。FP∑是日本松下電工株式會社生產(chǎn)的小型可編程序控制器,它有許多規(guī)格,具有體積小、重量輕、功能齊全、編程簡單、價格便宜等優(yōu)點,在工業(yè)控制中應用十分廣泛。 本文在bbbbbbs xp下用Visual Studio .NET 2003編制一個簡單的通信程序,探討使用MSComm控件對FPG-C24R2 PLC進行串行通信的實現(xiàn)方法。

二、ActiveX控件的引入
  你必須有Mscomm.srg, Mscomm32.ocx,Mscomm32.dep文件在你的bbbbbbs的System目錄下(注意WinNT下是System32),而且它必須正確的注冊。你可以裝VB6.0來獲得,安裝VB.6.0后,MSComm控件就自動在你的計算機上注冊了,這比手工注冊控件省事多了,Visual.Studio.NET2003在項目工程中(Solution)插入MSComm控件的具體步驟:新建程序后,點擊Tools(工具)-->Add/Remove Toolbox items(添加/移除工具箱項)就打開了Customize Toolbox(自定義工具箱)對話框,再選擇COM Components(COM組件)項,并在出現(xiàn)控件中就可以找到Microsoft Communications Control,version 6.0,選上該項,再點擊"OK",就會在Toolbox控件工具箱中看到MSComm控件的電話圖標了,將它拖到窗體(bbbb)就可以了。

三、通信協(xié)議
  FP∑系列PLC通信系統(tǒng)的基本協(xié)議是松下電工的專用通信協(xié)議-MEWTOCOL;PLC與計算機的通信協(xié)議是MEWTOCOL-COM。該協(xié)議采用異步通信方式,其波特率有300bps、600bps、1200bps、2400bps、4800bps、9600bps、19200bps、38400bps、57600bps、115200bps等多種可選,且報文長度可變可固定。該方式通信協(xié)議如下:
圖1和圖2分別為上位機發(fā)送的上位機鏈接命令幀讀DM區(qū)數(shù)據(jù)的命令格式和由PLC返回的應答幀格式。當PLC接收到從上位機發(fā)來的ASCII碼命令時自動返回ASCII碼應答。

  其中,%為起始符,標記每一幀報文的開始,CR為結(jié)束符,標記每一幀報文的結(jié)束,BCC為兩字節(jié)的幀校驗碼FCS,它是從開始符"%"到正文結(jié)束的所有字符的ASCII碼按位異或的結(jié)果,HL為PLC的站地址,為兩位16進制數(shù),如00則表示第一臺PLC。#、$標注該幀報文為何種類型,上位機的命令幀由不固定的字節(jié)數(shù)組成,針對不同的識別碼有不同的幀長度。但基本格式大體一致。

四、編程實現(xiàn)
  啟動Visual.Studio.NET2003,便可進入Visual C#.NET窗口環(huán)境,建立bbbbbbs應用程序,建立項目名稱(complc),生成項目窗體(combbbb)。在窗體上添加通信按鈕button1、退出按鈕button2,并在工具箱bbbbbbs窗體控件欄選中Microsoft Communications Control,version 6.0控件,如圖3。

代碼如下:
using System;
using System.Text;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.bbbbbbs.bbbbs;
using System.Data;
namespace complc
{
	/// <summary>
	/// bbbb1 的摘要說明。
	/// </summary>
	public class combbbb : System.bbbbbbs.bbbbs.bbbb
	{
		private AxMSCommLib.AxMSComm axMSComm1;
		private System.bbbbbbs.bbbbs.TextBox textBox1;
		private System.bbbbbbs.bbbbs.TextBox textBox2;
		private System.bbbbbbs.bbbbs.Button button1;
		private System.bbbbbbs.bbbbs.Button button2;
		private System.bbbbbbs.bbbbs.Label label1;
		private System.bbbbbbs.bbbbs.Label label2;
		/// <summary>
		/// 必需的設(shè)計器變量。
		/// </summary>
		private System.ComponentModel.Container components = null;
		public combbbb()
		{
			// bbbbbbs 窗體設(shè)計器支持所必需的
			InitializeComponent();
			// TOD 在 InitializeComponent 調(diào)用后添加任何構(gòu)造函數(shù)代碼
		}
		/// <summary>
		/// 清理所有正在使用的資源。
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}
		/// bbbbbbs 窗體設(shè)計器生成的代碼
		/// <summary>
		/// 應用程序的主入口點。
		/// </summary>
		[STAThread]
			static void Main()
		{
			Application.Run(new combbbb());
		}
		private void button1_Click(bbbbbb sender, System.EventArgs e)
		{
			bbbbbb ms,rd = "" ;
			int i;
			if (!axMSComm1.PortOpen)
				axMSComm1.PortOpen = true;  //打開串口
			axMSComm1.bbbbbLen = 0; //清除接收緩沖區(qū)
			axMSComm1.DTREnable = true;  //置DTR有效
			axMSComm1.RTSEnable = true;  //置RTS有效
			axMSComm1.bbbbbMode = MSCommLib.bbbbbModeConstants.combbbbbModeText; //置為二進制輸入方式
			axMSComm1.RThreshold = 1;  //設(shè)置為接收緩沖區(qū)每接收一個字符將引發(fā)一次OnComm事件
			ms=textBox1.Text;  // 輸入如:%01#RDD9001590016或%01#RDD0100601036
			axMSComm1.Output = ms+tobcc(ms)+(char)13;
			// sleep(30);
			rd += axMSComm1.bbbbb;
			textBox2.Text = rd;
		}
		private void combbbb_Load(bbbbbb sender, System.EventArgs e)
		{
			axMSComm1.CommPort = System.Convert.ToInt16(1);    //設(shè)為com1
			axMSComm1.Settings = "9600,n,8,1";
		}
		public bbbbbb tobcc(bbbbbb s)    //幀校驗函數(shù)FCS
		{
			int t = 0;
			char[] chars = s.ToCharArray();
			for(int i = 1;i <= s.Length-1;i++)
			{
				t = t^=(char)chars[i];
			}
			return t.Tobbbbbb().Subbbbbbb(1,2);
		}
		private void button2_Click(bbbbbb sender, System.EventArgs e)
		{
			Application.Exit(); 
		}
	}
}		
五、結(jié)論
  本文所有程序均在bbbbbbs XP, Visual.Studio.NET2003環(huán)境中調(diào)試通過,該通信方式簡單,通信十分穩(wěn)定可靠,從而在工業(yè)控制的小型監(jiān)控系統(tǒng)中有著廣闊的應用前景。讀者可在本文的基礎(chǔ)上,參考松下公司的MEWTOCOL-COM協(xié)議,便可輕松實現(xiàn)PC與松下FP∑系列PLC的通信,以完成上位機對PLC的監(jiān)視與控制。

六、參考文獻

[1] 李國厚,張發(fā)玉,侯鐵兵. PLC原理與應用.清華大學出版社,2005.7
[2] 余雷聲,方宗達.電氣控制與PLC應用.機械工業(yè)出版社,2003.1
[3] 李樹雄,李全利.可編程序控制器原理及應用教程.北京航空航天大學出版社,2003.9
[4] 曹祖圣,吳明哲,林兆燊,黃世陽,林義證,蔡文龍 Visual C#.NET程序設(shè)計經(jīng)典 科學出版社,2004.1
[5] 李澤,陳彬,唐俊翟,張曜 C#函數(shù)實用手冊 冶金工業(yè)出版社,2006.2

作者:未知 點擊:2953次 [打印] [關(guān)閉] [返回頂部]
本文標簽:C#與松下FP∑可編程控制器的通信
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報酬未能及時支付,在此深表歉意,請《C#與松下FP∑可編程控制器的通信》相關(guān)權(quán)利人與機電之家網(wǎng)取得聯(lián)系。
電子樣本

SN系列樣冊
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個人求購

吳小姐 【求購】  粉碎機  2025-12-5
 【求購】  冶煉用的重...  2025-12-5
柳女士 【求購】  斷路器  2025-12-5
林志揚 【求購】  無石棉墊片  2025-12-4
張一帆 【求購】  首件測試儀  2025-12-4
王飛 【求購】  gf流量計  2025-12-4
 【求購】  全自動印刷...  2025-12-4
 【求購】  LED屏  2025-12-3
VIP公司推薦