手摸手教你撕碎西门子S7通讯协议15--开发自己的通讯库写数据
1、S7通讯回顾
- (1)建立TCP连接 Socket.Connect-
- (2)发送访问请求 COTP-
- (3)交换通信信息 Setup Communication-
- (4)执行相关操作 读、写、PLC启停、时间、上传下载-
2、s7报文回顾
3、通讯库回顾
4、继续封装
/// <summary>/// 写入数据/// </summary>/// <typeparam name="T">写入的数据类型</typeparam>/// <param name="value">写入的目标数值</param>/// <param name="variable">PLC变量地址</param>/// <returns></returns>public Result Write<T>(T value, string variable){DataParameter dataParameter = new DataParameter();Type mtype = typeof(T);//如果是布尔类型,则修改数据类型为bitif (mtype.Name == "Boolean"){dataParameter.DataItemType = DataItemType.BIT;}try{// 解析地址dataParameter.GetFromVariable(variable);// 写入数据this.Write<T>(value,dataParameter.ParamItemType,dataParameter.AreaType,dataParameter.DBNumber,dataParameter.ByteAddress,dataParameter.BitAddress,dataParameter.DataItemType);if (dataParameter.State != 0xff){throw new Exception("数据写入失败!" + dataParameter.State);}return new Result();}catch (Exception ex){return new Result() { IsSuccessed = false, Message = ex.Message };}}
5、测试程序
1、写入float
2、写入short
3、写入bool
6、小结
自己的通讯库是够甘甜的,和新疆的葡萄一样的香甜,有人可能要问,前面不是有第3方通讯库写好的,拉来用不就行了吗?是的,没有错,别人的东西可以拉来用,但是我们的目标不仅是使用,而是形成自己的产品,实力,别人的库也是写的代码,只是我们看不到而已。同样的,我们自己也可以,强国工程,从小做起,不得不来个大大的鸡腿,真香啊。
原创不易,打字截图不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,动动你的金手指,早日实现财务自由