第一次经历过一个软件不会用的懵逼状态后,慢慢静下心来,好好的看看这个屏幕到底怎么弄,经历过多方帮助,终于慢慢的领悟到了昆仑通态屏幕怎么制作,下面分享给需要用到的小伙伴。
还是那句话,自己理解之后,再用最简单的语言给大家表达出来,能理解就好。望不介意用词不准确的地方。虽然写文章需要用词严谨,但是这个不发表论文,就放松下对自己的要求,尽量准确。
希望看到的小伙伴不用心理抵触这个东西,开始我也挺抵触自己不会的东西,应该说是心理不舒服,可能是在自己的恐慌区,只想搞点自己熟悉的东西。但是最后发现一直搞一个东西挺没劲的,但是搞不熟悉的又有点恐慌,特别是搞不出来的时候,这个时候最需要静心,慢慢的一步一步的来。比如现在,我也TM的迷茫和恐慌啊!
再次打开,设备名修改,高级。确定。
点击采集脚本。删掉所有代码。
点击设备通道,删除所有。
右键设备通道,添加。感觉这点比较好,能用汉字,不用全部英文。
同时添加全局变量,最后形成下面东西:
最左侧,两个通道,一个全局变量。代码一定要规范,g代表globe,n代表整型。这个需要去买专门的书去看。前面我也贴过我自己的代码,里面全部都检查过,按照编码规则来的。至少看着舒服。
在采集脚本中,加入程序,代码如下:
DIM gnGetData1 as INTEGER
!GetIntChannelValueByName("取数", gnGetData1)
!SetIntChannelValueByName("显示", gnGetData1)
!Sleep(1000)
DIM nSendByteArr(9) as BYTE
DIM nRecvByteArr(9) as BYTE
nSendByteArr[1] = &H5A
nSendByteArr[2] = &HA5
nSendByteArr[3] = &H03
nSendByteArr[4] = &H04
nSendByteArr[5] = !BitRShift(gnGetData1, 8)
nSendByteArr[6] = gnGetData1
nSendByteArr[7] = !BitRShift(gnGetData1, 8)
nSendByteArr[8] = gnGetData1
nSendByteArr[9] = !SvrByteArraySum(nSendByteArr,3,6)'和校验
!DevClearBuff() '清缓冲
!DevWriteAndReadByteArr(nSendByteArr,9,nRecvByteArr,9,通讯延时)
按行数依次解释代码:
定义变量gnGetData1;
从“取数”通道取数放入gnGetData1中;
将gnGetData1放入“显示”通道中
延迟1s钟
定义发送数组
定义接收数组
以下9行为数组赋值
清缓冲
发送“发送数组中的数据9个”并取回返回的9个数放入“接收数组中”。
点击工具栏中叹号前面的对号按钮,检查语法。
语法什么意思去帮助里面找,各个函数写的很清楚,会用就行。
保存:
到此,脚本驱动编写完成。
注:保存位置:D:\MCGSE\Program\Drivers\用户定制设备\实例串口,其中实例串口文件夹自己建立的。其他的自己可以找找。
打开上节中建立的组态,上节中只建立了一个用户窗口,用户窗口中建立了两个对话输入框。
关闭这个窗口,回到原始位置,点击设备窗口:
双击设备窗口,进入界面:
先添加通用串口父设备,点击设备管理,添加刚才保存的用户定制设备用的,取数显示设备,至于名字为啥没改,我也不知道,反正看是刚才保存的脚本驱动。
确定后,点击刚才新添加的“取数显示设备”,自己就会跑到刚才添加的父设备下面。
双击加入的脚本驱动,选择通道连接:
至此,驱动已经添加完毕。还有个就是串口号,这个是需要自己看看自己的串口是哪一个,然后再父设备里面修改,这个就不介绍了。
注:此时什么通道啥的,应该还是一脸懵逼状态,为啥这样设置,最后再说这个问题。(这个很关键)
保存后,回到用户窗口,双击自己的工程,显示上节设置的两个对话框
双击输入框,选择操作属性,里面有个对应数据对象的名称,可写,可选。写入:取数。另一个输入框,按照同样的步骤,写入显示。
至此,界面已经做完,脚本也已经加入。
点击工具选项,选择下载配置,出现以下画面:
点击工程下载,就将刚才的工程下载到模拟环境中去了。也就是代替屏幕的那个东西。
出现绿色的提示,如果是其他颜色请检查自己哪里做忽视了。
点击启动运行。
在第一个框里写数字,第二个框延迟后显示。
同时连接串口,看到354的十六进制在数据里面:0162
至此,取数显示,并通过串口传出完成。可以看出每次发送间隔1200ms。这个1000是监本程序里面sleep的1000,另外还有200ms,是写脚本的时候这个地方设定的。设备属性,通讯延时。串口发送指令里,包含了通讯延迟,所以每次间隔1200ms。
现在看看刚才的步骤:脚本,界面,下载,模拟,运行。这五个步骤,缺一不可。
回头复盘:
(1)写脚本,设定通道;也就是黑盒子的输入口(后面的取数),输出口(后面的显示和串口)。
(2)设置界面,加入脚本。此时脚本中的参数仅仅是个入口参数,并没有链接到界面中。双击脚本驱动后,将显示和取数分别对应到显示和取数,就将脚本的入口和界面相连了。
(3)界面中两个输入框,分别设置为显示和取数,正式将脚本中的参数入口链接到界面中的输入框。
注:驱动中的显示和取数是脚本的入口,驱动设置的对应显示和取数是界面对应的参数,这个是可以变的。
也就是这个里面前面的取数和显示,对应的是界面中参数,随便修改。后面的取数和显示是脚本中的,只能修改脚本中通道名称,这两个才会修改。用程序的叫法:形参入口。
顺序:界面---实参--形参---脚本---输出(界面实参和串口)
这个编程顺序很奇怪,先编写脚本,定义好变量,然后传递到界面窗口,界面窗口再利用脚本中的变量。反正第一次见这样的屏幕。以前用过西门子的屏幕,到之后的串口屏,都没有这样编程的。这个也就是嵌入式屏幕的门槛吧,所以网上教程很少。
这两篇文章先制作最简单的东西,等接着做下,会插入按钮啥的,等我一个一个试出来之后再写下一篇介绍,希望小伙伴们能耐心等待,也希望有做这个东西的小伙伴关注,以后的文章会继续更新。