硬核进阶,欢迎大佬交流 | McgsPro作Modbus从设备问题 点击:291 | 回复:16



Dennie

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 3回
  • 年度积分:185
  • 历史总积分:185
  • 注册:2023年6月28日
发表于:2023-12-04 10:37:14
楼主
求助帖30分-已结帖
  • 前提需求:使用上位机对昆仑通态组态屏进行指令控制

通过通道关联变量,再将变量关联事件策略,使对应通道关联的变量变化来执行不同的事件策略从而实现控制昆仑通态。

  • 漏洞

  1. 只能通过“变量变化”实现,因为事件策略只能识别变量变化,而不像单片机一样有中断的概念,所以导致了如果通道当前是某个值,上位机输入同一个值时事件不生效。

  2. 昆仑通态官方Modbus驱动不具备用户控制什么时候给上位机返回错误码,驱动层是一个黑盒,用户无法灵活使用。这让上位机随便输入什么返回都是response OK,除非你绝对的Modbus帧语法错误。

  3. 驱动开发工具是官方提供的只能实现部分功能的工具,这东西很抽象,不可能自己做出纯粹的代码级Modbus驱动。(用单片机直接就能在网上找出各种modbus全量源码,直接配置一下宏就能用了,为什么要用二次工具去三次模拟Modbus开发?而且模拟出来的东西具抽象)不要说找官方定制,Modbus控制返回错误码的功能不应该是必备的基础功能吗,而不是让用户花钱去定制。

  • 问题总结

  1. McgsPro作Modbus从站是否可以跳出事件策略的“变量变化”固定逻辑。

  2. McgsPro作Modbus从站是否可以手控返回Modbus错误码。

  • 评论区交流:

  1. 也许是我没发现更好的方法,所以如果大家有更好的控制方法以及错误码的实现,欢迎评论区交流。

(我发现论坛没有任何一个帖子做上位机控制昆仑通态的,全是数据监测,如果你们做了控制按钮,就那么确信modbus返回值必然OK?这可靠性也太差了吧)



楼主最近还看过



Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-08 15:31:32
1楼
  • 兄弟们,找到解决方法了,在我看来,如果想要实现纯粹的Modbus或者其他私有协议驱动(只限串口),脱离软件提供的固定协议,可以用串口收发驱动直接去不断读串口的16进制数据,也不需要自己去用驱动开发工具专门做数据处理驱动,直接在策略里就能完成。

  • 将读到的16进制数据自己手动解析,随后可以自己解析自己组包返回,如果收到错误的帧格式也能直接随意组出错误码并返回。不过这样也需要开发时间,需要自己写寄存器定义以及返回数据的策略,并且需要把握好通道收包间隔以及数据处理的时效性,把握不好就有粘包的可能性存在。

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-04 10:38:33
2楼

来人,来人,来人来人

JSdanzi

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 400回
  • 年度积分:23
  • 历史总积分:7281
  • 注册:2012年9月22日
发表于:2023-12-04 11:04:49
3楼

没做过上位机跟屏通讯过,都是PLC跟屏,然后屏里有个通讯状态的变量,通过这个变量值给PLC是否通讯正常,你的上位机给策略 策略条件选择 上升沿不行么

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-04 11:18:00
4楼

"JSdanzi" 的回复,发表在2楼
        对内容: 【没做过上位机跟屏通讯过,都是PLC跟屏,然后屏里有个通讯状态的变量,通过这个变量值给PLC是否通讯正常,你的上位机给策略 策略条件选择 上升沿不行么...】进行回复:

        -----------------------------------------------------------------

嗯,事件策略就是变量“变化”嘛,正跳变或者负跳变等等,我也是用的这种方法,但是目前这导致了假设当前变量值是5,上位机也输入5,那么事件策略就不触发,这感觉是不是很奇怪?然后它modbus返回还是response OK这样就给上位机一种“我写成功了”的感觉,实际上啥也没触发。这样就不可靠了,没法通信了。


Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-04 11:20:29
5楼

"JSdanzi" 的回复,发表在2楼
        对内容: 【没做过上位机跟屏通讯过,都是PLC跟屏,然后屏里有个通讯状态的变量,通过这个变量值给PLC是否通讯正常,你的上位机给策略 策略条件选择 上升沿不行么...】进行回复:

        -----------------------------------------------------------------


屏的通讯状态是没问题,正确连上就正常,但是上位机不知道呀,上位机只能通过返回值确认我是不是写入正确。

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-04 11:27:33
6楼

"JSdanzi" 的回复,发表在2楼
        对内容: 【没做过上位机跟屏通讯过,都是PLC跟屏,然后屏里有个通讯状态的变量,通过这个变量值给PLC是否通讯正常,你的上位机给策略 策略条件选择 上升沿不行么...】进行回复:

        -----------------------------------------------------------------


这种事件策略与Modbus通道组合的用法下,可以实现上位机控制,没问题。但是有两个硬性漏洞:

①事件策略只能检测“变化的输入”,这样就很抽象。

②用户无法自主控制返回错误码,比如协议里某个变量要求在1-100的输入范围,上位机输入9999,仍然response OK,那就难了啊,虽然Mcgs我可以在策略里做本次输入到底是否有效,但是上位机不知道呀,我没法主动返回消息。它还以为9999输入没毛病。

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-04 11:38:19
7楼

"JSdanzi" 的回复,发表在2楼
        对内容: 【没做过上位机跟屏通讯过,都是PLC跟屏,然后屏里有个通讯状态的变量,通过这个变量值给PLC是否通讯正常,你的上位机给策略 策略条件选择 上升沿不行么...】进行回复:

        -----------------------------------------------------------------


这种问题对于ModbusTCP、ModbusRTU都有,我两个型号都做了,操作上能够通过事件+通道控制组态屏,但是就是存在上述两项硬性漏洞。

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-04 11:41:29
8楼

我这个问题是首次发现啊,网络上我找遍了,真没人做上位机控制组态屏,还带自由错误码的。都是监测数据或者控制PLC。

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-04 14:49:24
9楼

有大佬参观吗

yiyiran

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:3
  • 历史总积分:33
  • 注册:2020年8月19日
发表于:2023-12-04 23:35:56
10楼

真没人做上位机控制组态屏

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-05 13:21:24
11楼

"yiyiran" 的回复,发表在9楼
        对内容: 【真没人做上位机控制组态屏】进行回复:

        -----------------------------------------------------------------


。。。。。。。。哈哈,还是感谢回复,我在这等做过的大佬

luy12300

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:80
  • 历史总积分:80
  • 注册:2012年5月23日
发表于:2023-12-05 15:19:40
12楼

不错

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-05 17:30:35
13楼

"luy12300" 的回复,发表在11楼
        对内容: 【不错】进行回复:

        -----------------------------------------------------------------

有没有意见发表,大佬

ozoner

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 855回
  • 年度积分:52
  • 历史总积分:8667
  • 注册:2017年1月12日
发表于:2023-12-06 20:02:49
14楼

不觉得算是什么漏洞, 毕竟不是像单片机,控制主要靠中断。靠Modbus通讯也同样可以实现上位和下位机的控制,方式不同罢了。不过,出于安全及可靠性的考虑,重要参数我会尽量避免采用屏之间的控制,防止出现无法预料的问题。

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-07 14:14:53
15楼

"ozoner" 的回复,发表在13楼
        对内容: 【不觉得算是什么漏洞, 毕竟不是像单片机,控制主要靠中断。靠Modbus通讯也同样可以实现上位和下位机的控制,方式不同罢了。不过,出于安全及可靠性的考虑,重要参数我会尽量避免采用屏之间的控制,防止出现无...】进行回复:

        -----------------------------------------------------------------


请教一下用的是什么方法实现的?modbus控制组态屏我采用的是事件关联通道的方法,但是如上所说的结果,因为事件只检测变量变化,所以发送相同的数据实际是无效的,并且不会给上位机错误码。

Dennie

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 14回
  • 年度积分:160
  • 历史总积分:160
  • 注册:2023年6月28日
发表于:2023-12-07 14:16:18
16楼

"ozoner" 的回复,发表在13楼
        对内容: 【不觉得算是什么漏洞, 毕竟不是像单片机,控制主要靠中断。靠Modbus通讯也同样可以实现上位和下位机的控制,方式不同罢了。不过,出于安全及可靠性的考虑,重要参数我会尽量避免采用屏之间的控制,防止出现无...】进行回复:

        -----------------------------------------------------------------


上位机控制我是实现了,但是就是有这两种特殊情况跟传统中断控制有区别。


热门招聘
相关主题

官方公众号

智造工程师