科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C#与松下FP∑可编程控制器的通信

C#与松下FP∑可编程控制器的通信

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了通过引进ActiveX控件MSComm,利用C#语言编程,实现上位机与松下FPG-C24R2 PLC的通信,并给出了工程实例。

作者:彭朝威 来源:vckbase 2007年11月11日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
四、编程实现

  启动Visual.Studio.NET2003,便可进入Visual C#.NET窗口环境,建立Windows应用程序,建立项目名称(complc),生成项目窗体(comForm)。在窗体上添加通信按钮button1、退出按钮button2,并在工具箱Windows窗体控件栏选中Microsoft Communications Control,version 6.0控件,如图3。



  代码如下:
using System; 
using System.Text; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.Data; 
namespace complc 
{ 
 /// <summary> 
 /// Form1 的摘要说明。 
 /// </summary> 
 public class comForm : System.Windows.Forms.Form 
 { 
  private AxMSCommLib.AxMSComm axMSComm1; 
  private System.Windows.Forms.TextBox textBox1; 
  private System.Windows.Forms.TextBox textBox2; 
  private System.Windows.Forms.Button button1; 
  private System.Windows.Forms.Button button2; 
  private System.Windows.Forms.Label label1; 
  private System.Windows.Forms.Label label2; 
  /// <summary> 
  /// 必需的设计器变量。 
  /// </summary> 
  private System.ComponentModel.Container components = null; 
  public comForm() 
  { 
   // Windows 窗体设计器支持所必需的 
   InitializeComponent(); 
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 
  } 
  /// <summary> 
  /// 清理所有正在使用的资源。 
  /// </summary> 
  protected override void Dispose( bool disposing ) 
  { 
   if( disposing ) 
   { 
    if (components != null)  
    { 
     components.Dispose(); 
    } 
   } 
   base.Dispose( disposing ); 
  } 
  /// Windows 窗体设计器生成的代码 
  /// <summary> 
  /// 应用程序的主入口点。 
  /// </summary> 
  [STAThread] 
   static void Main() 
  { 
   Application.Run(new comForm()); 
  } 
  private void button1_Click(object sender, System.EventArgs e) 
  { 
   string ms,rd = "" ; 
   int i; 
   if (!axMSComm1.PortOpen) 
    axMSComm1.PortOpen = true;  //打开串口 
   axMSComm1.InputLen = 0; //清除接收缓冲区 
   axMSComm1.DTREnable = true;  //置DTR有效 
   axMSComm1.RTSEnable = true;  //置RTS有效 
   axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeText; //置为二进制输入方式 
   axMSComm1.RThreshold = 1;  //设置为接收缓冲区每接收一个字符将引发一次OnComm事件 
   ms=textBox1.Text;  // 输入如:%01#RDD9001590016或%01#RDD0100601036 
   axMSComm1.Output = ms+tobcc(ms)+(char)13; 
   // sleep(30); 
   rd += axMSComm1.Input; 
   textBox2.Text = rd; 
  } 
  private void comForm_Load(object sender, System.EventArgs e) 
  { 
   axMSComm1.CommPort = System.Convert.ToInt16(1);    //设为com1 
   axMSComm1.Settings = "9600,n,8,1"; 
  } 
  public string tobcc(string s)    //帧校验函数FCS 
  { 
   int t = 0; 
   char[] chars = s.ToCharArray(); 
   for(int i = 1;i <= s.Length-1;i++) 
   { 
    t = t^=(char)chars[i]; 
   } 
   return t.ToString().Substring(1,2); 
  } 
  private void button2_Click(object sender, System.EventArgs e) 
  { 
   Application.Exit();  
  } 
 } 
}  
  五、结论

  本文所有程序均在Windows XP, Visual.Studio.NET2003环境中调试通过,该通信方式简单,通信十分稳定可靠,从而在工业控制的小型监控系统中有着广阔的应用前景。读者可在本文的基础上,参考松下公司的MEWTOCOL-COM协议,便可轻松实现PC与松下FP∑系列PLC的通信,以完成上位机对PLC的监视与控制。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章