我要发布
仪器网/ 仪器社区/ RTU/ 两个不同PLC之间通过rs485(modbus RTU)通信...

两个不同PLC之间通过rs485(modbus RTU)通信的问题

cjh180929    2017-09-29    RTU    浏览 651 次

我们实验用了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;
但是程序一直没有收到数据,不知道是哪里错了
能否给予解答?
有没有相关的说明文件给予参考

精彩问答
木鱼来了aCh2i 发布日期:2018-04-06
由于你没有说两个PLC的具体型号!设置上真的是不好说什么了
需要注意的是两个PLC设置上要一致!宏文件奥相互对应!可以再PLC的一边监视下
特别要看下接口(也就是通讯电缆)是不是一致,建议两个PLC分别监视下!这样很快就知道问题究竟在哪里了!
能帮你的也就是这么多!!!希望可以帮到你!祝好运!!!
全部评论
风格和方式 发布日期:2017-09-30
我实验成功了欧姆龙与松下的PLC进行modbus RTU通讯,首先需要知道两个PLC的端口是否支持主从通讯,欧姆龙的只能做主站,松下的做主从站都可以。这个确定之后就可以确定由谁发起通讯了,通讯协议需要注意的是,modbus RTU的数据格式、功能代码格式。不同的功能代码发送数据格式不一样。
最新主题
相关版块
我要评论
X您尚未登录
账号登录
X您尚未登录
手机动态密码登录
X您尚未登录
扫码登录
官方微信

仪器网微信服务号

扫码获取最新信息


仪器网官方订阅号

扫码获取最新信息

在线客服

咨询客服

在线客服
工作日:  9:00-18:00
联系客服 企业专属客服
电话客服:  400-822-6768
工作日:  9:00-18:00
订阅商机

仪采招微信公众号

采购信息一键获取海量商机轻松掌控