西门子200PLC通信 ppi协议-delphi 点击:1009 | 回复:2



lkl_xz

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-06-26 22:23:49
楼主


由于不知如何上传文件,所以只能贴上代码了
1、本程序仅用于工控爱好者交流使用,鄙视用于商业的行径
2、已开发出西门子s7-300plc的通信控件,可以与西门子各种型号plc进行
通信。期望与感兴趣的同仁进行交流。

作者邮箱:lkl_xz@163.com
qq:57476662

2008.06.25
*****************************说明**********************

1\上位机通过串口与西门子200通信,基于ppi协议,pc-ppi编程电缆
2\主要基于v区进行通信,实际应用中足够了,故没有对其他区进行操作
3\要点:
1)一次读取v区多个字节,
2)v区的位操作:置位和复位,在第1个文本框中输入v区地址,在第2个文本框中输入位地址,如程序默认的地址是 V0.0
3)写一个字
4\注意:
实际应用中一次最多可以读取v区55个字节,否则会造成读取失败
5\安装:
附带MSCOMM32串口通信控件的安装程序。

×××××××××××××××××××××××××××××××××××××

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MSCommLib_TLB, OleCtrls;

type
TForm1 = class(TForm)
MSComm1: TMSComm;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
StaticText1: TStaticText;
StaticText2: TStaticText;
Button3: TButton;
Edit3: TEdit;
Button4: TButton;
StaticText3: TStaticText;
Button7: TButton;
Button8: TButton;
Button10: TButton;
Button5: TButton;
Button11: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
str_write,str_val,CommRecvTxt: array of Byte;
Temp_FCS: byte;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
tmp: string;
begin
memo1.Lines.Add('W--------------------------');
SetLength(str_write,38);
str_write【0】 := byte($68);
str_write【1】 := byte($20); //package len
str_write【2】 := byte($20); //package len repeated
str_write【3】 := byte($68);
str_write【4】 := byte($02); //plc station no
str_write【5】 := byte($00); //pc default zero
str_write【6】 := byte($7C); //6c read, 7c write
str_write【7】 := byte($32);
str_write【8】 := byte($01);
str_write【9】 := byte($00);
str_write【10】 := byte($00);
str_write【11】 := byte($00);
str_write【12】 := byte($00);
str_write【13】 := byte($00);
str_write【14】 := byte($0E);
str_write【15】 := byte($00);
str_write【16】 := byte($05);
str_write【17】 := byte($05);
str_write【18】 := byte($01);
str_write【19】 := byte($12);
str_write【20】 := byte($0A );
str_write【21】 := byte($10);

//*****************************************8
str_write【22】 := byte($02);
str_write【23】 := byte($00);
str_write【24】 := byte($01);// data len
str_write【25】 := byte($00);
str_write【26】 := byte($01);
str_write【27】 := byte($84);// 04S ,05SM ,06AI ,07AQ ,1E C ,81I ,82Q ,83M ,84V ,1F




fancongling

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2009年3月17日
发表于:2009-10-14 18:42:57
1楼

我是个新手,基本看不懂,能解释详细一点吗?如果能把程序弄来看看,那是最好不过了,我的qq是532515198,谢谢仁兄哦我很想学习这个,

 

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-10-15 16:35:45
2楼

访问S7-200,高级语言,我用OPC接口,虽多了个PC ACCESS,

但简单呀。

用PPI协议,谁能看得懂呀,要编成模块化,才能调用方便。


热门招聘
相关主题

官方公众号

智造工程师