当前位置:
MCGS弹窗赋值能读不能写的问题
回复 | 人气 | 打印
rlfeifei 个人主页 给TA发消息 加TA为好友 发表于:2020-02-18 21:28:06 楼主

我在做一个项目,有14个阀门,阀门的操作按钮打算放入弹窗进行操作。

由于阀门比较多,所以我打算做一个公共窗口,点击哪个阀门,就把哪个阀门的一些变量赋值进去。

以下是我点击阀门的脚本:

opensubwnd(阀门操作窗口,0,0,200,160,49)  注:这是弹窗

VLV_NAME="#1排泥阀(净水器A)"  注:这是在弹窗中显示阀门名称

VLV_KZL=JA_PNV1_SDK  注:这是阀门的开关指令,等于1时开发出开指令,等于0时发出关指令

VLV_KFB=净水器A排泥阀1开反馈  注:这是阀门的开反馈信号

VLV_GFB=净水器A排泥阀1关反馈  注:这是阀门的关反馈信号

注:左边的是内部变量,右边的是PLC的物理地址。

目前测试,所有的信号都能在弹窗中读出来,但是无法写下去。


弹窗中有一个开关阀按钮,“开阀”按钮做的是VLV_KZL置1的功能,“关阀”按钮做的是VLV_KZL置0的功能。

实际测试下来,点击“开阀”按钮,VLV_KZL会置1,但是JA_PNV1_SDK没有变化;点击“关阀”按钮同样如此。

请问各位大神,我哪里边设置的不对?或者提供更好的方法?

我要实现的功能就是点击“开阀”,能让变量JA_PNV1_SDK置1,点击“关阀”,能让变量JA_PNV1_SDK置0,当然,前提就是我这个窗口是一个公共窗口,不是该阀门的专属弹窗。

工程文件如下:


正在下载,请等待……
下载附件需0积分!

分享到: 关注收藏 邀请回答 回复 举报

ozoner 个人主页 给TA发消息 加TA为好友 发表于:2020-02-19 05:17:54 1楼
 

可能存在的问题:

1. 没找到你说的VLV_KZL=JA_PNV1_SDK脚本,是在PLC里?而且必须写成JA_PNV1_SDK=VLV_KZL才行。这个脚本都没有,JA_PNV1_SDK当然不会在你按下VLV_KZL按钮时改变。

2. 主画面里最上方那两个1和0按钮应该是调试时放上的吧,这两个按钮做的是错的,本身就是不让JA_PNV1_SDK改变要删掉。

3. 你应该是通过PLC来控制阀门的,JA_PNV1_SDK设备变量,你用的是读写方式,如果PLC程序某个地方逻辑有问题置0了,也是有可能造成JA_PNV1_SDK不因VLV_KZL而改变,所以,这个通道连接最好用只写方式,然后在屏幕里看看按下VLV_KZL按钮后,在屏幕上看看JA_PNV1_SDK的值是否会改变。非要用读写方式也可以,那就要检查你的PLC程序了,对PLC来说,这只是个输入开关量,也就是只读的,设置成读写就必须确保逻辑任何地方不要写变量进去。 这问题同样适用于你那些其他阀门的开关变量。

4. 看工程和描述的功能似乎对不上,我猜你是想每个阀门放个控制按钮,按下后弹出的个阀门控制窗口,然后根据按钮的不同,分别产生不同的开关信号送到PLC,是这样吗?觉得更好做法是在主画面里就放一个按钮,弹出控制窗口,然后再弹出的窗口里分别放置不同的阀门开关按钮来控制。一定要用公共弹窗的方式,就要有变量赋值脚本来区分,如JA_PNV1_SDK=VLV_KZL,你弹窗里没有这些脚本。


  回复 引用 举报
rlfeifei 个人主页 给TA发消息 加TA为好友 发表于:2020-02-19 08:51:24 2楼
 


回复内容:

对: ozoner 可能存在的问题:1. 没找到你说的VLV_KZL=JA... 内容的回复!

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

右击阀门,点事件,脚本在mousedown的事件脚本里。

您说的第2点,那个确实是调试用的,我就是想测试下,我JA_PNV1_SDK改变后,VLV_NAME会不会改变,事实证明,会改变的。

您说的第3点:我目前没有连接PLC,都是仿真的,所以还不存在PLC影响JA_PNV1_SDK的可能性。

您说的第4点:是我的备选方案,如果这个问题无法解决,我只能选择您说的这种方法,但是目前还是想试试我目前的做法,这样操作人员可以想开哪个阀门的时候,直接点击该阀门图标就可以弹出操作窗口了。而且我目前的做法适用于阀门特别多的情况,如果有100个阀门的话,还是我目前的方法比较省事。

  回复 引用 举报
ozoner 个人主页 给TA发消息 加TA为好友 发表于:2020-02-19 09:06:03 3楼
 

回复内容:

对: rlfeifei 回复内容:对: ozoner  可能存在的问题:1. ... 内容的回复!

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

搞了半天只是在仿真运行,你那些变量都是要连到PLC,电脑上仿真模拟运行肯定是不灵的,一定要在真正的触摸屏里调试,而且要连上PLC。 工程里用到硬件就要用,不能靠仿真的。仿真不是真正的调试,和实际会有区别的。除了简单的逻辑和运算以及界面设计,其他从来不用什么仿真来测试,结果一定不可靠。

而且,阀门事件脚本那么写实在搞不清你的控制逻辑是啥, 没有哪个脚本是让开关量JA_PNV1_SDK改变的, 所以原来是什么就还是什么。 你的逻辑看上去感觉又像是由PLC来控制开关,不是屏幕按钮,矛盾多多。 不十分清楚到底想如何操作的。


总之,你的脚本写的看不出什么地方是让JA_PNV1_SDK改变,没有让它改变的指令,当然就不会改变。



  回复 引用 举报
ozoner 个人主页 给TA发消息 加TA为好友 发表于:2020-02-19 09:41:22 4楼
 

那两个调试的按钮要删除。

所有脚本最好是都放到一个循环脚本里,每个阀门图符用事件里分别写脚本修改起来会很是麻烦。 


应该这样做:

不管按哪个阀门的图符,都弹出阀门控制窗口,然后在弹出窗口的循环脚本里写所有阀门的处理程序,当然,也可以用循环策略脚本来做,这样更清楚和便于修改和调试。在这个程序里来判断要控制哪个阀门,然后把的开关的值赋值给相对应的阀门开关信号。应该是个很简单的程序了。 

此外,调试一定要在真机上调试。



  回复 引用 举报
rlfeifei 个人主页 给TA发消息 加TA为好友 发表于:2020-02-19 14:51:48 5楼
 


回复内容:

对: ozoner 那两个调试的按钮要删除。所有脚本最好是都放到一个循环脚... 内容的回复!

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

用您的方法的话我没什么思路,主要是我不知道采集什么样的信号,能判断我点击了哪个阀门

  回复 引用 举报
ozoner 个人主页 给TA发消息 加TA为好友 发表于:2020-02-19 15:31:42 6楼
 


回复内容:

对: rlfeifei 回复内容:对: ozoner  那两个调试的按钮要删除... 内容的回复!

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

这不是很容易?给每个阀门编个号不就行了,如1,2,3.。。。。,点不同的阀门,得到不同的阀门编号。

  回复 引用 举报
ozoner 个人主页 给TA发消息 加TA为好友 发表于:2020-02-19 16:40:27 7楼
 

修改了你的工程,做了两个阀门样例,你点主页面上边1和2这两个阀门试试看,最上面是显示它们的状态,发你邮箱了。

  回复 引用 举报
我家有个小沐沐 个人主页 给TA发消息 加TA为好友 发表于:2020-03-09 09:39:11 8楼
 

一起分享经验,一起进步!

  回复 引用 举报

周点击排行
周回复排行
最新求助