我用松下PCL的FPG-C24R2、FP0-A21,在用delphi读取DT1105至DT1107中的数据时plc返回的响应消息是:%01!4001,不知错在那

  • 主题发起人 主题发起人 gxpcw
  • 开始时间 开始时间
G

gxpcw

Unregistered / Unconfirmed
GUEST, unregistred user!
我用松下PCL的FPG-C24R2、FP0-A21,在用delphi读取DT1105至DT1107中的数据时plc返回的响应消息是:%01!4001,不知错在那里? ( 积分: 50 )<br />我用DELPHI读取PCL的DT1105至DT1107中的数据的命令消息如下:
%01#RDD011050110757\r
PLC返回的响应消息如下:%01!4001。
开始通信代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
if not(MSComm1.PortOpen) then
MSComm1.PortOpen:=True; //打开串口
MSComm1.InputLen:=0; //清除接收缓冲区
MSComm1.DTREnable:=True; //置DTR有效
MSComm1.RTSEnable:=True; //置RTS有效
MSComm1.InputMode:=ComInputModeText; //置为二进制输入方式
//设置为接收缓冲区每接收一个字符将引发一次OnComm事件
MSComm1.RThreshold:=1;
MSComm1.Output:='%01#RD6400C8006FCR'+chr(13); // %01#RDD0100601036
end;

OnComm事件:
procedure TForm1.MSComm1Comm(Sender: TObject);
var
PLCData:string;
begin
if MSComm1.CommEvent=2 then
PLCData:=MSComm1.Input;
Memo1.Lines.Text:=Memo1.Lines.Text+PLCData;
end;
在%01!4001中的40是个错误代码,01是BCC码对吗?
 
我用DELPHI读取PCL的DT1105至DT1107中的数据的命令消息如下:
%01#RDD011050110757\r
PLC返回的响应消息如下:%01!4001。
开始通信代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
if not(MSComm1.PortOpen) then
MSComm1.PortOpen:=True; //打开串口
MSComm1.InputLen:=0; //清除接收缓冲区
MSComm1.DTREnable:=True; //置DTR有效
MSComm1.RTSEnable:=True; //置RTS有效
MSComm1.InputMode:=ComInputModeText; //置为二进制输入方式
//设置为接收缓冲区每接收一个字符将引发一次OnComm事件
MSComm1.RThreshold:=1;
MSComm1.Output:='%01#RD6400C8006FCR'+chr(13); // %01#RDD0100601036
end;

OnComm事件:
procedure TForm1.MSComm1Comm(Sender: TObject);
var
PLCData:string;
begin
if MSComm1.CommEvent=2 then
PLCData:=MSComm1.Input;
Memo1.Lines.Text:=Memo1.Lines.Text+PLCData;
end;
在%01!4001中的40是个错误代码,01是BCC码对吗?
 
^_^ 俺是新手,不知道
 
后退
顶部