ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 185 个
工控威望: 263 点
下载积分: 810 分
在线时间: 74(小时)
注册时间: 2021-10-31
最后登录: 2024-12-19
查看ayusecret的 主题 / 回贴
楼主  发表于: 2022-06-06 16:45
花两天半纯手敲的代码,代码有点乱,周五就要出差了,没时间整理了,原本只是帮同事用小助手测个MC协议,也不知道脑袋一热敲了一堆代码,收益匪浅啊,分享给大家
测试工具:
R04 CPU,3E帧通讯(理论支持Q系列,可打开Gxwork3 e-Manual搜索3E帧得到手册内容)


TCP通讯小助手(测试报文用)


Python环境编写代码 版本3.10.4


Gxwork3(配置CPU参数,理论上Q系列使用Gxwork2也可)
整体的一个思路如下:
1.用小助手报文测试进行报文测试,如果有响应,无论对错,至少通讯上了,再根据发送的报文和响应的报文,根据手册帧定义进行拆分解读.
2.参考网上代码,用Python实现Socket通讯到PLC,为下一个环节做准备.
3.先直接把前面测试成功的报文,以字符串形式(需解码成字节)用Socket直接发给PLC
4.如果前面测试成功,就开始封装帧,以某个元件(我是以"D元件")开始,编辑指令,再根据需要,扩展其他元件,反复优化,迭代

目前实现:
D元件单双字写入,单进度浮点数写入,可正负,浮点数可能有精度丢失
M元件0,1 写入
TN 将其当成D理解去处理
TC,TS,X,Y将其当成M去处理,注意M地址是10进制而X,Y是16进制,需对类型进行区分

限制:
1.帧有部分内容暂时写死,软元件有部分子指令暂时写死
2.目前只封装批量读写指令,个人认为只需要这两个即可,随机读写指令实际应用中应该比较少就没写了.

总结:
1.纯练习项目,还未实际应用,目前测试数据还算正常.发出来只是给大家做个参考
2.说来惭愧,干自动化那么多年,还没接触上位机开发,为了实现这些代码也是网上参考了很多函数技巧,后面有机会再尝试试试多线程,做数据库相关的内容3
3.主要困难点在于
1.float数据如何传到PLC,又如何读出来解读.(参考规格化浮点数定义)
,网上没有实用的函数参考,为了实现并测试我足足研究了一个下午
2.数据正负的实现
4.临时敲的代码,可能还有很多Bug,望指正.




附件: main.py.rar (5 K) 下载次数:168
网站提示: 请不要用迅雷下载附件,容易出错
本帖最近评分记录:
  • 下载积分:+5(崇庆阳光) 好贴好贴!
  • 下载积分:+2(guochunyi) 好贴好贴!
    lyntechme
    虛心做人,踏实做事
    级别: 家园常客
    精华主题: 0
    发帖数量: 563 个
    工控威望: 709 点
    下载积分: 12711 分
    在线时间: 256(小时)
    注册时间: 2012-03-31
    最后登录: 2023-06-04
    查看lyntechme的 主题 / 回贴
    1楼  发表于: 2022-06-13 08:21
    感谢,很好的分享,有参考价值