西门子PLC总代理商|总代理_西门子触摸屏
- 供应商
- 广东湘恒智能科技有限公司
- 认证
- 西门子PLC
- 西门子触摸屏
- 西门子伺服电机
- 西门子变频器
- 西门子直流调速器
- 西门子电缆
- 联系电话
- 13922889745
- 手机号
- 18475208684
- 经理
- 向小姐
- 所在地
- 惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房
- 更新时间
- 2025-02-26 08:00
西门子s7-1200、1500系列plc的串口通讯,支持标准modbusrtu协议,若遇到非modbusrtu的其他协议,可通过自由口的方式来通讯。以下例程为s7-1200的rs485通讯模块,用自由口方式与电表通过dlt645-1997协议进行通讯,读取电表内“运行功率”及“累计电量”两个参数。
一、仪表的通信协议解析
1、从dlt645协议(文章后面有说明)进行协议解析,plc需发送至电表的帧结构如下:
plc正常接收电表返回的帧结构如下:
2、dlt645协议的具体协议内容
二、组态plc串口模块
模块设置为2线制485,波特率1.2kbps(与电表设置一致),偶校验(固定设置),数据位8位(固定设置),停止位1位(固定设置),与电表及协议设置一致:
消息开始固定为16#68
消息结束固定为16#16;同时超过400ms未收到消息,也认为结束:
三、制作fb功能块dltm,按照dlt645协议格式发送、接收数据
1、编组发送帧
按照dlt645的格式,将需发送到电表的14个byte数据放入数组send_ptp_sfb[1..14]中,并使用send_ptp功能块发送这14个byte。
使用send_ptp指令,发送以上编组好的send_ptp_sfb[1..14]共14个字节到串口
2、从串口接收数据,并处理接收帧:
从串口接收到的数据帧放入rcv_ptp_sfb数组中,若rcv_ptp_sfb[1..12]都与协议格式相同,且接收数据长度大于0,认为接收数据成功,将rcv_ptp_sfb[11]开始的2个数据放入read_data数组中。
接收成功后,使用rcv_rst复位,并将接收数组rcv_ptp_sfb清零:
四、制作fb功能块dlt645,定义串口参数,定义功能码,并调用dltm功能块
读取不同参数时使用不同的控制码:读取功率时用16#9010控制码,长度为2;读取电量时用16#b61f控制码,长度为2:
使用port_cfg指令初始化串口:
port为串口模块硬件地址;
protocol=1代表点对点通信协议(固定设置);
baud为波特率,通讯链路上所有电表都需设置一致;
parity=2代表偶校验(固定设置);
databits=1代表字节数据位8(固定设置);
stopbits=1代表字节停止位0(固定设置);
flowctrl=1代表无数据流控制(固定设置);
通过不同串口、读取不同电表、读取不同数据时,将不同的电表地址、数据标识通过块接口传入之前做好dltm功能块:
五、在主程序中调用dlt645功能块,输入端口、波特率、电表地址等参数,与多台电表通讯时,需要轮询
例如:第1台电表的dlt645地址设置为010101010101:
六、总结:通信协议的解析是通信应用能力的体现。