上位机与PLC的通信与监控设计
//程序初始化:
procedure TForm1.Init_PLC(nPort:integer);
begin
if MSComm.PortOpen then
MSComm.PortOpen:=False;
MSComm.Commport:=nPort;
//通信端口选择
MSComm.Settings:='9600,e,7,1';
//1位起始位,7位数据位,偶效验,2位停止位,9600bps
MSComm.PortOpen:=True;//打开串口
end;
//FCS校验
function FCS(s:string):variant;
var
i,len,tmpVar:integer;
DataCheck:byte;
f1,f2:byte;
begin
f1:=0;
f2:=0;
DataCheck:=0;
len:=length(s);
tmpVar:=0;
for i:=1 to len do
begin
DataCheck:=ord(DataCheck) xor ord(s[i]);
end;
f1:=DataCheck and $0f;
f2:=DataCheck and $f0;
f2:=f2 shr 4;
result:=inttostr(f2)+inttostr(f1);
end;
procedure TForm1.HandShake_PLC;
var
tmpByte1,tmpByte2:char;
tmpVar:string;
s:string;
begin
Init_PLC(1);
nbs
p; s:=Edit1.text;
tmpVar:=s+inttostr(FCS(s))+'*'+chr(13);
MSComm.RThreshold:=0;
MSComm.Output:=tmpVar;
//向串口输出数据
sleep(1000);// 延时
tmpVar:=MSComm.Input;
//从串口读取数据
tmpByte1:=tmpVar[5];
tmpByte2:=tmpVar[6];
if tmpByte1=chr(48) tmpByte2:=chr(48);
//校验码等于00,PLC正常完成操作
then
begin
Showmessage('发送的数据正确');
else
Showmessage('发送的数据有问题');
//end;
end;
编写通信程序建立了上位机与PLC的连接.在PLC的任何工作方式下都可以通过”读”指令读取PLC的状态.从而对PLC进行监视.只有当PLC的工作方式为监视的情况下才可以通过上位机对PLC进行控制.所以在需要上位机实施控制的系统里面PLC都必须设置为监视工作方式.
上位机只需要设置PLC的相应工作位就可以实现对PLC的控制.下图为PLC上位机控制过程。图a表示PLC 正常工作时输出由输入0.00控制,当需要把PLC的控制转由上位机控制时,只需要通过向PLC输入@00RR00030001,置3.00为ON,切断0.00的通路,这样输出10.00就转由4.00控制,当输入@00WR00040001时,4.00为ON,输出位10.00产生输出。
(a) PLC正常工作
(b)上位机控制
图6 PLC的上位机控制
5结束语
本文探讨了实现PLC的上位链接系统通信的方法,以及要实现上位机对下PLC控制的PLC编程。通过上位机对PLC的监视与控制,可用方便的实现工厂生产过程的自动化监控。
参考文献
[1] 弭洪涛,毕国忠等.PLC应用技术.北京:中国电力出版社2004
[2] 宋伯生.PLC编程理论 算法及技巧. 北京:机械工业出版社2006
评论