西门⼦1200plc做server与PC进⾏TCPIP通讯——⾃定协议发送接
收
1,背景简介
应客户要求,我们需要设计⼀个烘箱,烘箱有四个仓,每个仓单独加热控制,PID调节温度。温度差别是+-0.5,硬件是S7-1200+西门⼦温度模块,以及必要的温度感应器。
温度控制这⼀块除了PID参数⾃整定耗费⼀点时间外,其它部分的PLC程序⾮常简单。但是由于客户有其他的设备是PLC作为Server,上位机发特殊的指令给PLC,PLC根据
⾃定协议回复相应的信息。所以这篇⽂章主要讲的是:S7-1200做server,pc作为clilent去连接PLC,并发送⾃定义协议给PLC,PLC根据相应的⾃定义协议去回传相应的数据
2,硬件和协议
2.1 硬件设备
PLC:S71200,温度控制模块AI8-TC
2.2 ⾃定义协议
协议0:上位机向PLC发送获取状态命令: ffcommand:state;#
PLC向上位机返回状态:
0-⽆料;1-正在⾼温固化;2-⾼温固化完成等待取料;3-设备停⽌状态
0;1;2;2;1;0;#
6个数字分别代表6个料仓当前状态
上位机解析字符串从第三个字节开始,前两个字节忽略。
上位机向PLC发送获取温度命令:
ffcommand:temperature;#
PLC向上位机返回状态:
94.5;95.0;94.8;94.7;94.6;95.0;#
tcpip协议pdf
6个数字分别代表6个料仓当前温度
上位机解析字符串从第三个字节开始,前两个字节忽略。
上位机向PLC发送开关门命令:
command:door;***;$$$;#
***—代表⼏号料仓,范围1-6
$$$—代表状态;0—关门,1开门
PLC回复上位机料仓门状态:
ffcommand:door;result:open;#
ffcommand:door;result:close;#
上位机向PLC发送获取仓门状态命令:
ffcommand:door_state;#
PLC回复上位机料仓门状态:
0-未知;1-仓门开;2-仓门关;
1;2;2;2;2;2;#
6个数字分别代表6个仓门当前状态
3,程序及步骤 3.1,使⽤到的指令
1.jpg,⽤来连接服务器指令
2.jpg 断开与服务器的链接
3.jpg ⽤来接受服务器发送来的数据,注意:该指令的ADHOC设为true,接受动态指令长度,应为各个指令的数据长度不⼀样
4.jpg ⽤来给服务器发送数据的指令
5.jpg 因为接收到的数据是字节数组,所以需要⼀个指令能把接收指令接收到的字节数组转换为字符串的指令
6.jpg,接受到数据后再对⽐是哪⼀个指令,然后做出对应的数据回传
6.1预先定义好的指令字符串常量
6.2,把接收数据和常量指令做对⽐,只截取部分
7.jpg 当然,接收到的数据是字节数组,那么发出去的也应该是字节数组,那么就需要⼀个连接字符的指令和把字符串转换成字节数组的指令
7.1 连接字符串
7.2把字符串转换成字节数组
以上这些只是⼤概步骤,具体的详细实现步骤请看程序
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论