广东湘恒智能科技有限公司
主营产品: 西门子变频器,西门子PLC\西门子模块、西门子触摸屏、西门子伺服电机、西门子工控机、西门子集成系统、西门子低压、西门子控制单元、西门子CPU,广东省西门子授权代理商,等
西门子1200做主站,200smart做从站Modbus通讯
发布时间:2024-11-22

一、演示案例中西门子1200的型号为1212C AC/DC/REAL 版本为4.2,通讯模块使用的是CM1214,编程软件为TIA Portal V17,西门子200smart型号为ST30,编程软件为STEP 7-MicroWIN SMART,版本为2.8。

二、组态从站1.打开“STEP 7-MicroWIN SMART”创建新项目,名称为“200smart从站”设置IP地址为192.168.0.122.打开“库”-----打开“Modbus RTU Slave”---将“MBUS_INIT”指令和“MBUS_SLAVE”在程序中调用。如图1图片图13.“Modbus_INIT”在第一个循环周期内初始化Modbus从站协议编程时使用SM0.1调用子程序MBUS_INIT进行初始化,并指定相应参数,各引脚含义如下:   (1)Mode:模式选择,启动/停止MODBUS,1=启动;0=停止(2)Address:从站地址,MODBUS从站地址,取值1~247(3)Baud:波特率,可选1200,2400,4800,9600,19200,38400,57600,115200(4)Parity:奇偶校验,0=无校验;1=奇校验;2=偶校验(5)Port:0=CPU集成的RS485通信口 Port 0,1=可选信号板通讯口 Port 1(6)Delay:延时,附加字符间延时,缺省值为0(7)MaxIQ:最大I/Q位,参与通信的最大I/O点数,S7-200 SMART的I/O映像区为256/256,缺省值为256(8)MaxAI:最大AI字数,参与通信的最大AI通道数,取值范围 0-56。值为0时将禁止读取模拟量输入。(9)MaxHold:最大保持寄存器区,参与通信的V存储区字(VW)(10)HoldStart:保持寄存器区起始地址,以&VBx指定(间接寻址方式)(11)Done:初始化完成标志,成功初始化后置1(12)Error:初始化错误代码4.“MBUD_SLAVE”在每个循环周期内执行Modbus 从站协议,使用SM0.0调用MBUS_SLAVE,各引脚含义如下:(1)Done:MODBUS执行,通信中时置1,无 MODBUS 通信活动时为 0(2)Error:错误代码:0=无错误(3)在本项目演示中,设置从站地址为3(4)Port0 通讯波特率为9600    (5)无校验(6)可以使用的S7-200 SMART 最 大数字量输入输出点数为256(7)可以使用的S7-200 SMART 最大模拟量输入寄存器字数为56(8)可以使用的V区寄存器地址字数为1000, 起始地址为VB10005.在CPU的V数据区中分配库指令数据区,在指令树的Project(项目)中,以鼠标右键单击Program Block(程序块),在弹出的快捷菜单中选择Library Memory。如图2。图片图26.注意:本例子中,Modbus RTU 从站指令使用的库存储为VB0---VB780,这寄存器地址不能再被程序中的任何指令使用,包括MBUS_INIT 和 MBUS_SLAVE 指令在内三、组态主站1.打开“TIA Portal V17”建立新项目,演示项目名称为“Mudbus通讯1200做主站,200smart做从站”打开项目视图,添加新设备“1212C AC/DC/REAL”添加通讯模块“CM1241”。如图3    图片图32.Modbus_Comm_Load;对 Modbus 的通信模块进行组态,各个引脚的含义如下:(1)REQ:上升沿触发(2)POR:通信端口的硬件标识符(3)BAUD:波特率选择:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200(4)PARITY:奇偶检验选择:0-无;1-奇校验;2-偶校验(5)FLOW_CTRL:流控制选择:0-(默认值)无流控制(6)RTS_ON_DLY:RTS延时选择:0-(默认值)(7)RTS_OFF_DLY:RTS关断延时选择:0-(默认值)(8)RESP_TO:响应超时:默认值 = 1000 ms。MB_MASTER 允许用于从站响应的时间(以毫秒为单位)。   (9)MB_DB:对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。(10)MB_DB:参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。(11)DONE:如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。(12)ERROR:如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。(13)STATUS:端口组态错误代图片图43.Modbus_Master:作为 Modbus 主站进行通信,各个引脚的含义:(1)REQ:TRUE = 请求向 Modbus 从站发送数据 ,建议采用上升沿触发(2)MB_ADDR:Modbus RTU从站地址。默认地址范围:0至247;扩展地址范围:0至65535。值0被保留用于将消息广播到所有Modbus从站。   (3)MODE:模式选择:指定请求类型(读取:0;写入:1)。(4)DATA_ADDR:从站中的起始地址:指定Modbus从站中将供访问的数据的起始地址。(5)DATA_LEN:数据长度:指定要在该请求中访问的位数或字数。(6)DATA_PTR:数据指针:指向要进行数据写入或数据读取的标记或数据块地址。(7)DONE:完成位:上一请求已完成且没有出错后,DONE 位将保持为 TRUE 一个扫描周期时间。(8)BUSY:FALSE – Modbus_Master 无激活命令:        TRUE – Modbus_Master 命令执行中(9)ERROR:对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。(10)MB_DB:参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。          (11)STATUS:如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。(12)ERROR:如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。(13)STATUS:错误代码    四、主站程序编写1.点击CPU右键,进入属性,找到系统和时钟存储器,选择“启用系统存储器字节”和“时钟存储器字节”如图5图片图52.点击添加新快,添加一个全局数据块,数据块名称为“Modbus”,右键全局数据块进入属性-----属性-----勾选掉数据块优化。图片 图63.在数据块中建立一个数组“array [0...3] of Byte”,名称为数据指针。  图片图74.程序段1在第一次周期循环的时候,通过MOVE指令将Modbus_Comm_Load的mode改为“4”。图片 图85.程序块2调用“Modbus_Comm_Load”指令,使其在第一次周期循环时候接通一次,将Modbus通讯模块进行初始化。硬件标识符是添加通讯模块的硬件标识符,打开设备视图----右键通讯模块CM1241点击属性,在弹出的窗口中,点击系统常数,可以看到硬件标识符。波特率选择9600,无奇偶校验。MB_DB对 Modbus_Master 指令的背景数据块的引用。   图片图96.程序段3调用“Modbus_Master”指令,使用时钟存储器M0.5让其一秒接通一次,模式选择0,从站地址为3,从站中的起始地址:读取200smartV区从VW1000开始,读取地址为40001,数据长度为2,数据指针填写刚刚在全局数据块建立的变量“数据指针”。图片    图10五、程序下载1.将主站和从站程序分别下载到PLC中,并运行程序。2.200smart,VW1000的值为16#00C8如图11。图片图113.可以在1200中读取到VM1000的值为16#00C8。如图12。图片 图12


展开全文
拨打电话 微信咨询 发送询价