西门子S1200与RKC多表485通信
硬件连接:CB 1241 RS485 模块与RKC表连接:
先介绍读操作:
因为有三块表,做一个循环读,每秒钟读一块表。
读RKC表要发送读的表地址和参数名,在PLC中起始符EOT用$04表示,结束符ENQ用$05表示。
为了避免数据重复确保读取发送设定"Clock_5Hz"脉冲每0.2秒发送一次,这样在0.8秒内大约读4次,保证这一秒周期内读到的是当前地址的表温度值。如果设备现场没有干扰通信波特率高可以设定更低的周期。
读发送前加上写数据中断。使用SEND_PTP 指令发送数据,选择好端口,
RKC表读取操作的字符串一共是6个,读取发送后的完成信号触发接收指令RCV_PTP,如果通信正常RKC表会返回一个人11位的字符串,
将收到的数据用字符串提取指令MID,提取当前温度值,如果需要还可以再转换成实数。
最后复位接收。
这样循环读取当前温度值就做好了,因为我这个测试现场干扰非常大通信波特率只能设到4800,为了保证数据准确只能每秒钟给每块表多读几次。
下面介绍发送
发送设定值到RKC表到要麻烦一点,因为要有校验和,BCC 为校验和 它是从参数名开始到 ETX 为止的各个 ASCII 字符的半加和。
因为每次写入设定的温度值都不一样,所以需要对这些数据做计算校验和。
先做一个在触摸上改变了设定温度就需要写入的程序。这样只要触摸屏上改变设定温度就触发写入,当要写入时就断开读取。
每块表的地址直接用十六进制表示字符串,s开头的英文名每块表的写入温度值之后都要再转换成字符串发送。
写数据前加一个PLC上电延迟10秒钟,
发布评论