CPU226CN如何通过MODBUS ASCII模式与多台仪表通讯?

小弟正做一个项目,CPU是226CN,仪表的modbus模式是ASCII,仪表台数24台。仪表的通信参数是:9600波特率,无校验,1起始位,1停止位。现在只要求读取24台表的数据,仪表的通信指令要求:指令长度5字节;指令格式是:指令前缀——通信地址高位——通信地址低位——读取命令——命令码。例子:5个字节的内容分别是:@_0_3_R_1,意思就是读取通讯地址为3的仪表的测量值。

小弟的疑问是,XMT和RCV如何指定发送地址?如何才能不让这些数据的传输不冲突?还有终端电阻是120欧姆还是330欧姆?有朋友做过类似项目吗,能不能把你的组态文件借我学习一下呢?万分感谢啊!

最佳答案

传送(XMT)指令在自由端口模式中使用,通过通讯端口传送数据。接收(RCV)指令开始或终止"接收信息"服务。您必须指定一个开始条件和一个结束条件,"接收"方框才能操作。通过指定端口(PORT)接收的信息存储在数据缓冲区(TBL)中。数据缓冲区中的第一个条目指定接收的字节数目。
给你举个例子
NETWORK 1 // 主程序
LD SM0.1 // 首次扫描时,
MOVB 16#09 SMB30 // 初始化自由端口:
 // - 选择9600波特
 // - 选择8个数据位
 // - 选择无校验
MOVB 16#B0 SMB87 // 初始化RCV信息控制字节:
 // - RCV被启用
 // - 检测到信息字符结束
 // - 将空闲行条件检测为
 // 信息开始条件。

MOVB 16#0A SMB89 // 将信息字符结束设为hex OA(换行符)。
MOVW +5 SMW90 // 将空闲行超时设为5毫秒。
MOVB 100 SMB94 // 将最大字符数设为100。
ATCH INT_0 23 // 将中断附加在接收完成事件上。
ATCH INT_2 9 // 将中断2附加在传送完成事件上。
ENI // 启用用户中断
RCV VB100 0 // 为端口0在VB100位置启用带缓冲区的接收方框

NETWORK 1 // 中断0
// 接收完成中断例行程序
LDB= SMB86 16#20 // 如果接收状态显示接收结束字符,
MOVB 10 SMB34 // 则附加一个10毫秒计时器,
ATCH INT_1 10 // 触发传送

CRETI // 并返回。

NOT
RCV VB100 0 // 如果因任何其他原因接收完成,
 // 则开始新的接收。

NETWORK 1 // 中断1
// 10毫秒计时器中断
LD SM0.0
DTCH 10 // 分离计时器中断
XMT VB100 0 // 将信息传送回端口0中的用户

通讯电缆长度超过50米时在接收端R(A)与R(B)端加入330欧姆电阻。
见《S7-200基于modbus协议与智能仪表之间的通信实现方法》连接: 
http://*s.jdzj.com/showart.asp?art_id=6877

提问者对于答案的评价:
谢谢指教!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc315557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午4:10
下一篇 2020年11月1日 下午4:10

相关推荐

  • 资料找不到

    问了一个问题,有答案提示资料网址:https://www2.ad.siemens.com.cn/download/Upload/AS/application/A0382.pdf。但…

    2021年7月5日
  • 200PLC的通讯口容易烧坏吗

    CPU 224XP CN,新PLC下载程序不超过5次。刚下载完程序,再监控就提示通讯错误,见图1。以后再怎么设置参数都通讯不上了,换PLC 1端口也不…

    2020年10月31日
  • S7200PLC编写两轴转速同步

    工艺要求:有A,B两轴,A轴变频传动,速度可变。B轴伺服驱动,速度与A轴同步运行可变,并且B轴速度可取A轴速度的百分比倍率运转。本人思维在A轴上安装编码器或霍尔传感用HC0高速计数…

    SIMATIC S7-200 2021年7月5日
  • 请教:S7-200 CPU224XP V区数据保持方法?

    S7-200 CPU224XP 的PID加热程序的V区数据掉电重启没有保持,关电前加热正常,关电重启后PID加热的动作就没有了,其他动作正常。请各位大侠赐教。谢…

    SIMATIC S7-200 2020年10月31日
  • 译码指令和编码指令等—郁闷啊

    DECO指令中,送一个10进去,出来的是1024,为什么是1024呢? ENCO指令中,送一个2#1000,为什么出来的是2#11呢? 这两个指令是怎样理解的呢…

    SIMATIC S7-200 2021年7月5日
  • S7-200和EM235模拟量采集的问题

    还有我要采集一个变化比较灵敏的模拟量信号,在系统块的输入滤波器器的模拟量中采样数设为128,死区设置为0,这样可以吗?我试着设死区,但是只要有死区,信号波动就很大,我在程序中用了一…

    SIMATIC S7-200 2021年7月5日
  • 电气CAD

    我把项目的图纸清单报告保存到文件,选择的是Excel,但是保存出来变成这样的了,怎么回事 问题补充:在桌面显示这样 图片说明:    最佳答案 你是想把CAD中…

    2021年7月5日
  • S7-200PLC与直流调速风机

    现在有个项目需要控制可调速直流无刷离心风机。以前没接触过直流调速的产品,想请问一下,用200的PLC怎么来驱动?需要加其他模块吗? 问题补充:风机调速是根据房间的压差来调节的。调节…

    SIMATIC S7-200 2020年11月5日
  • 请问西门子200PLC CPU226产品数据累计和数据自动统计程序怎么写?

    我现在有这样要求一段程序要写,西门子200PLC 要求:我现在准备了MW20,MW24,MW28,MD32,,这几个存储区,20为当天产生的数据,24位前一天也就是昨天的…

    SIMATIC S7-200 2017年6月5日
  • 求200PLC 编程案例越多越好

    我是变频器(国产某品牌)售后,对于做工控来说PLC必须要会,偶然的机会去经销商那里高了一个二手的200PLC,在网上找视频,找各种资料自己学,现在感觉指令就如同写字,会写字了怎么写…

    SIMATIC S7-200 2021年7月5日