leonhuang
级别: 略有小成
精华主题: 0
发帖数量: 59 个
工控威望: 202 点
下载积分: 3933 分
在线时间: 37(小时)
注册时间: 2013-06-27
最后登录: 2023-11-09
查看leonhuang的 主题 / 回贴
楼主  发表于: 2019-07-04 11:27
描述:通讯读写格式
图片:
描述:仪表设定
图片:
描述:仪表通讯方式设定
图片:
描述:仪表数据存取地址
图片:
描述:编写的程序1
图片:
描述:编写的程序2
图片:
不懂通讯的菜鸟,请各位大佬教教我。
通讯格式我看了些资料,有基本的认识。但是在编写程序的过程中有一些不懂。
一、就编写程序是用8位还是16位即M8161的选择。因为我T3仪表(图片:仪表数据存取地址,功能地址40005,毛重;占两个寄存器、32位,4字节有符号只读)的寄存器是否影响位数与RS指令的编写?
二:编写数据格式,{RS D0 Kn D30 Kn},Kn的个数如何确定。如[MOV H1 D0]   [MOV H3 D1]   [MOV H5 D2]   [MOV H2 D3]    [MOV H核验码? D4] 那这样是不是就5个。8位与16位数据格式,地址码到校验码个数是否不一样?
三、8位和16位的格式,D0(b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0),8位是处理b0-b7;16位是处理b0-b15。 8位的编写:[MOV H1 D0]   [MOV H3 D1]   [MOV H5 D2]  [MOV H2 D3] 在第一点中说的功能地址0005占两个寄存器、共4个字节、32位;那数据个数这样编写是不是就有问题了?    16位的编写:[MOV H1 D0]   [MOV H3 D1]   [MOV H5 D2]   [MOV H2 D3]
三、CRC校验如何编写,我这个程序的CRC校验码是什么?
四、回传数据的处理。回传回来的数据是放在D33、D34中,还是D33、D34、D35、D36中?[MOV D30 D50 K10 ] 如果是16位处理,那数据是放在D53与D54,那程序:[MOV D54 K4M10]   [MOV D53 K4M26]    [MOV K4M10 D100]最终数据存在D100、D101中?    这样的理解是不是有问题?
[ 此帖被leonhuang在2019-07-04 14:06重新编辑 ]
anlyl2014
大吉大利
级别: 网络英雄
精华主题: 0
发帖数量: 965 个
工控威望: 8865 点
下载积分: 2180 分
在线时间: 889(小时)
注册时间: 2014-05-23
最后登录: 2024-04-23
查看anlyl2014的 主题 / 回贴
1楼  发表于: 2019-07-04 13:44
你可以参考我发的例子,
你有PDF格式的压力表手册的话,就传上来看看,贴图看不清楚
活到老,学到老!
微信号:anjjyy2013
添加时注明来自工控人家园
压缩包用WINRAR打开,没密码
leonhuang
级别: 略有小成
精华主题: 0
发帖数量: 59 个
工控威望: 202 点
下载积分: 3933 分
在线时间: 37(小时)
注册时间: 2013-06-27
最后登录: 2023-11-09
查看leonhuang的 主题 / 回贴
2楼  发表于: 2019-07-04 14:54
DS822-T3重量变送器PDF
描述:DS822-T3重量变送器
附件: 重量变送器.pdf (2479 K) 下载次数:177
网站提示: 请不要用迅雷下载附件,容易出错
leonhuang
级别: 略有小成
精华主题: 0
发帖数量: 59 个
工控威望: 202 点
下载积分: 3933 分
在线时间: 37(小时)
注册时间: 2013-06-27
最后登录: 2023-11-09
查看leonhuang的 主题 / 回贴
3楼  发表于: 2019-07-04 15:04
我看了写的关于FX3U使用FX3U_485_BD与台达变频器通讯的实例。其中FX3U-MODBUS-RTU-TEST的程序里有CRC校验的相关程序,学习了,若有问题再请教 大侠
leonhuang
级别: 略有小成
精华主题: 0
发帖数量: 59 个
工控威望: 202 点
下载积分: 3933 分
在线时间: 37(小时)
注册时间: 2013-06-27
最后登录: 2023-11-09
查看leonhuang的 主题 / 回贴
4楼  发表于: 2019-07-04 15:13
自已写的程序,请大侠看一下哪儿有问题
附件: 与T3仪表FX3U-MODBUS RTU.zip (175 K) 下载次数:180
网站提示: 请不要用迅雷下载附件,容易出错
anlyl2014
大吉大利
级别: 网络英雄
精华主题: 0
发帖数量: 965 个
工控威望: 8865 点
下载积分: 2180 分
在线时间: 889(小时)
注册时间: 2014-05-23
最后登录: 2024-04-23
查看anlyl2014的 主题 / 回贴
5楼  发表于: 2019-07-06 14:30
如果你用的是FX3U就照着我的例子做,FX3U有CRC指令,程序相对简单
http://www.ymmfa.com/job-gkaction-download-pid-tpc-tid-1666109-aid-232721.html
活到老,学到老!
微信号:anjjyy2013
添加时注明来自工控人家园
压缩包用WINRAR打开,没密码
anlyl2014
大吉大利
级别: 网络英雄
精华主题: 0
发帖数量: 965 个
工控威望: 8865 点
下载积分: 2180 分
在线时间: 889(小时)
注册时间: 2014-05-23
最后登录: 2024-04-23
查看anlyl2014的 主题 / 回贴
6楼  发表于: 2019-07-06 14:44
注意一项:
1.通讯方式设为12;跟例子一模一样了;
2.看你的手册,40001和40002是净重;在PLC程序的地址是:H0/H1;可以读连续2个数的形式读出再合并成32位数;
3.同理,40005和40006是毛重;在PLC程序的地址是:H4/H5
4.你先用MODSCAN32软件,验证你的变送器设置的通讯格式、接线对不对,是否能读出数据,这步很重要,如能读出,说明设定没问题,MODSCAN32软件网站 有人发过可下;
5.例子是与4个从站通讯,若只读一个站,程序修改一下,只扫描1个站即可。
活到老,学到老!
微信号:anjjyy2013
添加时注明来自工控人家园
压缩包用WINRAR打开,没密码
leonhuang
级别: 略有小成
精华主题: 0
发帖数量: 59 个
工控威望: 202 点
下载积分: 3933 分
在线时间: 37(小时)
注册时间: 2013-06-27
最后登录: 2023-11-09
查看leonhuang的 主题 / 回贴
7楼  发表于: 2019-07-10 11:35
引用
引用第6楼anlyl2014于2019-07-06 14:44发表的  :
注意一项:
1.通讯方式设为12;跟例子一模一样了;
2.看你的手册,40001和40002是净重;在PLC程序的地址是:H0/H1;可以读连续2个数的形式读出再合并成32位数;
3.同理,40005和40006是毛重;在PLC程序的地址是:H4/H5
4.你先用MODSCAN32软件,验证你的变送器设置的通讯格式、接线对不对,是否能读出数据,这步很重要,如能读出,说明设定没问题,MODSCAN32软件网站 有人发过可下;
.......

嗯,我看了你的例子。有几个问题还是想不明白:
1、站号,读命令这都好理解。读存储器40005+40006=4个字节32位;按您说的是读05和06存储器,M0V H5 D212高位、MOV H6 D213低位,而不是只写一个存储器0005?(MOV H0 D212;MOV H5 D213)
2、功能地址05,06前面都 已经写好了,那接下来写读取数据的个数就好了,那为什么还有一个MOV H0 D214数据处理的起始存储器?而不是直接写个数,MOV H4 D214 ?我们用的是M8161,处理8位,那05与06是2个字4个字节32位,那就用H4?
3、传回来的数据处理,从第几个数据开始?从D153开始?我在PLC的软元件/缓冲存储器监视里看,数据D153-D162都是b0-b7在动作,b8-bF都是0,那这说明M8161在起做用。而且传回来的数据D153-D162的b0-b7每个位都循环动作,按说我的仪表显示是0,那相对应的数据里b0-b7连续四个字节就应都是0,没有1才对的?(回头我拍一点视频看一下)
4、我的仪表总压力为10000公斤,最小为1公斤,不需要浮点处理。只要数据转换成十进制的为就可以了
[ 此帖被leonhuang在2019-07-10 13:12重新编辑 ]
tingfenghu
级别: 工控侠客

精华主题: 0
发帖数量: 2792 个
工控威望: 3564 点
下载积分: 3407 分
在线时间: 3712(小时)
注册时间: 2007-11-04
最后登录: 2024-04-23
查看tingfenghu的 主题 / 回贴
8楼  发表于: 2019-07-10 11:56
首先你用个USB转485,
串口助手发送相应报文,看仪表返回的报文是否正确,
Modbus地址各家并没有统一,有些需要偏移一位,如40001,实际地址,是00H,00H,而有些是00H,01H,
直至返回报文数据正解,

用串口助手接收FX3U-485BD的发出报文,
是否是与上面串口助手发出的相同
检查报文是否正解?程序作相对的调整.
二手PLC,触摸屏,伺服驱动,各类气动设备
http://shop58129605.taobao.com/
anlyl2014
大吉大利
级别: 网络英雄
精华主题: 0
发帖数量: 965 个
工控威望: 8865 点
下载积分: 2180 分
在线时间: 889(小时)
注册时间: 2014-05-23
最后登录: 2024-04-23
查看anlyl2014的 主题 / 回贴
9楼  发表于: 2019-07-10 13:27
1、站号,读命令这都好理解。读存储器40005+40006=4个字节32位;按您说的是读05和06存储器,M0V H5 D212高位、MOV H6 D213低位,而不是只写一个存储器0005?(MOV H0 D212;MOV H5 D213)
=====你这里有问题,我没实物,你必须动手验证;通常,40005,在软件里是4+40001的,你要自己验证,楼上说的没错,每一家商厂都不一定相同;还有,读命令03,可以读连续多个寄存器,例如,要读H4和H5这2个的数值,就这样写:01 03  00 04 00 02后面是CRC
活到老,学到老!
微信号:anjjyy2013
添加时注明来自工控人家园
压缩包用WINRAR打开,没密码
leonhuang
级别: 略有小成
精华主题: 0
发帖数量: 59 个
工控威望: 202 点
下载积分: 3933 分
在线时间: 37(小时)
注册时间: 2013-06-27
最后登录: 2023-11-09
查看leonhuang的 主题 / 回贴
10楼  发表于: 2019-07-10 15:40
引用
引用第8楼tingfenghu于2019-07-10 11:56发表的  :
首先你用个USB转485,
串口助手发送相应报文,看仪表返回的报文是否正确,
Modbus地址各家并没有统一,有些需要偏移一位,如40001,实际地址,是00H,00H,而有些是00H,01H,
直至返回报文数据正解,

.......

我没有USB转485的串口,可以用232连接电脑,232转485的串口?测试是用电脑MOSDCAN发与PLC通讯,还是用电脑与我的仪表做测试?
anlyl2014
大吉大利
级别: 网络英雄
精华主题: 0
发帖数量: 965 个
工控威望: 8865 点
下载积分: 2180 分
在线时间: 889(小时)
注册时间: 2014-05-23
最后登录: 2024-04-23
查看anlyl2014的 主题 / 回贴
11楼  发表于: 2019-07-10 16:25
是的,你还要一个RS232转RS485的东东,淘宝有卖的,几十块一个;然后,用电脑MOSDCAN32直接与仪表通讯
如果这边都可以了,再写PLC程序,就简单得多了,就不有考滤仪表这边的事情.
活到老,学到老!
微信号:anjjyy2013
添加时注明来自工控人家园
压缩包用WINRAR打开,没密码