一个朋友需要在追溯系统中,需要采集若干个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)......