仪器社区

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

cjh180929 2017-09-29
我们实验用了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
由于你没有说两个PLC的具体型号!设置上真的是不好说什么了
需要注意的是两个PLC设置上要一致!宏文件奥相互对应!可以再PLC的一边监视下
特别要看下接口(也就是通讯电缆)是不是一致,建议两个PLC分别监视下!这样很快就知道问题究竟在哪里了!
能帮你的也就是这么多!!!希望可以帮到你!祝好运!!!
15 0 2018-04-06 0条评论 回复
风格和方式
我实验成功了欧姆龙与松下的PLC进行modbus RTU通讯,首先需要知道两个PLC的端口是否支持主从通讯,欧姆龙的只能做主站,松下的做主从站都可以。这个确定之后就可以确定由谁发起通讯了,通讯协议需要注意的是,modbus RTU的数据格式、功能代码格式。不同的功能代码发送数据格式不一样。
3 0 2017-09-30 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论