我们实验用了ABB ac500 pm592 ,与别人西门子的s7-200通过RS485进行通信,我是主,他做从 我用了AC500的cpu的com1,接的是2,3口, 两边的com设置都是9600波特率,8数据位,偶校验,1停止位 主PLC程序如下: BLINK1(ENABLE:=TRUE , TIMELOW:=T... 我们实验用了ABB ac500 pm592 ,与别人西门子的s7-200通过RS485进行通信,我是主,他做从
我用了AC500的cpu的com1,接的是2,3口,
两边的com设置都是9600波特率,8数据位,偶校验,1停止位
主PLC程序如下:
BLINK1(ENABLE:=TRUE , TIMELOW:=T#1s , TIMEHIGH:=T#1s , OUT=> );
COM_MOD_MAST_receive3(
EN:=BLINK1.OUT ,
COM:=1 ,(*接口编号*)
SLAVE:= 2,(*从站IP地址,变压器作为MODBUS_RTU从站*)
FCT:=03,(*读N个字*)
TIMEOUT:=1000,
ADDR:=40001,(*要读取的从站寄存器首地址MODBUS*)
NB:=41 ,(*要读取从站的数据个数,对于位存取NB中规定位的个数,对于字和双字存取,在NB中规定字的个数*)
DATA :=ADR(ETH_REC_DATA2) ,(*主站存储区首地址,从从站读取的数据放在该地址*)
DONE=> ,
ERR=> ,
ERNO=>);
xx:=COM_MOD_MAST_receive3.ERNO;
IF COM_MOD_MAST_receive3.DONE=TRUE AND COM_MOD_MAST_receive3.ERR=FALSE THEN
read3_success_num:=read3_success_num+1;
IF read3_success_num>5000 THEN
read3_success_num:=0;
END_IF;
END_IF;
但是程序一直没有收到数据,不知道是哪里错了
能否给予解答?
有没有相关的说明文件给予参考
我实验成功了欧姆龙与松下的PLC进行modbus RTU通讯,首先需要知道两个PLC的端口是否支持主从通讯,欧姆龙的只能做主站,松下的做主从站都可以。这个确定之后就可以确定由谁发起通讯了,通讯协议需要注意的是,modbus RTU的数据格式、功能代码格式。不同的功能代码发送数据格式不一样。