aquze123
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 80 点
下载积分: 506 分
在线时间: 8(小时)
注册时间: 2018-11-14
最后登录: 2019-07-11
查看aquze123的 主题 / 回贴
楼主  发表于: 2019-04-22 19:04
各位大佬好~

有个问题请教一下,有不正确的地方希望指出。

FX3U-485ADP-MB我这么接应该是CH2对吧,FX3U外接了一个FX3U-422-BD板和FX3U-485ADP-MB。

现在的接法是通过一个232转485转接器接到电脑上,RDA短接接SDA接转接器的485+,RDB短接SDB接转接器的485-,然后在PLC的Main程序里加了这段,把PLC作为从站。



但是呢,这样子,串口调试工具,波特率19200,数据位8,无校验,停止位1,连接串口没反应。
[upload=2]

我自己分析,有几个可能的原因。
(1)附加到PLC的程序错误,我按说明书从站的例程写的,把寄存器从CH1的改为CH2的,应该没啥问题吧?
(2)接线问题,看到有大佬接线的时候,把SG接到232转485的地上,我们这边也很多232和485设备,不接地不好,但一般也能用吧。
(3)串口调试参数有问题,或者发的指令有问题。

因为自己是刚入门,也是看着资料一步步过来,整个上位机,其他感觉也不难,但现在就卡在串口通讯这一块了,好久了~

希望大佬们指点一下~
aquze123
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 80 点
下载积分: 506 分
在线时间: 8(小时)
注册时间: 2018-11-14
最后登录: 2019-07-11
查看aquze123的 主题 / 回贴
1楼  发表于: 2019-04-22 19:10
另外,我现在用FX3U-422-BD板通讯已经正常了,但因为不支持modbus,只支持无协议通讯。
当时是不知道真实地址是怎么样的,也不太熟悉无协议通讯,现在这个FX3U-485ADP-MB模块也没搞明白。
找了论坛有个老哥,无协议通讯的地址转换关系好像是这样的。
1、对于D区:
ADDR0小于8000:ADDR=1000H+ADDR0×2(ADDR0为实际地址值)
ADDR0大于8000:ADDR=0E00H+(ADDR0-8000)×2
2、对于C区:
字与双字:
ADDR0小于200:ADDR=0A00H+ADDR0×2
ADDR0大于等于200为双字逆计数器,则:
ADDR=0C00H+(ADDR0-200)×4
3、对于T区:
字:ADDR=0800H+ADDR0×2
位:ADDR=00C0H+ADDR0×2
4、对于M区:
ADDR0<8000:ADDR=0100H+ADDR0/8
ADDR0>=8000:ADDR=01E0H+(ADDR0-8000)/8
5、对于Y区
ADDR=00A0H+ADDR0/8
6、对于X区
ADDR=0080H+ADDR0/8
7、对于S区
ADDR=ADDR0/8

比如我D200,是一个16-bit Signed    的数据,他的真实地址就是1000H+200*2=1400H吗?
aquze123
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 80 点
下载积分: 506 分
在线时间: 8(小时)
注册时间: 2018-11-14
最后登录: 2019-07-11
查看aquze123的 主题 / 回贴
2楼  发表于: 2019-04-22 20:42
那段PLC从站程序我加到Main里面,好像我自己的程序就失效了,emmm~
aquze123
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 80 点
下载积分: 506 分
在线时间: 8(小时)
注册时间: 2018-11-14
最后登录: 2019-07-11
查看aquze123的 主题 / 回贴
3楼  发表于: 2019-04-23 11:48
做着,都不太想做这个上位机了,都是坑啊~
没有解除过工控上位机,唉,要是我当时没让供应商选三菱的PLC,选个国产的海为,西门子都好呀·
三菱的太麻烦了
aquze123
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 80 点
下载积分: 506 分
在线时间: 8(小时)
注册时间: 2018-11-14
最后登录: 2019-07-11
查看aquze123的 主题 / 回贴
4楼  发表于: 2019-04-23 19:56
emmm,有偿援助可以不~
aquze123
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 80 点
下载积分: 506 分
在线时间: 8(小时)
注册时间: 2018-11-14
最后登录: 2019-07-11
查看aquze123的 主题 / 回贴
5楼  发表于: 2019-04-25 09:23
引用
引用第7楼六六的风于2019-04-24 11:50发表的  :
M8411是通讯参数设置特殊继电器,需要放到你程序的开头才会有效吧,记得好像是这样的,你试一下吧



您好,我现在把程序写在Main的开头,监控查看D8420的数值为4225,转为二进制1000010000001000,对应的应该是8位,无校验,停止位1,波特率19200,RS-485c。

这样子应该是成功的吧,但是串口调试工具好像还是没反应,我的CH1是422-BD板,应该也支持扩展485ADP-MB的吧~
aquze123
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 80 点
下载积分: 506 分
在线时间: 8(小时)
注册时间: 2018-11-14
最后登录: 2019-07-11
查看aquze123的 主题 / 回贴
6楼  发表于: 2019-04-26 17:28
非常感谢各位的帮助,后来经过测试,存在两个问题。
(1)少写了一行写入MOV K10 D8431,并且D8420寄存器,应该是MOV H1081 D8420,
(2)另外因为这个程序顺序执行是是从SD-RUN开始,程序没有在开头。

总之调试成功很开心,非常感谢坛友的帮助,后续有进展再回来回复。
aquze123
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 80 点
下载积分: 506 分
在线时间: 8(小时)
注册时间: 2018-11-14
最后登录: 2019-07-11
查看aquze123的 主题 / 回贴
7楼  发表于: 2019-05-13 13:43
引用
引用第9楼twingo49于2019-04-25 11:34发表的  :
4225 轉二進制應該是 0001 0000 1000 0001所以你的波特率應該是9600,還有你的設定是從站,站號為4。


在加入MODBUS通讯代码以后,原程序异常,出问题的地方,其实也很基础,例程里最后一行,MOV K100 D8436,就是让通信计数器-通信事件日志的存储起始软元件从D100开始,但是D100已经被原程序占用,改成K500,从D500开始,就没有冲突问题了。


因为PLC源码是供应商提供的,程序本身我们其实也没有动过其他的,没有检查元器件表占用情况。

总之,PLC程序还是得供应商改,但是对于发生错误的原因是记住了。