使用CM1241实现MODBUS_RTU主站将数组内容送往其他设备。

一个朋友需要在追溯系统中,需要采集若干个S7-1200运行数据,通过485接口送往串口交换机。

因为他不熟悉通讯操作,我来操刀简单的完成。

PLC使用的S7-1200 DC/DC/RLY (1214C 版本4.2)214-1HG40-0XB0,模块采用CM1241(485/422 版本2.2) 241-1CH32-0XB0。

首先组态系统,设置PLC的IP地址和自己计算机一个网段(192.168.1.15),设置启动系统存储器字节(M1)和时钟存储器字节(M0),这样程序中可是用一些特殊标志(比如1S脉冲和第一次扫描等等),设置上电启动方式为暖启动-RUN模式方便调试。

新建OB块(STARTUP OB100),添加MB_COMM_LOAD初始化指令,注意版本选择2.x版本,指令表上的区分2.x版本是全部大写字母构成,4.x版本库是由大写字母冠头的指令,不能使用。

PORT端口在选择框中选用1241模块,MB_DB选择在下一步程序中使用的MB_MASTER中的DB块,暂时可以留空等后面添加,OB100为系统上电第一次扫描初始化的组织块。

新建一个数据块,用于存放传递给其他设备的数据

 数据块需要去掉优化选项,这样数据的顺序个格式不会被优化而发生的错误。

设置好数组,因为MODBUS保持寄存器是16BIT数据,所以需要设置为WORD类型。 

在MAIN(OB1)中添加 MB_MASTER指令

 EN选择初始化完成位MB_COMM_LOAD_DB.DONE,发送周期这里定义为1秒,模式选择1即写模式,按照从站地址定义MB_ADDR,按照从站目标区域定义DATA_ADDR,按照需要传输的长度定义DATA_LEN,数据指针指向上一步建立数据块中的数组。

写入测试数据

 

下载运行测试,看到1241状态灯TX周期闪烁,串口助手数据完美接收,一切OK。

若有误导之处欢迎共同探讨(xhbwork@126.com)...... 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Modbus是一种通信协议,用于在不同设备之间进行数据传输和通信。modbus_tk是一个Python库,提供了在RTU模式下使用Modbus协议的功能。 使用modbus_tk.modbus_rtu模块,你可以在Python中实现Modbus RTU通信。这个模块提供了一些函数和类,用于建立Modbus RTU通信连接、读取和写入数据等操作。 你可以使用modbus_tk.modbus_rtu模块来创建一个Modbus RTU或从,然后通过调用相应的函数来进行读写操作。例如,你可以使用`modbus_tk.modbus_rtu.RtuMaster`类来创建一个对象,然后使用该对象的`execute`方法来发送读写请求。 以下是一个简单示例,演示了如何使用modbus_tk.modbus_rtu模块进行Modbus RTU通信: ```python import modbus_tk.modbus_rtu as modbus_rtu import serial # 创建串口连接 ser = serial.Serial(port='COM1', baudrate=9600, bytesize=8, parity='N', stopbits=1, xonxoff=0) # 创建Modbus RTU master = modbus_rtu.RtuMaster(ser) # 连接到从设备 master.open() # 读取保持寄存器的值 data = master.execute(1, modbus_rtu.READ_HOLDING_REGISTERS, 0, 10) # 写入保持寄存器的值 master.execute(1, modbus_rtu.WRITE_SINGLE_REGISTER, 0, output_value=12345) # 关闭连接 master.close() ``` 在上面的示例中,我们首先创建了一个串口连接,然后使用该连接创建了一个Modbus RTU对象。然后,我们可以通过调用对象的execute方法来发送读写请求。在示例中,我们首先读取了从设备保持寄存器的值,然后写入了一个新的值。 请注意,上述示例中的参数和函数调用可能需要根据你的实际情况进行相应的修改。此外,你需要确保安装了modbus_tk库和所需的依赖项,以便能够成功运行该代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cfy_makesoft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值